Discussão do artigo "Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XXXIV): exclusão de ordens, modificação de ordens/posições por condições" - página 2
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Sim, eles vão. Porque a abordagem para armazenar os dados de sua conta foi alterada. Isso está escrito no final do artigo como um aviso:
-----
Para sua informação:
Desde que alteramos a estrutura do objeto de conta (alteramos o tamanho das matrizes uchar para armazenar as propriedades de string da conta e adicionamos mais uma propriedade de inteiro), todos os arquivos salvos anteriormente dos objetos de conta não serão mais carregados corretamente. Se eles estiverem na pasta comum dos terminais no diretório \Files\DoEasy\Accounts\, todos eles deverão ser excluídos antes de iniciar esse consultor de teste - eles serão recriados ao alternar de uma conta para outra com um novo tamanho da estrutura do objeto.
-----
Excluí todos os arquivos BIN da conta na pasta comum para ter certeza de que seu código foi completamente carregado. Ele é carregado sem nenhum erro sobre `CAccount::Load` (mas o principal problema era a ignorância de eventos errados e ainda existe).
Em seguida, abri algumas negociações manualmente e as fechei com um script o mais rápido possível. Recebi esse erro novamente:
CEventsCollection::CreateNewEvent, Linha 768: This event already in the list
Sabemos que esses eventos eram de fechamento de posições diferentes no MT4, mas o código do mecanismo não consegue entender isso. O mecanismo é capaz de entender vários eventos de fechamento de negociações em um curto espaço de tempo?
Aqui estão todas as mensagens de registro:
2020.08.21 21:23:50.604 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.21 21:23:50.600 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.21 19:51:47.000 -
AUDCAD Fechado Comprar #573142748 ao preço 0.94405, Lucro -0.22 USD
2020.08.21 21:23:50.368 Script CloseTradesFast4Test AUDCAD,H1: removed
2020.08.21 21:23:50.364 CloseTradesFast4Test AUDCAD,H1: uninit reason 0
2020.08.21 21:23:50.364 CloseTradesFast4Test AUDCAD,H1: close #573142747 buy 0.01 AUDCAD at 0.94404 at price 0.94375
2020.08.21 21:23:50.148 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.21 21:23:50.146 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.21 19:51:47.000 -
AUDCAD Fechado Comprar #573142748 ao preço 0.94405, Lucro -0.22 USD
2020.08.21 21:23:49.942 CloseTradesFast4Test AUDCAD,H1: close #573142748 buy 0.01 AUDCAD at 0.94405 at price 0.94376
2020.08.21 21:23:49.725 mhdbzr-34 AUDCAD,H1: CEventsCollection::CreateNewEvent, Line 768: Este evento já está na lista
2020.08.21 21:23:49.520 CloseTradesFast4Test AUDCAD,H1: close #573142752 buy 0.01 AUDCAD at 0.94406 at price 0.94376
2020.08.21 21:23:49.257 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.21 21:23:49.255 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.21 19:51:52.000 -
AUDCAD Fechado Venda #573142755 ao preço 0.94366, Lucro -0.37 USD
2020.08.21 21:23:49.086 CloseTradesFast4Test AUDCAD,H1: close #573142755 sell 0.01 AUDCAD at 0.94366 at price 0.94414
2020.08.21 21:23:48.815 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.21 21:23:48.812 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.21 19:51:53.000 -
AUDCAD Fechado Venda #573142757 ao preço 0.94366, Lucro -0.37 USD
2020.08.21 21:23:48.661 CloseTradesFast4Test AUDCAD,H1: close #573142756 sell 0.01 AUDCAD at 0.94366 at price 0.94415
2020.08.21 21:23:48.352 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.21 21:23:48.350 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.21 19:51:53.000 -
AUDCAD Fechado Venda #573142757 ao preço 0.94366, Lucro -0.37 USD
2020.08.21 21:23:48.237 CloseTradesFast4Test AUDCAD,H1: close #573142757 sell 0.01 AUDCAD at 0.94366 at price 0.94415
2020.08.21 21:23:47.537 CloseTradesFast4Test AUDCAD,H1: inicializado
2020.08.21 21:23:47.520 Script CloseTradesFast4Test AUDCAD,H1: carregado com sucesso
2020.08.21 21:23:31.762 Negociação automatizada ativada
Excluí todos os arquivos BIN da conta na pasta comum para ter certeza de que seu código foi carregado completamente. Ele é carregado sem nenhum erro sobre `CAccount::Load` (mas o principal problema era ignorar o evento errado e ainda existe)
Em seguida, abri algumas negociações manualmente e as fechei com um script o mais rápido possível. Recebi esse erro novamente:
CEventsCollection::CreateNewEvent, Linha 768: This event already in the list
Sabemos que esses eventos eram de fechamento de posições diferentes no MT4, mas o código do mecanismo não consegue entendê-los. O mecanismo é capaz de entender vários eventos de fechamento de negociação em um curto espaço de tempo?
Por favor, descreva passo a passo o que está fazendo para obter esse erro.
Descreva passo a passo o que você está fazendo para obter esse erro.
Modifiquei seu código do EA para obter apenas eventos. (Anexei a versão modificada em mensagens anteriores, denominada `mhdbzr-34`).
Modifiquei seu código do EA para obter apenas eventos. (Anexei a versão modificada em mensagens anteriores, ela se chama `mhdbzr-34`).
Dê seu script para fechar as posições.
Dê seu script para fechar posições.
Aqui está o código:
Aqui está outro teste; desta vez, ele não reconheceu as posições fechadas, mas as perdeu com as anteriores em dois casos.
2020.08.27 20:30:18.880 Expert mhdbzr-34 AUDCAD,H1: removed
2020.08.27 20:30:18.869 mhdbzr-34 AUDCAD,H1: uninit reason 1
2020.08.27 20:28:35.617 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.27 20:28:35.617 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.27 20:28:35.617 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.27 18:58:03.000 - AUDCAD Fechado Comprar #573721560 ao preço 0.95218, Lucro -2.29 USD
2020.08.27 20:28:35.614 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.27 18:58:04.000 - AUDCAD Fechado Comprar #573721562 a preço 0.95218, Lucro -2.29 USD
2020.08.27 20:28:35.582 Script CloseTradesFast4Test AUDCAD,H1: removed
2020.08.27 20:28:35.577 CloseTradesFast4Test AUDCAD,H1: uninit reason 0
2020.08.27 20:28:35.577 CloseTradesFast4Test AUDCAD,H1: close #573721560 buy 0.10 AUDCAD at 0.95218 at price 0.95188
2020.08.27 20:28:35.177 CloseTradesFast4Test AUDCAD,H1: close #573721562 buy 0.10 AUDCAD at 0.95218 at price 0.95188
2020.08.27 20:28:35.161 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.27 20:28:35.158 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.27 18:58:06.000 - AUDCAD Fechado Venda #573721573 ao preço 0.95190, Lucro -2.06 USD
2020.08.27 20:28:34.739 CloseTradesFast4Test AUDCAD,H1: close #573721571 buy 0.10 AUDCAD at 0.95224 at price 0.95191
2020.08.27 20:28:34.695 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.27 20:28:34.691 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.27 18:58:06.000 - AUDCAD Fechado Venda #573721573 ao preço 0.95190, Lucro -2.06 USD
2020.08.27 20:28:34.306 CloseTradesFast4Test AUDCAD,H1: close #573721573 sell 0.10 AUDCAD at 0.95190 at price 0.95217
2020.08.27 20:28:34.180 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.27 20:28:34.177 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.27 18:58:09.000 - AUDCAD Fechado Venda #573721582 ao preço 0.95190, Lucro -2.14 USD
2020.08.27 20:28:33.883 CloseTradesFast4Test AUDCAD,H1: close #573721577 sell 0.10 AUDCAD at 0.95190 at price 0.95217
2020.08.27 20:28:33.664 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição fechada
2020.08.27 20:28:33.660 mhdbzr-34 AUDCAD,H1: - Posição fechada: 2020.08.27 18:58:09.000 - AUDCAD Fechado Venda #573721582 ao preço 0.95190, Lucro -2.14 USD
2020.08.27 20:28:33.440 CloseTradesFast4Test AUDCAD,H1: close #573721582 sell 0.10 AUDCAD at 0.95190 at price 0.95218
2020.08.27 20:28:32.946 CloseTradesFast4Test AUDCAD,H1: inicializado
2020.08.27 20:28:32.928 Script CloseTradesFast4Test AUDCAD,H1: carregado com sucesso
2020.08.27 20:28:09.413 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição aberta
2020.08.27 20:28:09.411 mhdbzr-34 AUDCAD,H1: - Posição aberta: 2020.08.27 18:58:09.000 - AUDCAD Abriu 0.10 Sell #573721582 [0.10 Market-order Sell #573721582] ao preço 0.95190
2020.08.27 20:28:07.664 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição aberta
2020.08.27 20:28:07.659 mhdbzr-34 AUDCAD,H1: - Posição aberta: 2020.08.27 18:58:07.000 - AUDCAD Abriu 0.10 Sell #573721577 [0.10 Market-order Sell #573721577] ao preço 0.95190
2020.08.27 20:28:06.755 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição aberta
2020.08.27 20:28:06.752 mhdbzr-34 AUDCAD,H1: - Posição aberta: 2020.08.27 18:58:06.000 - AUDCAD Abriu 0.10 Sell #573721573 [0.10 Market-order Sell #573721573] ao preço 0.95190
2020.08.27 20:28:05.911 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição aberta
2020.08.27 20:28:05.909 mhdbzr-34 AUDCAD,H1: - Posição aberta: 2020.08.27 18:58:05.000 - AUDCAD Opened 0.10 Buy #573721571 [0.10 Market-order Buy #573721571] at price 0.95224
2020.08.27 20:28:04.587 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição aberta
2020.08.27 20:28:04.582 mhdbzr-34 AUDCAD,H1: - Posição aberta: 2020.08.27 18:58:04.000 - AUDCAD Opened 0.10 Buy #573721562 [0.10 Market-order Buy #573721562] a preço 0.95218
2020.08.27 20:28:04.101 mhdbzr-34 AUDCAD,H1: OnDoEasyEvent: Posição aberta
2020.08.27 20:28:04.099 mhdbzr-34 AUDCAD,H1: - Posição aberta: 2020.08.27 18:58:03.000 - AUDCAD Opened 0.10 Buy #573721560 [0.10 Market-order Buy #573721560] at price 0.95218
2020.08.27 20:27:59.245 mhdbzr-34 AUDCAD,H1: inicializado
2020.08.27 20:27:59.244 mhdbzr-34 AUDCAD,H1: Conta 13278180: teste mhdbzr (Alpari) 5537.01 USD, 1:100, Hedge, conta demo MetaTrader 4
2020.08.27 20:27:49.794 Expert TestDoEasy\Part34\mhdbzr-34 AUDCAD,H1: carregado com sucesso
Abri essas negociações manualmente no mercado real na conta de demonstração, sem usar o ambiente do testador. (e fechei com o script como fiz antes)
(aqui está a captura de tela para ter certeza de que isso aconteceu)
Aqui está outro teste; dessa vez, ele não reconheceu as posições fechadas, mas as perdeu com as anteriores em dois casos.
Abri essas negociações manualmente no mercado real em uma conta de demonstração, sem usar o ambiente de teste. (e fechei com o script como fiz antes)
(aqui está a captura de tela para ter certeza de que isso aconteceu)
Estou procurando a causa do problema. Não será rápido. Obrigado pelos testes.
Estou procurando a causa do problema. Não será rápido. Obrigado pelos testes.
(aqui está minha opinião)
Essas posições fechadas estão no mesmo segundo, uma delas é tratada no tick anterior, portanto, no novo tick, ele tem `new_history_orders=1`, mas duas posições na `list` e classificadas provavelmente de forma errada, porque dois itens têm o mesmo tempo de fechamento no segundo.
Se a ordem já estiver na lista e lançar uma mensagem de erro, ele excluirá o objeto de posição e retomará a contagem nesse loop for, mas acho que ele não deve contar n quando a ordem tiver sido excluída dentro dafunção CreateNewEvent , para capturar a próxima posição válida.
Também precisamos entender as posições tratadas recentemente, para ignorar ordens classificadas incorretamente e não fazer a contagem regressiva para `n`.
(aqui está minha opinião)
essas posições fechadas estão no mesmo segundo, uma delas é tratada no tick anterior, portanto, no novo tick, ela tem ` new_history_orders =1`, mas duas posições na `lista` e classificadas provavelmente de forma errada, porque dois itens têm o mesmo tempo de fechamento no segundo.
Se a ordem já estiver na lista e lançar uma mensagem de erro, ele excluirá o objeto de posição e retomará a contagem nesse loop for, mas acho que ele não deveria contar n, quando a ordem tiver sido excluída dentro da função CreateNewEvent , para capturar a próxima posição válida.
Também precisamos entender as posições tratadas recentemente, para ignorar as ordens classificadas incorretamente e não fazer a contagem regressiva para `n`.
Obrigado, vou resolver isso.
Olá Artyom, lembro-me de você ter mencionado esse futuro shell gráfico na primeira vez que li esses artigos, há algumas semanas... Você pode fornecer mais detalhes sobre sua visão sobre isso e o que isso nos permitirá fazer na prática?