Fare un sistema di trading Python per la MT. - pagina 4

 

Tutto è pronto ora, ed è il momento di collegare il nostro TS Python al terminale MT. Tuttavia, ci sono alcune azioni da fare per farlo.

Il nostro futuro TC legge e scrive file nella cartella C:\PyTS, ma il terminale MT, per qualche capriccio sconosciuto di MQ, può leggere-scrivere file solo nella propria directory - C:\<molte lettere e numeri>\Files, e in nessun altro modo. Naturalmente, è possibile cambiare le impostazioni nel codice Python, e lasciare che si scambi nella cartella nativa MQ, ma ho bisogno che il terminale legga-scriva i file da lì e dove voglio io, non dove vuole lui, il terminale. Tanto più che sarà necessario in futuro.

In realtà, questa domanda è stata risolta un paio di anni fa, nel mio topic - https://www.mql5.com/ru/forum/79922.

Tutto si risolve con gli strumenti di Windows. Nella cartella del terminale C:\<un sacco di lettere e numeri> \Files si mette il riferimento alla cartella C:\PyTS, che viene interpretata dal terminale (e anche dal sistema operativo) come sottocartella Files\PyTS e il terminale scrive lì, in C:\PyTS, come nella sua nativa).

Questo viene fatto dalla linea di comando, usando l'utilità nativa MKLINK di Windows. Per coloro che non possono farlo da soli, ecco una descrizione dettagliata:

Digitare in execute - cmd, o dal menu - Utilities-Windows -> Command Prompt. Si ottiene una finestra dove si digita MKLINK o mklink. Qui abbiamo:


Ora scrivi cd... più volte fino ad arrivare a C:\.

Poi apri Windows Explorer, e vai a C:\<un sacco di lettere e numeri> \Files, dove il terminale mette i file, e seleziona e copia il percorso Ctrl-Ins.

Tornate alla finestra del prompt dei comandi e lì scrivete cd <spazio>, usate Shift-Ins per incollare il percorso di ... \Files, e Invio. Abbiamo capito:

Ora nella linea di comando scriviamo - mklink /D PyTS c:\PyTS , e come al solito - Invio. Qui lo prendiamo:

Vediamo che è stato creato un collegamento. Vediamo che è apparso nella cartella ......\Files e vi accediamo - vediamo i file nella cartella C:\PyTS. )) Questo è tutto.

Ora, tutti i file scritti dal terminale nella cartella ...Files\PyTS saranno, infatti, scritti nella cartella C:\PyTS.

.

RAM Диск.
RAM Диск.
  • 2016.04.07
  • www.mql5.com
Общее обсуждение: RAM Диск.
 
Quindi, abbiamo finito con la condivisione dei file. Tutto funziona, tutte le fonti sono nell'allegato. Tutto il resto, e il trasferimento inverso da Python a MT, è fatto allo stesso modo, e spero che non causerà alcun problema. Per eseguire, leggere ed eseguire il mio post precedente. Non c'è altro modo).

Il codice MQL è anche nell'allegato. - MQL legge la storia e la passa all'applicazione Python. Python lo accetta e lo stampa. In Python non dimenticare di premere il pulsante Start. )

Spero che non ci sia bisogno di scrivere commenti sul codice MQL - c'è un riferimento). Sì, il trasferimento dei dati da MT è fatto su timer, è più conveniente per me, in questa fase.

Se avete domande, non esitate a chiamare).

Mi fermerò per ora - ora abbiamo bisogno di risolvere le questioni con la strategia. Se avete dei suggerimenti - li prenderemo in considerazione).

Ancora una volta, la condivisione dei file è ideale per lo sviluppo e il debugging delle strategie, poiché non richiede alcuno sforzo di modifica. Per la maggior parte delle strategie del mondo reale, è ancora adatto. Ma, se necessario, possiamo sempre sostituirlo con qualcos'altro, senza cambiamenti significativi al programma - una questione di 1-2 giorni.

