esempio più complesso - Expert Advisor con trading su due medie mobili senza usare la storia:
import MetaTrader5 as mt5
import time
mt5.initialize()
mt5.wait()
info = mt5.terminal_info()
if info.trade_allowed == False:
print("Auto-trading disabled in Terminal, enable it")
quit()
symbol = "EURUSD"# currency
lot = 0.01; # buy lot
interval = 5# price requesting interval in sec
long_len = 11# long moving average length
short_len = 7# short moving average length
long_ma = [] # long ma list
short_ma = [] # short ma list
ticket = 0# ticket for sell
mt5.symbol_select(symbol)
# wait some time
time.sleep(1)
print("\nPreparing...")
for i in range(long_len):
p = mt5.symbol_info_tick(symbol)
print(p.bid,'/',p.ask)
avg = (p.ask + p.bid) / 2
long_ma.append(avg)
if i >= long_len - short_len:
short_ma.append(avg)
time.sleep(interval)
print("\nWorking...")
while True:
p = mt5.symbol_info_tick(symbol)
print(p.bid,'/',p.ask)
avg = (p.ask + p.bid) / 2# short values
prev_short = sum(short_ma) / short_len
short_ma.pop(0)
short_ma.append(avg)
short = sum(short_ma) / short_len
# long values
prev_long = sum(long_ma) / long_len
long_ma.pop(0)
long_ma.append(avg)
long = sum(long_ma) / long_len
# buy signal
if prev_short < prev_long and short > long:
print("BUY: ([-1]:",prev_short,"/",prev_long,", [0]:",short,"/",long,")")
r = mt5.Buy(symbol, lot)
if r.retcode != mt5.TRADE_RETCODE_DONE:
print("Buy failed: ", r)
else:
ticket = r.order
elif prev_short > prev_long and short < long and ticket>0:
print("CLOSE: ([-1]:",prev_short,"/",prev_long,", [0]:",short,"/",long,")")
r = mt5.Sell(symbol, lot, ticket=ticket)
if r.retcode != mt5.TRADE_RETCODE_DONE:
print("Sell failed: ", r)
else:
ticket = 0
time.sleep(interval)
mt5.shutdown()
Nel server di prova (MetaQuotes-Beta server, indirizzo 78.140.180.203:443) è disponibile una versione beta del terminale 2323 con nuove caratteristiche. La beta pubblica sarà rilasciata domani.
Abbiamo anche rilasciato la nuova versione di MetaTrader 5.0.20 per Python (pip install --upgrade metatrader5) con una nuova sintassi per il cambio di conto:
Ora è possibile specificare l'autorizzazione direttamente nell'inizializzazione, sia nella forma completa che in quella breve.
La funzione di attesa è abolita e ora l'intero ciclo di inizializzazione con attesa viene eseguito direttamente in initialize, dove è possibile specificare il tempo di attesa in millisecondi.
La libreria Python è ora garantita per trovare l'ultima copia attiva del terminale anche se è stato installato in modalità portatile (chiave /portable).
I programmi Python sono già mostrati direttamente nel navigatore:
Il rilascio di questo venerdì permetterà di eseguirli come normali script MQL5 e saranno legati ai grafici.
Più tardi aggiungeremo l'accesso a tutti gli indicatori (compresi quelli personalizzati) in modalità di lettura alla libreria Python. Questo renderà il lavoro in python più produttivo. Ma questo non è ancora una priorità, lo faremo molto più tardi.
In parallelo, stiamo espandendo le capacità dell'editor e nella prossima release (che non arriverà questo venerdì) sarà completamente possibile usare Clang/LLVM e Microsoft Visual Studio per compilare programmi C++:
In parallelo, stiamo espandendo le capacità dell'editor e nella prossima release (che non arriverà questo venerdì) sarà pienamente capace di usare Clang/LLVM e Microsoft Visual Studio per compilare programmi C++:
Sarà aggiunto un linker per collegare i file .lib nei progetti ?
Di per sé, qualsiasi linguaggio è inutile senza una piattaforma informativa e di trading (una piattaforma non è un terminale, ma un intero complesso di server con un'infrastruttura e un ecosistema) che lo alimenta con i dati e fornisce l'esecuzione degli scambi.
Il nostro obiettivo è quello di presentare una piattaforma senza soluzione di continuità con un ampio set di strumenti per l'algotrading, coprendo diversi segmenti di consumatori.
Python è un chiaro vincitore in ML e un linguaggio molto efficace per fare ricerca. Anche se non è possibile metterlo in un tester, è anche buono in modalità di integrazione diretta.
A proposito, a differenza di altre librerie Python (spesso scritte di testa e scarsamente ottimizzate), abbiamo fortemente ottimizzato il payoff dei dati grafici massicci. Questo significa che si può ottenere la storia profonda in modo efficiente nella memoria e rapidamente.
Sono cambiate anche le costanti?
In uscita:
sì le costanti hanno il prefisso MT5_ rimosso, ecco un esempio di utilizzo:
esempio più complesso - Expert Advisor con trading su due medie mobili senza usare la storia:
Sì, il prefisso MT5_ è stato rimosso dalle costanti, ecco un esempio di come usarlo:
Un esempio più complesso è un Expert Advisor con trading su due medie mobili senza usare la storia:
Grazie.
L'evoluzione della biblioteca è buona. Domanda agli sviluppatori - dov'è la roadmap per la lib pinova?
Quali innovazioni possiamo ancora aspettarci, cosa non aspettarci?
Nel server di prova (MetaQuotes-Beta server, indirizzo 78.140.180.203:443) è disponibile una versione beta del terminale 2323 con nuove caratteristiche. La beta pubblica sarà rilasciata domani.
Abbiamo anche rilasciato la nuova versione di MetaTrader 5.0.20 per Python (pip install --upgrade metatrader5) con una nuova sintassi per il cambio di conto:
Ora è possibile specificare l'autorizzazione direttamente nell'inizializzazione, sia nella forma completa che in quella breve.
La funzione di attesa è abolita e ora l'intero ciclo di inizializzazione con attesa viene eseguito direttamente in initialize, dove è possibile specificare il tempo di attesa in millisecondi.
La libreria Python è ora garantita per trovare l'ultima copia attiva del terminale anche se è stato installato in modalità portatile (chiave /portable).
I programmi Python sono già mostrati direttamente nel navigatore:
Il rilascio di questo venerdì permetterà di eseguirli come normali script MQL5 e saranno legati ai grafici.
Più tardi aggiungeremo l'accesso a tutti gli indicatori (compresi quelli personalizzati) in modalità di lettura alla libreria Python. Questo renderà il lavoro in python più produttivo. Ma questo non è ancora una priorità, lo faremo molto più tardi.
Rilasciata anche una nuova versione di MetaTrader 5.0.20 per Python (pip install --upgrade metatrader5) con nuova sintassi per il cambio di account
Ci sono più caratteristiche di MQL5.
In parallelo, stiamo espandendo le capacità dell'editor e nella prossima release (che non arriverà questo venerdì) sarà completamente possibile usare Clang/LLVM e Microsoft Visual Studio per compilare programmi C++:
Forse includeremo anche C#.
Ampio lavoro per utilizzare completamente i database SQLite: SQLite: lavoro nativo con i database SQL in MQL5
Questo permette di operare e scambiare facilmente grandi quantità di dati tra diversi sistemi e all'interno del terminale.
Più caratteristiche di MQL5.
Ci stiamo arrivando?
In parallelo, stiamo espandendo le capacità dell'editor e nella prossima release (che non arriverà questo venerdì)
sarà pienamente capace di usare Clang/LLVM e Microsoft Visual Studio per compilare programmi C++:
Sarà aggiunto un linker per collegare i file .lib nei progetti
?
Per collegare i file .lib nei progetti
sarà aggiunto un linker?
Si possono specificare più varianti di destinazione all'interno dei progetti:
I file DLL/EXE hanno definizioni personalizzate, librerie e parametri aggiuntivi per il compilatore:
Il linker viene usato automaticamente da Clang o Visual Studio. Non è necessario specificarlo esplicitamente.
Ci sono più caratteristiche di MQL5.
Di conseguenza, la piattaforma MetaTrader 5 ha più caratteristiche.
Di per sé, qualsiasi linguaggio è inutile senza una piattaforma informativa e di trading (una piattaforma non è un terminale, ma un intero complesso di server con un'infrastruttura e un ecosistema) che lo alimenta con i dati e fornisce l'esecuzione degli scambi.
Il nostro obiettivo è quello di presentare una piattaforma senza soluzione di continuità con un ampio set di strumenti per l'algotrading, coprendo diversi segmenti di consumatori.
Python è un chiaro vincitore in ML e un linguaggio molto efficace per fare ricerca. Anche se non è possibile metterlo in un tester, è anche buono in modalità di integrazione diretta.
A proposito, a differenza di altre librerie Python (spesso scritte di testa e scarsamente ottimizzate), abbiamo fortemente ottimizzato il payoff dei dati grafici massicci. Questo significa che si può ottenere la storia profonda in modo efficiente nella memoria e rapidamente.