EA SÓ FUNCIONA BEM NA DEMO

Para adicionar comentários, por favor Faça o login ou registrar
northedan
175
northedan  

Meu EA rodando na demo executa as ordens certo de acordo com a estratégia, mas na real não. Ele faz poucas entradas. Alguém já passou por isso?

Na imagem abaixo estão as mesmas configurações.



Joscelino
907
Joscelino  
northedan:

Meu EA rodando na demo executa as ordens certo de acordo com a estratégia, mas na real não. Ele faz poucas entradas. Alguém já passou por isso?

Na imagem abaixo estão as mesmas configurações.



Falta muita informação. Na conta real seu EA nem chega a enviar ordens? Ou envia e são recusadas?

Postar imagens gráficas não ajudam em nada. Se houver problema no código e não postá-lo, dificilmente obterá ajuda.

Da mesma forma se não enviar as duvidas com informações completas.

[ ]´s

Trader_Patinhas
1127
Trader_Patinhas  

Uma possibilidade é que o EA esteja enviando ordens que são rejeitadas na conta real por falta de margem. Em algumas corretoras não basta ter a margem depositada na conta, você precisa também configurar as margens e alocá-las aos ativos e canais de negociação desejados.

Verifique o log do EA (aba "Experts") e o log do MT5 (aba "Journal") para ver se a corretora está rejeitando ordens enviadas pelo EA.

northedan
175
northedan  
Trader_Patinhas:

Uma possibilidade é que o EA esteja enviando ordens que são rejeitadas na conta real por falta de margem. Em algumas corretoras não basta ter a margem depositada na conta, você precisa também configurar as margens e alocá-las aos ativos e canais de negociação desejados.

Verifique o log do EA (aba "Experts") e o log do MT5 (aba "Journal") para ver se a corretora está rejeitando ordens enviadas pelo EA.

Bom... Minha corretora é a modal. Está habilitado 1 contrato. Tem R$140,00 na conta.

Esse é o trecho do código que coloca a ordem limit:

         request.action = TRADE_ACTION_PENDING;
         request.type = ORDER_TYPE_SELL_LIMIT;
         request.symbol = _Symbol;
         request.volume = Contrato;
         request.type_filling = ORDER_FILLING_FOK;
         request.price = NormalizeDouble((maTickCerto + Afastamento),_Digits);
         request.sl = NormalizeDouble(((maTickCerto + Afastamento) + StopLoss),_Digits);
         request.tp = NormalizeDouble((maTickCerto + Afastamento) - TakeProfit,_Digits);
         request.type_time = ORDER_TIME_DAY;
         request.deviation = 0;
         request.magic = MagicNumber;
         
         OrderSend(request,result);
         printf("ordem colocada");
         ordemRealizada = true;

Essa é parte do código que remove a ordem limit se ela não for executada no candle current:

if(LastBar != ThisBar)
      {
         //ZeroMemory(request);
         //ZeroMemory(result);
         int ord_total = OrdersTotal();
         printf(ord_total);
         if(ord_total > 0 && ordemRealizada == true)
         {
            for(int i = ord_total - 1; i >= 0; i--)
            {
               ulong ticket = OrderGetTicket(i);
               printf(ticket);
               if(OrderSelect(ticket) && OrderGetString(ORDER_SYMBOL) == Symbol() 
                  && PositionSelect(_Symbol) == false && OrderGetInteger(ORDER_MAGIC) == MagicNumber)
               {
                  request.action = TRADE_ACTION_REMOVE;
                  request.order = ticket;
                  
                  OrderSend(request,result);
                  printf("ordem removida");
               }
            }    
         }
         LastBar = ThisBar;
         ordemRealizada = false;
         printf("Nova barra");


Acontece que no terminal está aparecendo "ordem colocada", como se a ordem tivesse sido enviada, mas não foi.

northedan
175
northedan  
Joscelino Celso de Oliveira:

Falta muita informação. Na conta real seu EA nem chega a enviar ordens? Ou envia e são recusadas?

Postar imagens gráficas não ajudam em nada. Se houver problema no código e não postá-lo, dificilmente obterá ajuda.

Da mesma forma se não enviar as duvidas com informações completas.

[ ]´s

Postei o código ai em cima amigo. Eu realmente não sei o que está acontecendo.

No log, o horário é 8:41 pq não estou no horário de verão. No gráfico foi no candle das 9:41



Esses log são da conta real. Da pra vê ali no printf que a ordem foi colocada, mas ela não foi executada. Eu coloquei outro printf para "ordem removida". Esse trecho do código deveria ser executado, mas como não existia ordem para ser removida, ele não foi executado. Lembrando que no gráfico não acontece nada. Não aparece a ordem. Já na conta demo essa ordem foi executada normalmente.

Era pra ser executada nessa linha amarela.


Rogerio Giannetti Torres
3150
Rogerio Giannetti Torres  

Bom dia,

altere request.type_filling = ORDER_FILLING_FOK; para request.type_filling = ORDER_FILLING_RETURN;

northedan
175
northedan  
Rogerio Giannetti Torres:

Bom dia,

altere request.type_filling = ORDER_FILLING_FOK; para request.type_filling = ORDER_FILLING_RETURN;

Deu certo, obrigado.

northedan
175
northedan  
Agora parece que está tudo certo. Mas eu não sei pq o EA abre mais operações na demo do que na real. A operações variam de 1 corretora pra outra?. E os resultados de uma conta demo não reflete operações na real?
Rogerio Giannetti Torres
3150
Rogerio Giannetti Torres  
northedan:
Agora parece que está tudo certo. Mas eu não sei pq o EA abre mais operações na demo do que na real. A operações variam de 1 corretora pra outra?. E os resultados de uma conta demo não reflete operações na real?

Bom dia,

acho que você não atentou para o fato que em DEMO o book é uma "simulação" do book real.  Em DEMO as ordens são executadas sem obedecer a fila de execução e nem a quantidade ofertada no preço.  Esqueci de comentar que o SL/TP são executados sem levar em conta o spread.

Para adicionar comentários, por favor Faça o login ou registrar