File:
PyTS.zip  4 kb
PyTSMT.mq5  7 kb
 

Non prometto di scrivere spesso, solo quando mi capita. Il progetto viene fatto in background, con poco o nessun tempo a disposizione.

Ho pensato che sarebbe bene che il sistema visualizzasse dei grafici

In generale, Python è un linguaggio semplice - un paio di giorni per studiarlo sono sufficienti. Ma avere a che fare con i moduli è molto più difficile - ce ne sono migliaia, e chi fa cosa e perché non è sempre ovvio. Con la grafica, è quello che è successo - ho dovuto risolverlo per molto tempo. Ma il risultato è il seguente:

Il programma legge un file CSV e disegna un grafico.

Il grafico mostra i prezzi per Close, circa 50 mila candele.

Se cliccate sulla lente d'ingrandimento e selezionate un rettangolo nell'area del grafico come questo:

potete ingrandire il grafico e lo otterrete:

Questo può essere fatto ripetutamente. Il grafico può anche essere spostato e salvato come immagine, e naturalmente espanso a schermo intero.

Tutti i file di cui avete bisogno sono nell'applicazione. Decomprimere lo zip in una cartella ed eseguire CSVGraph.py

Prima di eseguirlo, non dimenticate di controllare se i moduli che volete importare sono installati.

File:
CSVGraph.zip  582 kb
 
Come esercizio di Python, forse. Ma da un punto di vista pratico, è poco utile + una perdita di tempo. Naturalmente, ognuno ha il suo modo. Buona fortuna
 

Lasciamo le sciocchezze ai vicini e alla cassa di risonanza amatoriale, ma riassumiamo noi stessi i risultati preliminari.

Se hai già familiarità con l'argomento Se sei un professionista, conosci già un po' di Python, sai come lavorare con i file CSV, sai come costruire grafici e scambiare dati con il terminale. Questo è già abbastanza per sviluppare, simulare e testare strategie di trading. Se la vostra strategia lavora con TF 1 min e più senza usare tick e accede al terminale con intervalli di 5-10 sec, potete già creare strategie funzionanti direttamente in Phyton, lasciando solo la consegna dei dati e "l'esecuzione" dei vostri ordini al terminale.

Inoltre, conosci già la programmazione e l'ambiente Phyton, a un livello superiore al linguaggio e all'ambiente R, così popolare tra gli apologeti locali dell'apprendimento automatico. Sarete già in grado di costruire strategie di indicatori anche molto complessi in Python, ma tutte le caratteristiche di Python (in modo simile a R) possono essere implementate utilizzando moduli. In questo argomento abbiamo usato solo 3 moduli - tkinter, numpy e matplotlib.

Ora, ciò di cui Python ha bisogno per costruire strategie più avanzate, ad esempio utilizzando l'apprendimento automatico. Il modulo -scikit-learn può essere usato per questo. Con l'uso discikit-learn sono disponibili le seguenti caratteristiche - Guida all'uso. Ti piace l'insieme dei metodi? - Ha già praticamente tutto, incluso, non sconosciuto da R e dall'argomento Machine Learning, dalla classificazione bayesiana alle foreste casuali e alle reti neurali.

Questo è solo uno dei moduli di apprendimento automatico in Python, e ce ne sono circa una dozzina. Si dice che il moduloscikit-learn non sia il migliore, né il più avanzato. Dipende da chi ha bisogno di cosa. Gli altri non sono difficili da trovare su internet.


PS Per coloro che stanno iniziando o hanno appena iniziato con Python.

Ho provato diversi ambienti di sviluppo Python e mi sono fermato al più conveniente per i principianti (che includono me stesso) - Anaconda. Ciò che lo rende conveniente è che tutto ciò di cui ho bisogno è già installato, incluso Python. Editor io uso Spyder - installato conAnaconda. Ti consiglio anche di installare l'editor VSCode - anch'esso molto bello e installato direttamente daAnaconda.

