Invatare profunda
Construirea unui bot algoritmic, pe o platforma comerciala, pentru tranzactionare pe baza predictiei unui model
Am creat anterior un model pentru a prezice piata Forex:
Acum vrem sa folosim acest model pentru tranzactionare in cadrul unei platforme comerciale de tranzactionare si sa vedem daca va genera profit.
Tehnicile utilizate in aceasta poveste se concentreaza asupra modelului din povestea mea anterioara, dar pot fi modificate pentru a se potrivi cu un alt model. Intentia de aici este de a face modelul utilizabil de alte sisteme, de exemplu, o platforma de tranzactionare.
Puteti gasi codul sursa pentru aceasta poveste in directoarele „LSTM-FX-CTrader-Client” si „LSTM-FX-Prediction-Server” aici:
In povestea anterioara, am instruit si testat un model si am salvat modelul rezultat ca director si scalatorul folosit pentru date ca fisier.
Se afiseaza directorul modelului si fisierului scaler in Visual Studio Code
Modelul si scalatorul sunt singurele elemente de care avem nevoie, pe langa intelegerea parametrilor de intrare si de iesire. matrimoniale eforie nord
Tranzactionarea in aceasta poveste se refera la Tranzactionarea algoritmica, cunoscuta si sub numele de Tranzactionare cantitativa. Tranzactionarea Algo este atunci cand o strategie de tranzactionare exprimata in cod, evalueaza daca o tranzactie ar putea fi profitabila si executa automat aceasta tranzactie cu o interventie umana minima.
Strategia de tranzactionare automata este denumita un bot de tranzactionare. Astazi, exista o multime de platforme comerciale de tranzactionare in care puteti gazdui propriul bot, iata doua exemple:
cTrader : un manual si o platforma de tranzactionare algo. Accepta robotii scrise in C #. evenimentul zilei matrimoniale
Meta Trader 4 : O platforma populara pentru tranzactionarea manuala si ceva Forex. Robotii pot fi scrise utilizand un limbaj proprietar, similar cu C, numit MetaQuotes Language 4 (MQL4).
Voi folosi cTrader in aceasta poveste pentru a ne gazdui botul.
Cand vrem sa expunem un sistem software A pentru a fi utilizat de un alt sistem software B, folosim termenul „expunem o interfata de programare a aplicatiei (API) de la A”. Numim consumator, in cazul nostru platforma de tranzactionare, ca client si numim producator, in cazul nostru modelul ambalat, ca server . escorte buzau 2016
Discutie tehnica: vrem sa cream un server de predictie si sa expunem un API pentru a permite clientilor de tranzactionare terta parte sa-l consume.
Cea mai buna modalitate de a face modelul nostru consumabil de marea majoritate a platformelor de tranzactionare este de a utiliza protocolul REST si de a infasura modelul nostru intr-un API RESTful. In termeni mai putin tehnici, acest lucru face ca modelul nostru sa fie accesibil prin intermediul unei adrese URL unde treceti o adresa URL care contine intrarea si obtineti inapoi „text” care contine iesirea.
API-urile RESTful folosesc HTTP pentru a comunica prin retea intre sisteme, aceasta inseamna ca daca modelul nostru este in Python si gazduit pe Linux si trebuie consumat dintr-un sistem scris in C # si gazduit pe Windows, atunci este posibil atat timp cat cele doua limbi pot utiliza protocolul HTTP si orice limbaj de programare semi-decent accepta HTTP.
Imaginea autorului, toate numele produselor, siglele si marcile sunt proprietatea proprietarilor respectivi
Server
Pentru a expune modelul nostru prin intermediul API-ului RESTful, trebuie sa-l gazduim (sa il infasuram) cu un server web. dame de companie blog Intrucat folosim Python pentru model, un server web non-productie popular pentru Python este Flask.
Puteti utiliza Windows sau Linux, Flask functioneaza pe ambele, dar as recomanda utilizarea aceluiasi sistem de operare folosit pentru instruire, dar nu neaparat aceeasi instanta. Configurarea Flask de pe consola dvs.:
conda install flask
sau
pip install flask
Codul sursa complet de configurare a sistemului se afla pe pagina mea GitHub pentru configurarea serverului.
Ceea ce este interesant din codul sursa este urmatorul:
@ app. oradea online matrimoniale route (‘/ predict / <string: ticker> / <int: batch_size> / <int: window_size> / <int: ma_periods> / <float: abs_pips> / <int: pred_size> / <string: instance> / <string: series> ‘, methods = [‘ GET ‘]) def predict (ticker, batch_size, window_size, ma_periods, abs_pips, pred_size, instance, series):
Acest lucru permite Flask sa accepte o adresa URL ca aceasta:
http: // localhost: 5000 / predict / gbpusd / 32/256/14 / 0.0008 / 4/20200824000100 / 1.30936,1.309315,1.30932, . muie la curve .., 1.30912
Serverul ar putea gazdui mai multe modele, asa ca, pentru a le diferentia, le-am facut identificabile prin ticker, dimensiunea lotului, dimensiunea ferestrei si perioadele medii mobile, astfel incat un model ar putea fi numit: gbpusd-32-256-14.
ticker : denumirea oficiala a instrumentului, GBPUSD in cazul nostru. dame de companie ieftine constanta
batch_size si window_size : parametri solicitati de model.
ma_periods : perioade de netezire medii mobile simple.
abs_pips : limita cand predictia dvs. se va opri si rezultatele predictiei vor reveni. Deci, daca este 0. escorte din constanta 0008 si pretul dvs. curent pentru GBPUSD este 1.3000, atunci modelul nu va mai prezice daca ajunge la 1.3008 sau 1.2992. curve de buzau
prediction_size: cat de multe unitati inainte doriti sa preziceti si inainte de a lovi abs_pips. Luati exemplul anterior, daca dimensiunea dvs. de predictie este de 30 de unitati (minute in cazul nostru) si atingeti 1,2992 dupa 5 unitati, predictia nu va continua si va returna „Vinde”, dar daca sunt atinse 30 de unitati fara a atinge limitele, sistemul va returneaza „Fara actiune”.
exemplu : un intreg rezervat pentru utilizare viitoare. Pentru moment, furnizati orice numar intreg. curve la futut
Ultima sectiune, serie, a adresei URL este compusa dintr-un pret separat de virgule:
length = window_size + moving_average_periods = 256 + 14 = 270
Serverul dvs. web poate rula de pe consola:
python ./LSTM-FX-Prediction-Server/main.py
Pentru a testa daca configurarea serverului dvs. functioneaza, incercati exemplul URL din codul sursa. escorte craiova nimfomane
Client
Avem un server de predictie.
- curve sex din giurgiu
- oxygen saturation curve
- curve eftine de bucuresti
- escorte tim
- matrimoniale femei singure pentru casatorie
- dame de companie neptun
- olx matrimoniale femei
- curve eforie
- curve sexi
- anuntul telefonic matrimoniale
- 2 curve pe un scuter
- matrimoniale telefonic
- escorte noi brasov
- cannot extrude a self intersecting curve
- matrimoniale bt
- escorte non stop
- dame de companie bucurești
- matrimoniale publi 24 s6
- nimfomane escorte
- escorte mature craiova
Pentru a utiliza acest server de predictii, un client trebuie sa furnizeze o adresa URL in formatul anterior si apoi primeste o predictie.
Am folosit cTrader, un manual comercial si o platforma de tranzactionare algo, ca client. Codul sursa complet si configurarea sistemului se afla pe pagina mea GitHub pentru configurarea clientului. Limba utilizata pentru bot este C #. curve galati
Acesta este bitul in care codul nostru solicita o predictie de la serverul nostru:
Codul de mai sus pregateste o adresa URL facuta din intrarile de care are nevoie serverul nostru. Apoi il transmite serverului si primeste inapoi un „1”, „-1” si „0”, ceea ce inseamna, respectiv, Cumparati, Vindeti si nu stiu.
Codul de mai sus este executat la fiecare trecere de unitate, de unde si numele OnBar . In exemplul nostru, foloseste 1 minut ca unitate.
Am rulat acest bot in backtesting intre 24/08/2020 si 30/08/2020 cu capital de 1000 GBP, avand configurarea serverului client de mai sus si a obtinut un profit mic de 49 GBP. matrimoniale elmaz.ro
Backtesting intre 24/08/2020 si 30/08/2020. Capturat din cTrader
Cu toate acestea, am incercat alte perioade de testare inapoi si a castigat sau a pierdut cateva kilograme pe saptamana. Numesc acest rezultat promitator si cred ca se pot imbunatati imbunatatind modelul, dar nu as folosi acest model ml in productie cu bani reali in starea sa actuala.
Aceste povesti sunt menite ca cercetari privind capacitatile invatarii profunde si nu sunt menite sa ofere niciun sfat financiar sau comercial. Nu utilizati aceasta cercetare si / sau cod cu bani reali. escorte medias
REST vs gRPC
REST este cel mai mare numitor comun pentru platformele de tranzactionare si pentru sistemele moderne in general. Cu toate acestea, nu este cel mai rapid. Un tip API mai rapid si popular este gRPC si doar pentru a fi clar, mai rapid in acest sens inseamna o fractiune de secunda.
Meta Trader 4 nu accepta gRPC, fara hacking. cTrader foloseste . curve se fut in cur NET 4.0 clasic, care a aparut cu mult inainte de gRPC, deci este greu sa folosesti acest protocol cu aceasta versiune de .NET.
Cu toate acestea, daca fractiile unei a doua chestiuni, ia in considerare gRPC (sau poate un protocol mai rapid).
JSON
JSON este o structura de date care este adesea utilizata cu REST. escorte oradea forum Nu am folosit JSON intentionat pentru a respecta marea majoritate a clientilor.
Am reusit sa-mi reprezint intrarea si iesirea intr-un mod simplu, dar odata ce intrarea si iesirea modelului dvs. devin mai complexe, va recomandam sa luati in considerare JSON.
Multithreading
Avand modelul gazduit intr-un server web, este usor sa solicitati predictii multiple in acelasi timp, de exemplu, in intervalul de 0,2 secunde. Acesta ar putea fi acelasi client care solicita predictii multiple sau mai multi clienti care solicita predictii multiple in acelasi timp. escorte tg-jiu
Acest lucru ar putea duce la o eroare in timp de executie daca modelul dvs. nu accepta multithreading (spunem ca nu este sigur pentru fire). Cea mai sigura modalitate este de a accesa modelul dvs. o data la rand, ceea ce inseamna ca atunci cand nu este ocupat sa prezica, dar daca aveti nevoie de el pentru a prezice la un moment dat aleatoriu, probabil ca va trebui sa scrieti cod suplimentar pentru a face modelul dvs. sa fie sigur. publi24 matrimoniale Nu am testat acest lucru pentru siguranta firelor.
Predictii criptate
Daca va gazduiti serverul de la distanta, puteti lua in considerare setarea serverului dvs. web la HTTPS, adica instalarea unui certificat SSL, daca doriti sa aveti o conexiune sigura intre client si server. Acest lucru va insemna ca, daca cineva poate intercepta comunicarea dintre client si server, nu va putea descifra ceea ce se prezice.
Autorizare si autentificare
Daca va gazduiti serverul de la distanta, acesta este accesibil publicului. curve pe tocuri Cu toate acestea, este greu de stiut care sunt parametrii asteptati pentru a fi util. Nu doriti sa il lasati la voia intamplarii, protejati-l printr-un protocol de securitate API RESTful.
Exista mai multe protocoale de securitate, cel mai popular este OAuth2. Discutarea acestor protocoale nu intra in sfera acestei povesti.
Gazduirea modelului dvs. dame de companie in roman
Exista modalitati profesionale de a va gazdui modelul: Cloud. Puteti inchiria o masina virtuala de server cloud sau puteti alege o optiune fara server utilizand o platforma de gazduire ML, cum ar fi Azure ML.
Optiunea de server este mai putin costisitoare, dar va trebui sa gestionati singur sistemul de operare si sa petreceti timp in detaliile minunate, in timp ce optiunea fara server este mai scumpa, dar necesita mai putine costuri de intretinere.
Sper ca acest lucru a clarificat ideea unui proces end-to-end si a utiliza un sistem ML construit cu Python dintr-un alt sistem construit de un alt limbaj de programare si nu neaparat situat pe aceeasi retea.
Desi performanta modelului a fost mediocru, nu este inca optimizata si exista un spatiu urias pentru optiuni care pot fi luate in considerare pentru a-si imbunatati predictiile, am impartasit cateva dintre ele in articolul meu anterior.
Intentia mea a fost sa impartasesc un cadru de predictie ML functional, care sa fie utilizabil si extensibil. Sper ca acest cadru ar fi de folos cititorilor.
Istoricul meu este de 20 de ani in ingineria software cu specializare in finante. Lucrez ca arhitect de software in City of London, iar limbile mele preferate sunt C # si Python. Am o relatie de dragoste cu matematica practica si o aventura cu invatarea automata.








