Discussão do artigo "Como copiar a negociação do MetaTrader 5 para o MetaTrader 4"

 

Novo artigo Como copiar a negociação do MetaTrader 5 para o MetaTrader 4 foi publicado:

É possível negociar em uma conta real do MetaTrader 5 hoje? Como organizar tal negociação? O artigo contém a teoria destas questões e os códigos de trabalho utilizados para copiar negociações do terminal MetaTrader 5 para o MetaTrader 4. O artigo será útil tanto para desenvolvedores de Expert Advisors quanto para negociantes praticantes.

Autor: Nikolay Demko

[Excluído]  

Talvez o tópico mais interessante de hoje.

Pelo menos para mim, pessoalmente, o artigo mais interessante de todos.

 

Concordo, o tópico é relevante no momento. Ele permite não esperar que os CDs mudem.

 

Artigo útil e relevante, graças ao autor!


Uma coisa confusa:

Чтобы не пропустить момент изменения позиции, следящая система должна быть реализована в функции OnTimer(), т.к. следить придется за всеми инструментами сразу, а тики приходят на разных символах в разное время. Также требуется передать сигнал об изменении содержимого файла.

Por que não OnTrade()?

[Excluído]  
komposter:

Por que não OnTrade()?

Concordo que o processamento normal de OnTrade() é necessário, assim como um Tamer avançado. Sua ausência é um bug em qualquer EA, especialmente em um multi...

E o autor recusou as bibliotecas por nada, você pode fazer muito mais com elas (não estou falando de software especializado).

Embora esteja certo, temos mais espaço para a imaginação :)

PS

Eu também gostaria de ver exemplos de diferentes momentos, não apenas de média e pirâmide (vi apenas esses, talvez não esteja atento).

Procedi a partir disso:

1.2 Volumes de posições de negociação

Vamos dar uma olhada em detalhes: faz diferença qual ordem fechar? Isso não afetará o lucro? Por exemplo, temos duas ordens abertas em momentos diferentes e fechadas em momentos diferentes, mas elas têm sobreposições no tempo de vida. Ou seja, vamos tentar emular uma posição de negociação no sistema de contabilidade de ordens.

Vamos calcular, por meio de variantes, o que acontecerá com o lucro se alterarmos os níveis de fechamento das ordens nos locais:

tipo
volume
nível de abertura
nível de fechamento
vender0.11.393881.38438
vender0.11.38868
1.38149
[Excluído]  

Gostaria de acrescentar algumas palavras sobre DLL e software adicional.

No momento, estou considerando uma variante que permite a transmissão de sinais e a troca de informações com a ajuda da DLL (com a possibilidade obrigatória de trabalhar com arquivos ini).

E a tarefa máxima que vejo (meu sonho de longa data) é desenvolver um servidor, cuja principal tarefa será coletar e processar informações de diferentes plataformas (seria bom também de vários clientes).

 
Interesting:

Concordo, a falta de um cronômetro é um bug em qualquer moult....

E é um erro o autor desistir das bibliotecas, pois é possível fazer muito mais com elas (não estou falando de software especializado).

Embora esteja certo, temos mais espaço para a imaginação :)

PS

Eu também gostaria de ver exemplos de diferentes momentos, não apenas de média e pirâmide (vi apenas esses, talvez não esteja atento).

Eu procedi a partir disso:

1.2 Volumes de posições de negociação

Vamos dar uma olhada em detalhes: faz diferença qual ordem fechar? Isso não afetará o lucro? Por exemplo, temos duas ordens abertas em momentos diferentes e fechadas em momentos diferentes, mas elas têm sobreposições no tempo de vida. Ou seja, vamos tentar emular uma posição de negociação no sistema de contabilidade de ordens.

Vamos calcular, por meio de variantes, o que acontecerá com o lucro se alterarmos os níveis de fechamento das ordens nos locais:

tipo
volume
nível de abertura
nível de fechamento
vender0.11.393881.38438
vender0.11.38868
1.38149

O objetivo desse exemplo é mostrar que o lucro depende do dinheiro colocado na previsão, em casos mais complexos será o mesmo (só não queria carregar o artigo com um grande número de exemplos provando a mesma coisa).

Com relação às bibliotecas, não sou contra as bibliotecas ex5, mas não quero usar dlls porque isso desestimula o usuário final.

E, de fato, quem quer receber um trojan junto com a compra? A MQ tenta se ater à segurança em sua política.

Portanto, estou apenas aderindo à imagem deles, já que nenhuma dll significa que o código é seguro.

 
komposter:

Artigo útil e relevante, graças ao autor!