Potresti non essere contento della mia scelta.

 
Dopo 4 pagine di argomento, siamo finalmente pronti a passare a ciò che è stato detto - strategie in Python. Tutto è già fatto per questo.
Inizieremo con una strategia semplice - il trading sull'incrocio dell'EMA, possibilmente con delle modifiche.
Quando ho padroneggiato le reti neurali (NS), ho iniziato con un compito semplice - la NS dovrebbe identificare i punti di crossover EMA. Il compito, da un punto di vista pratico, è assolutamente inutile, ma ci ha permesso di determinare come alimentare la NS con dati di mercato, come prepararli e risolvere molti problemi di formazione.
Ora il nostro compito non è affatto quello di fare profitto e nemmeno di comunicare con il terminale - è semplice, ma senza una strategia redditizia non ha senso. Il nostro compito ora è quello di creare un modello di strategia, e imparare a testarlo, e qualsiasi strategia andrà bene. Poi mettete qualsiasi strategia nel modello e testatela, e se funziona, allora possiamo iniziare a fare trading tramite il terminale.

Gli indicatori richiesti sono tutti pronti. Vedere la figura fatta in Python (In Python è molto comodo e veloce disegnare tutti i tipi di grafici). Questa è la risposta a un singolo salto - 1(t), o la funzione di transizione. In realtà, uno dei test standard.


La fm è la media mobile convenzionale (che serve solo per la calibrazione), f1 è l'EMA, con un calcolo del coefficiente modificato, e f2 è un indicatore non standard.

Tuttavia, come diceva un nostro conoscente comune:

Igor Makanu:

L'ho detto un milione di volte, e probabilmente lo dirò ancora... Nessuno ha inventato niente di meglio degli indicatori della fornitura MT (standard... per dire vecchi indicatori slavi... pagani!!!).

Quindi, per non ingannare la tua testa con la scienza, otterrai le fonti standard di EMA e strategia. Tuttavia, realizzerò e testerò la strategia sui miei indicatori. Forse, nasconderò qualcos'altro da occhi indiscreti, ma senza perdita di funzionalità.

Ma non è per la traversata dell'EMA che si tratta. L'obiettivo di tutto questo sono le strategie di apprendimento automatico. Finora sto testando diversi metodi di classificazione. Ed ecco i risultati dei test:

Gaussiana, RBF SVM, Reti Neurali e classificazione bayesiana ingenua sono al top finora. Il programma Python è già pronto, disponibile da qualche parte su internet, ma la preparazione dei dati spetta all'utente.

Andiamo.

 
Yuriy Asaulenko:
Dopo 4 pagine di argomento, siamo finalmente pronti a passare a ciò che è stato detto - strategie in Python. Tutto è già fatto per questo.
Inizieremo con una strategia semplice - il trading sull'incrocio dell'EMA, possibilmente con delle modifiche.
Quando ho padroneggiato le reti neurali (NS), ho iniziato con un compito semplice - la NS dovrebbe identificare i punti di crossover EMA. Il compito, da un punto di vista pratico, è assolutamente inutile, ma ci ha permesso di determinare come alimentare la NS con dati di mercato, come prepararli e risolvere molti problemi di formazione.
Ora il nostro compito non è affatto quello di fare profitto e nemmeno di comunicare con il terminale - è semplice, ma senza una strategia redditizia non ha senso. Il nostro compito ora è quello di creare un modello di strategia, e imparare a testarlo, e qualsiasi strategia andrà bene. Poi mettete qualsiasi strategia nel modello e testatela, e se funziona, allora possiamo iniziare a fare trading tramite il terminale.

Gli indicatori richiesti sono tutti pronti. Vedere la figura fatta in Python (In Python è molto comodo e veloce disegnare tutti i tipi di grafici). Questa è la risposta a un singolo salto - 1(t), o funzione transitoria. In realtà, uno dei test standard.


