Problemas na verificação de comércio aberto - página 7

 
dazamate:
Sim, apenas lendo sobre seu comentário novamente e o que eu fiz está errado,
não me dará o tempo de abertura do bar, eu teria que usar o Tempo[0]?


Sim, ou . . . .

tradeopened = TimeHour(TimeCurrent());
 
OrderDelete(OrderTicket( ) );  

Isso o consertou Raptor.


---------> http://clip2net.com/s/14aYs

 
dazamate:

Isso o consertou Raptor.


---------> http://clip2net.com/s/14aYs

LOL, feliz em poder ajudar. . . :-)
 

Companheiro você tem sido de grande ajuda eu finalmente tenho a ea em um estado agora onde eu posso começar a afinar a estratégia. Muito obrigado, mas duvido que você tenha ouvido o último de mim lamentando dizer haha


Também muito obrigado à WHRoeder
 

Sooo... você pensou que tinha acabado rs


Acrescentei algum código que irá rastrear o prejuízo a partir de um valor médio móvel. O código funciona bem em operações de compra, mas não funciona em operações de venda. Eu não consigo identificar nada, talvez vocês consigam.


// Trailing Stop Code 

   if(Tradeopen()==true && emastoptrail==TRUE)                                  // Trades are open and Trailing stop feature is turned on
    {
      for(int tnumber2 = OrdersTotal()-1; tnumber2 >= 0 ; tnumber2--)                   //scan through open orders
       {
        if (OrderSelect(tnumber2, SELECT_BY_POS) && 
            OrderMagicNumber()==Mnumber3)                                                // The orders magic number is the same as the magic number used the profit trade
            {                                          
          
            if(OrderType()==OP_BUY && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) > OrderStopLoss() ))       // The stop loss is less than the moving average value
          
               {
                OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0);  // Modify Stop to MA value
               }
            
            if(OrderType()==OP_SELL && (iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1) < OrderStopLoss() ))       // The stop loss is more than the moving average value
          
               {
                OrderModify(OrderTicket(),OrderOpenPrice(),iMA(Symbol(), 60, ematrailperiod, 0, 1, 0, 1),OrderTakeProfit(),0);   // Modify Stop to MA value
               }
            }
       }
     }
 

Bem, o código de parada de rastreamento pode não ser o problema. Há um problema com o código que apaga as ordens pendentes após um certo tempo.


// DELETE PENDING ORDERS THAT HAVE NOT BEEN TRIGGERED WITHIN ' int = pendinglimit'

   if((iBarShift(Symbol(),60 ,tradeopened)>pendinglimit) && Tradeopen()==true)              // Check to see if pending orders have expired
     {
        for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)))       // The orders magic number is the same as the magic number used in this ea
          
               {
                OrderDelete(OrderTicket( ) );                                            // Delete it
               }
        }
       
     }

Depois que cada negociação é aberta, eu também executo este...

tradeopened = TimeHour(TimeCurrent());

I Comentário ...

(iBarShift(Symbol(),60 ,tradeopened)

e começa a partir de 1000 e continua contando com cada nova barra e não é reiniciada quando eu corro ...

tradeopened = TimeHour(TimeCurrent());


Isto faz com que a verificação para excluir ordens pendentes seja sempre verdadeira e se a negociação não for acionada dentro da próxima barra a ordem pendente é excluída imediatamente -__-

Ahhh HELP lol

 

Acho que posso tê-lo consertado ....

Eu o mudei para que mais uma verificação para eliminar a negociação fosse a de recuar o tempo máximo permitido para que uma ordem pendente pudesse ser aberta e ver se ela correspondia ao tempo em que a negociação foi aberta :)

  for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) &&       // The orders magic number is the same as the magic number used in this ea
              (iTime(   Symbol(), 60, pendinglimit) == tradeopened))
               {
                OrderDelete( OrderTicket() );                                            // Delete it
               }
        }
 
dazamate:

Acho que talvez eu tenha consertado ....

Eu a mudei para que mais uma verificação para excluir a negociação fosse mudar o tempo máximo permitido para a abertura de uma ordem pendente e ver se ela correspondia ao tempo em que a negociação foi aberta :)

Você quase tem algo parecido com o que eu estava imaginando . . .

Há um problema no uso de sua variável "tradeopened" . . . se houver negócios abertos e a EA for fechada você perde a informação nessa variável . . por que não substituí-la por OrderOpenTime() e fazer algo assim . .

for(int tnumber = OrdersTotal()-1; tnumber >= 0 ; tnumber--)                  //scan through open orders
        {
          if (OrderSelect(tnumber, SELECT_BY_POS) &&   
             ((OrderType()==OP_BUYSTOP)|| (OrderType()== OP_SELLSTOP)) &&               // The order selected is either a pending buy on stop order or a buy on sell order
             ((OrderMagicNumber()== Mnumber1) || (OrderMagicNumber()==Mnumber3)) &&       // The orders magic number is the same as the magic number used in this ea

              (iBarShift(OrderSymbol(),PERIOD_H1 ,OrderOpenTime()) - pendinglimit) <= 0));    //  <----------- this . . .

               {
                OrderDelete( OrderTicket() );                                            // Delete it
               }
        }
 
O único problema é que eu estava usando a fração ibarshift antes e por alguma razão ela estava produzindo mais de 1000
 

Também raptor eu preciso escolher seu cérebro.... novamente :)


Existe uma maneira de transformar um valor médio móvel em graus? Estou apenas procurando no Google agora para ver se consigo encontrar algum forumlas matemático. Dessa forma, seria fácil para a detecção lateral do mercado e esclarecer tendências para cima e para baixo.