Uma coisa confusa:

Por que não OnTrade()?

Ideia interessante, tudo o que for para o servidor será definitivamente exibido em OnTrade(). Mas é necessário apenas filtrar, transferir para o arquivo não as solicitações, mas já as respostas do servidor sobre a ordem executada.

Eu simplesmente não pensei nessa direção.

[Excluído]  
Urain:

A essência desse exemplo é mostrar que o lucro depende do dinheiro investido na previsão; em casos mais complexos, será o mesmo (apenas não quis carregar o artigo com um grande número de exemplos que provam a mesma coisa).


Será o mesmo somente se você adaptar os processos de negociação do MT4 ao MT5; caso contrário, em determinadas situações, poderá haver diferenças (e bastante significativas).

Haverá apenas dois exemplos: "flipping" e "trimming" (se forem escritos de forma compacta, não ocuparão muito espaço).

E tenho certeza de que são as inversões e os truncamentos os aspectos mais "complicados" e complicados de tais sistemas.

Urain:

Com relação às bibliotecas, não sou contra as bibliotecas ex5, mas não quero usar dlls porque isso desestimula o usuário final.

E, de fato, quem quer receber um trojan junto com a compra? A MQ tenta se ater à segurança em sua política.

Portanto, estou apenas acrescentando à imagem deles que, desde que não haja dll, o código é seguro.

Quanto às bibliotecas ex5, eu concordo (pode ser uma boa solução criar uma biblioteca de classes especializada), mas há um grande "porém": a funcionalidade das soluções baseadas apenas em MQL5 é nitidamente inferior a todas as possibilidades que a DLL fornecerá.

E o problema com a DLL é mais fácil de resolver do que parece para muitas pessoas, há duas opções:

1. Publicar o código-fonte da biblioteca;

2. Fornecer o código-fonte à MQ para que eles o verifiquem, compilem a biblioteca e a disponibilizem para acesso público.

PS

Eu também consideraria a possibilidade de sincronizar as informações de saldo das duas plataformas (se possível, é claro).

 
Interesting:

O mesmo será verdadeiro somente se você adaptar os processos de negociação do MT4 ao MT5; caso contrário, em determinadas situações, poderá haver diferenças (e bastante significativas).

Haverá apenas dois exemplos: "inverter" e "cortar" (se forem escritos de forma suficientemente compacta, não ocuparão muito espaço).

E tenho certeza de que são as inversões e os truncamentos os aspectos mais "complicados" e complicados de tais sistemas.

Quanto às bibliotecas ex5, eu concordo (pode ser uma boa solução criar uma biblioteca de classes especializada), mas há um grande "porém": a funcionalidade das soluções baseadas apenas em MQL5 é nitidamente inferior a todas as possibilidades que a DLL fornecerá.

E o problema com a DLL é mais fácil de resolver do que parece para muitas pessoas, há duas opções:

1. Publicar o código-fonte da biblioteca;

2. Fornecer o código-fonte à MQ para que eles o verifiquem, compilem a biblioteca e a disponibilizem para acesso público.

PS

Eu também consideraria a possibilidade de sincronizar as informações do balanço patrimonial das duas plataformas (se possível, é claro).

Não haverá diferença nem no rollover nem no corte, a diferença aparece apenas na diferença dos níveis de cotação no momento atual e no atraso da execução.

Idealmente, se as cotações entre os MTs forem iguais e a defasagem for 0, a negociação trará o mesmo lucro.

Você entendeu o ponto principal: o lucro é obtido por meio de apostas. Se você, nos mesmos momentos, em ambos os terminais, nas mesmas cotações, fizer a mesma aposta, obterá o mesmo lucro.

Quanto ao dll, é improvável que a MQ examine todos os códigos de terceiros para verificar sua segurança, e os compiladores delphi ou srp nem todo mundo tem. Você pode postar o código de uma bíblia e substituir o arquivo compilado por outro. Portanto, por enquanto, somente o ex5.

 
Urain:

Ideia interessante, tudo o que for para o servidor será definitivamente exibido em OnTrade(). Mas só é necessário filtrar, transferir para o arquivo não as solicitações, mas as respostas do servidor sobre a ordem executada.

Eu simplesmente não pensei nessa direção.

De fato, o OnTrade é o local ideal para processar alterações na lista de posições. Você só precisa inicializá-lo de modo que as negociações existentes sejam copiadas imediatamente na inicialização (e não no próximo evento de negociação).

A filtragem de eventos é muito simples - verifique a lista de posições e continue o processamento somente se algo tiver sido alterado nela.