La fm è la media mobile convenzionale (che serve solo per la calibrazione), f1 è l'EMA, con un calcolo del coefficiente modificato, e f2 è un indicatore non standard.

Tuttavia, come diceva un nostro conoscente comune:

Quindi, per evitare di ingannare la tua testa con la scienza, otterrai l'EMA standard e le fonti della strategia. Tuttavia, realizzerò e testerò la strategia sui miei indicatori. Forse, nasconderò qualcos'altro da occhi indiscreti, ma senza perdita di funzionalità.

Ma non è per la traversata dell'EMA che si tratta. L'obiettivo di tutto questo sono le strategie di apprendimento automatico. Finora sto testando diversi metodi di classificazione. Ed ecco i risultati del test:

Gaussiana, RBF SVM, Reti Neurali e classificazione bayesiana ingenua sono al top finora. Il programma Python è già pronto, disponibile da qualche parte su internet, ma la preparazione dei dati spetta all'utente.

Andiamo.


È un peccato che siano passati alle reti neurali. Ma soprattutto molto utile, penso che tornerà utile.

Forum sul trading, sistemi di trading automatico e test di strategia

Robot ad apprendimento automatico

Yuriy Asaulenko, 2018.09.21 00:45

Non lo faranno. Il massimo che faranno è lo stesso di prima.


 
Sergey Chalyshev:


È un peccato che siano passati alle reti neurali. Ma soprattutto molto utile, penso che tornerà utile.

Non ci sono piani per passare a NS e altri metodi MoD in questo thread. Per ora, almeno). Vedremo.

Quello che viene fatto qui è un modello di sistema in Python. Il riempimento specifico di questo modello è una questione di utente specifico.

Beh, mostrare le capacità delle librerie Python, penso, non è superfluo.

 
PS Sì, non ho detto che farò tutte le strategie per FORTS (MOEX). Non gioco con i forex OC.
 
Continuiamo con i nostri giochi. A partire da oggi, siamo pronti e funzionanti:
2. Modello di strategia.
3. Una semplice strategia di incrocio EMA è inserita nel modello.

Quando il programma viene avviato, la strategia viene testata, il rapporto di tutte le compravendite viene salvato in un file CSV, il grafico dei profitti viene visualizzato sulla console, che può essere salvato sul disco - vedi Fig.


Il test è stato fatto usando SBER MOEX futures, intervallo 3M, timeframe 1M, totale di ~55000 candele. Nella strategia sono stati usati solo i candelieri vicini. La durata del test è di ~1 min, a partire dall'inizio del programma. Si tratta di circa 1ms per candela.
Una cartella con tutti i file di programma necessari, compresa la storia per i futures SBER è allegata.
Per eseguire il programma - eseguire il file main.py. Prima di eseguire, assicurati che il tuo Python abbia tutti i pacchetti e i moduli necessari installati. Se state eseguendo in Anaconda, tutti i pacchetti-moduli richiesti sono già installati.
Fondamentalmente, scrivete la vostra strategia nel modello e testatela.
Ora, come immagino l'applicazione di questa tecnologia.
Si è deciso di tradurre su piattaforma Python collaudata strategia che utilizza reti neurali, forse con un piccolo aggiornamento. Con questo sarà possibile con spese minime padroneggiare l'applicazione delle tecnologie di ML disponibili in Python, collegare il sistema al terminale e iniziare il funzionamento diretto. Per me la piattaforma di trading principale è MOEX, e Forex è ausiliario, quindi nel prossimo futuro il collegamento del sistema al terminale MT non è previsto, anche se è stato ipotizzato all'inizio dell'argomento come opzione di test.
Tuttavia, ci sono abbastanza esperti sul forum che, se vogliono, possono farlo. Inoltre, C API Python è molto più facile di C API dello stesso R, che gli specialisti locali hanno affrontato con successo.
Possiamo considerare che gli obiettivi del tema sono completamente soddisfatti.
File:
Public.zip  683 kb