Amigos eu uso uma função para chamar meu BreakEven, ele já funciona se ultrapassa meu gatilho, porém eu tb quero que le acione o BreakEven se ultrapassar 20minutos até consigo fazer um if para acionar após 20 minutos porem aparece um erro invalidi stops.
já olhei o código umas 30x e não estou entendendo onde está errado. Favor me ajudem, agradeço rsrsr
ERRO:
Olá Kleuton,
logo no inicio tem um problema, você está pegando um MAGIC NUMBER lixo, pois não leu a posição SelectByIndex(), nem quero saber o motivo de dar certo quando a lista tem size 1(um)....
Tenho uma indagação e uma sugestão para fazer.
Se você está me modo NETTING não precisar percorrer a lista de posições abertas, porque você só tem uma posição para cada ativo, então o PositionSelect( _Symbol ) já resolve o problema e testar o MAGIC NUMBER é uma redundância.
Quanto aos stops verifique se estão coerentes com ASK / BUY, dá um print desses valores para verificar.
-> sl: 121240 >= ASK tp: 121160 <= BID
if(PositionSelect(_Symbol) && !beAtivo) { ulong PositionTicket = PositionGetInteger(POSITION_TICKET); double PrecoEntrada = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN), _Digits); double TakeProfitCorrente = NormalizeDouble(PositionGetDouble(POSITION_TP), _Digits); double StopLossCorrente = NormalizeDouble(PositionGetDouble(POSITION_SL), _Digits); double novoSL = PrecoEntrada ; // MOVE NOVO STOP LOSS PARA PREÇO DE ENTRADA double novoTP = TakeProfitCorrente ; // NOVO TAKE PROFIT PERMANECE O MESMO // aciona se ultrapassa 1200 segundos 20minutos - stop no zeroXzero if(horaCandleOrdem + 1200 == TimeCurrent() && PrecoEntrada != StopLossCorrente) { if(trade.PositionModify(PositionTicket, novoSL, novoTP)) { Print("BreakEven - sem falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription()); beAtivo = true; } else { Print("BreakEven - com falha. ResultRetcode: ", trade.ResultRetcode(), ", RetcodeDescription: ", trade.ResultRetcodeDescription()); } } }
Olá Kleuton,
logo no inicio tem um problema, você está pegando o MAGIC NUMBER lixo, pois não leu a posição, nem quero saber o motivo de dar certo quando a lista só tem size 1(um).... Tenho uma indagação e uma sugestão para fazer.
Se você está me modo NETTING não precisar percorrer a lista de posições abertas, porque você só tem uma posição para cada ativo, então o PositionSelect( _Symbol ) já resolve o problema e testar o MAGIC NUMBER é uma redundância.
Quanto aos stops verifique se estão coerentes com ASK / BUY, dá um print desses valores para verificar.
Rogerio entendi seu posicionamento, porém fiquei com mais duvida ainda, Sim minha conta é NETTING porém as vezes eu rodo 2 ou mais EA diferente no mesmo Mt5 ai eu preciso separar as ordem com MagicNum=XXXX pois depois eu exibo o histórico separado de cada EA exibido em um painel: Controls\Dialog.mqh.
Seu eu usar somente PositionSelect() é possível usar em conjunto com o magicNum ? ou não precisa ?
Estou mandando o Print (EM ANEXO) do Erro do BREAKEaver , interessante que o mesmo código funciona quando uso o BreakEaver pegando um gatilho que ultrapassa o preço, porém quando eu uso o recuso de Sotp no Tempo Zero a Zero pelo Time de 20m, o mesmo código não funciona.
o que acham?
if(TimeCurrent() >= horaEntradaPosicao+1200 && PRC == precoEntradaPosicao ){ /// Chama função que encerra a posição atual FechaPosicao(); Print("## Fechar Posição no Zero a Zero - Limite de Horário para o take"); }
conseguir fazer por outra alternativa, não muito boa mas foi a solução,
o que acham?
Bom dia!
Em relação ao primeiro código, o que pode está ocorrendo também é de a posição estar negativa e o EA tenta mover SL pro zero-a-zero. O preço atual deve ser verificado também.
Rogerio entendi seu posicionamento, porém fiquei com mais duvida ainda, Sim minha conta é NETTING porém as vezes eu rodo 2 ou mais EA diferente no mesmo Mt5 ai eu preciso separar as ordem com MagicNum=XXXX pois depois eu exibo o histórico separado de cada EA exibido em um painel: Controls\Dialog.mqh.
Seu eu usar somente PositionSelect() é possível usar em conjunto com o magicNum ? ou não precisa ?
Estou mandando o Print (EM ANEXO) do Erro do BREAKEaver , interessante que o mesmo código funciona quando uso o BreakEaver pegando um gatilho que ultrapassa o preço, porém quando eu uso o recuso de Sotp no Tempo Zero a Zero pelo Time de 20m, o mesmo código não funciona.
Kleuton
o fato de ser na mesma instância (MT5) não importa, o que importa é a CONTA e o SERVIDOR, outra coisa, você tem mais de um EA rodando ao mesmo tempo sobre o mesmo ativo (?). Isso não nada comum e complica os EA(S), né!!!
.... Seu eu usar somente PositionSelect() é possível usar em conjunto com o magicNum ? ou não precisa ?
Já que você roda sobre o mesmo ativo mais de um EA ao mesmo tempo, então você precisa identificar o EA.
..... eu exibo o histórico separado de cada EA exibido em um painel
Sim, aqui o uso do MagicNumber é importante, pois você identifica o EA e avalia o resultado.
.... Estou mandando o Print (EM ANEXO) do Erro do BREAKEaver , interessante que o mesmo código funciona quando uso o BreakEaver pegando um gatilho que ultrapassa o preço, porém quando eu uso o recuso de Sotp no Tempo Zero a Zero pelo Time de 20m, o mesmo código não funciona.
Verifique se os stops estão coerentes com ASK / BUY, dá um PRINT desses valores pois o SL de 121240 tem ser >= ASK e o TP de 121160 tem que ser <= BID
Bom dia!
Em relação ao primeiro código, o que pode está ocorrendo também é de a posição estar negativa e o EA tenta mover SL pro zero-a-zero. O preço atual deve ser verificado também.
tem razão
Kleuton
o fato de ser na mesma instância (MT5) não importa, o que importa é a CONTA e o SERVIDOR, outra coisa, você tem mais de um EA rodando ao mesmo tempo sobre o mesmo ativo (?). Isso não nada comum e complica os EA(S), né!!!
.... Seu eu usar somente PositionSelect() é possível usar em conjunto com o magicNum ? ou não precisa ?
Já que você roda sobre o mesmo ativo mais de um EA ao mesmo tempo, então você precisa identificar o EA.
..... eu exibo o histórico separado de cada EA exibido em um painel
Sim, aqui o uso do MagicNumber é importante, pois você identifica o EA e avalia o resultado.
.... Estou mandando o Print (EM ANEXO) do Erro do BREAKEaver , interessante que o mesmo código funciona quando uso o BreakEaver pegando um gatilho que ultrapassa o preço, porém quando eu uso o recuso de Sotp no Tempo Zero a Zero pelo Time de 20m, o mesmo código não funciona.
Verifique se os stops estão coerentes com ASK / BUY, dá um PRINT desses valores pois o SL de 121240 tem ser >= ASK e o TP de 121160 tem que ser <= BID
Eu costumo usa mais de uma EA na conta demo pois eu faço testes diferentes, as vezes em ativo diferentes também, mas é mais no Painel que o magicNum ajuda, já na conta Real somente 1 EA.
Entendi perfeitamente o seu posicionamento, faz muito sentido inclusive isso enxuga o código, vou rever isso já. Agradeço
TÓPICO RESOLVIDO - Deste já Obrigado.

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
já olhei o código umas 30x e não estou entendendo onde está errado. Favor me ajudem, agradeço rsrsr
ERRO: