exemplo mais complexo - Expert Advisor com negociação em duas médias móveis sem utilização de histórico:
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()
No servidor de teste (MetaQuotes-Beta server, endereço 78.140.180.203:443) está disponível uma versão beta do terminal 2323 com novas funcionalidades. O beta público será lançado amanhã.
Lançámos também a nova versão do MetaTrader 5.0.20 para Python (pip install --upgrade metatrader5) com nova sintaxe para mudança de conta:
É agora possível especificar a autorização directamente na inicialização, tanto na sua forma completa como curta.
A função de espera é abolida e agora o ciclo completo de inicialização com espera é executado directamente na inicialização, onde se pode especificar o tempo de espera em milissegundos.
A biblioteca Python já tem a garantia de encontrar a última cópia activa do terminal, mesmo que tenha sido instalada em modo portátil (/ chave portátil).
Os programas Python já são mostrados directamente no navegador:
O lançamento desta sexta-feira permitirá a sua execução, como é habitual, de scripts MQL5 e eles serão vinculados a gráficos.
Mais tarde acrescentaremos acesso a todos os indicadores (incluindo os personalizados) em modo de leitura à biblioteca Python. Isto tornará o trabalho em python mais produtivo. Mas isto ainda não é uma prioridade, fá-lo-emos muito mais tarde.
Em paralelo, estamos a expandir as capacidades do editor e no próximo lançamento (que não se realizará esta sexta-feira) será totalmente possível utilizar Clang/LLVM e Microsoft Visual Studio para compilar programas C++:
Em paralelo, estamos a expandir as capacidades do editor e no próximo lançamento (que não será na sexta-feira) será totalmente capaz de utilizar Clang/LLVM e Microsoft Visual Studio para compilar programas C++:
Será adicionado um linker para ligar ficheiros .lib em projectos ?
Por si só, qualquer linguagem é inútil sem uma plataforma de informação e comércio (uma plataforma não é um terminal, mas todo um complexo de servidores com uma infra-estrutura e um ecossistema) que a alimenta com dados e fornece a execução do comércio.
O nosso objectivo é apresentar uma plataforma sem falhas com um vasto conjunto de ferramentas para algotrading, cobrindo diferentes segmentos de consumidores.
Python é um claro vencedor no ML e uma linguagem muito eficaz para fazer investigação. Mesmo que não se consiga entrar num testador, também é bom no modo de integração directa.
A propósito, ao contrário de outras bibliotecas Python (muitas vezes escritas de frente e mal optimizadas), optimizámos fortemente o pagamento de grandes quantidades de dados cartográficos. Isto significa que se pode obter uma história profunda de forma eficiente e rápida na memória.
Será que as constantes também mudaram?
Na saída:
sim, as constantes têm o prefixo MT5_ removido, aqui está um exemplo de utilização:
exemplo mais complexo - Expert Advisor com negociação em duas médias móveis sem utilização de histórico:
Sim, as constantes têm o prefixo MT5_ removido, aqui está um exemplo de utilização:
Um exemplo mais complexo é uma EA com negociação em duas médias móveis sem utilização de histórico:
Obrigado.
A evolução da liberdade é boa. Pergunta aos promotores - onde está o roteiro para a pinova lib?
Que inovações podemos ainda esperar, o que não esperar?
No servidor de teste (MetaQuotes-Beta server, endereço 78.140.180.203:443) está disponível uma versão beta do terminal 2323 com novas funcionalidades. O beta público será lançado amanhã.
Lançámos também a nova versão do MetaTrader 5.0.20 para Python (pip install --upgrade metatrader5) com nova sintaxe para mudança de conta:
É agora possível especificar a autorização directamente na inicialização, tanto na sua forma completa como curta.
A função de espera é abolida e agora o ciclo completo de inicialização com espera é executado directamente na inicialização, onde se pode especificar o tempo de espera em milissegundos.
A biblioteca Python já tem a garantia de encontrar a última cópia activa do terminal, mesmo que tenha sido instalada em modo portátil (/ chave portátil).
Os programas Python já são mostrados directamente no navegador:
O lançamento desta sexta-feira permitirá a sua execução, como é habitual, de scripts MQL5 e eles serão vinculados a gráficos.
Mais tarde acrescentaremos acesso a todos os indicadores (incluindo os personalizados) em modo de leitura à biblioteca Python. Isto tornará o trabalho em python mais produtivo. Mas isto ainda não é uma prioridade, fá-lo-emos muito mais tarde.
Lançada também uma nova versão do MetaTrader 5.0.20 para Python (pip install --upgrade metatrader5) com nova sintaxe para mudança de conta
Existem mais características do que a MQL5.
Em paralelo, estamos a expandir as capacidades do editor e no próximo lançamento (que não se realizará esta sexta-feira) será totalmente possível utilizar Clang/LLVM e Microsoft Visual Studio para compilar programas C++:
Talvez incluamos também C#.
Trabalho extensivo para utilizar totalmente as bases de dados SQLite: SQLite: trabalho nativo com bases de dados SQL em MQL5
Isto permite-lhe operar e trocar facilmente grandes quantidades de dados entre diferentes sistemas e dentro do terminal.
Mais características do que a MQL5.
Estamos a chegar lá?
Em paralelo, estamos a expandir as capacidades do editor e no próximo lançamento (que não será na sexta-feira)
será totalmente capaz de utilizar Clang/LLVM e Microsoft Visual Studio para compilar programas C++:
Será adicionado um linker para ligar ficheiros .lib em projectos
?
Para ligação de ficheiros .lib em projectos
será acrescentado um linker?
Podem ser especificadas múltiplas variantes alvo dentro dos projectos:
Os ficheiros DLL/EXE têm definições personalizadas, bibliotecas e parâmetros adicionais para o compilador:
O linker é automaticamente utilizado a partir de Clang ou Visual Studio. Não precisa de ser explicitamente especificado.
Existem mais características do que a MQL5.
É como resultado que a plataforma MetaTrader 5 tem mais características.
Por si só, qualquer linguagem é inútil sem uma plataforma de informação e comércio (uma plataforma não é um terminal, mas todo um complexo de servidores com uma infra-estrutura e um ecossistema) que a alimenta com dados e fornece a execução do comércio.
O nosso objectivo é apresentar uma plataforma sem falhas com um vasto conjunto de ferramentas para algotrading, cobrindo diferentes segmentos de consumidores.
Python é um claro vencedor no ML e uma linguagem muito eficaz para fazer investigação. Mesmo que não se consiga entrar num testador, também é bom no modo de integração directa.
A propósito, ao contrário de outras bibliotecas Python (muitas vezes escritas de frente e mal optimizadas), optimizámos fortemente o pagamento de grandes quantidades de dados cartográficos. Isto significa que se pode obter uma história profunda de forma eficiente e rápida na memória.