Código simples necessário para EA (modificar duas ordens abertas) - página 5

 
deVries:


Você quer ter isso modificando o StopLoss para ambos os negócios de Compra e Venda com o mesmo pip ??

Pense novamente se é isso que você quer e você pode descobrir porque não está modificando dessa forma....

Também não modifique as negociações com cada novo ponto na direção certa escolha um trailingstep para permitir a modificação (xx Pontos podem escolher 10 ou mais para evitar muitos erros de contexto de negociação muito ocupados)

"!" é algo como não codificar

No momento eu só quero o TakeProfit modificado em ambos os comércios, o StopLoss é o mesmo em todo o comércio (para os testes atuais de qualquer forma).
 

OK, encontrei o problema . . . O spread é retornado como o número de pontos . .

Portanto, mude estas linhas . .

if(OrderTakeProfit() > Candle23Open - ((TakeProfitModified - 1) * Point) + Spread )      //  check if TakeProfit has already been modified
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open - (TakeProfitModified * Point) + Spread, 0, Blue))

para isto . . .

if(OrderTakeProfit() > Candle23Open + ((Spread - TakeProfitModified + 1 ) * Point)  )      //  check if TakeProfit has already been modified
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open + ((Spread - TakeProfitModified) * Point) , 0, Blue))
 
RaptorUK:

OK, encontrei o problema . . . O spread é retornado como o número de pontos . .

Portanto, mude estas linhas . . .

para isto . . .

Isso faz com que funcione, obrigado! Tanto as operações de compra e venda são modificadas agora, no entanto, por algumas razões, elas são modificadas algumas vezes ao longo das operações e o ganho parece às vezes ir além do que os insumos exigem. Isto parece acontecer em horários inteiros como 2:00 ou 7:00, não sei bem porque isto está acontecendo, será que por acaso tem algo a ver com a propagação mudando o tempo todo? Isto acontece tanto com a compra quanto com a venda, então eu acho que não pode ser o "spread". A única maneira de pensar é que a vela às 23:00 parece mudar, embora isso não faça sentido e não tenho certeza de como eu poderia testar isso.

 
Adicione algumas declarações impressas aqui e ali para mostrar o que as variáveis estão fazendo, então você pode descobrir o que está dando errado e consertá-lo.
 

Estou tentando usar isto:

Print(Open [iBarShift(NULL, 0, StrToTime("23:00") )]);

Para ver se o preço aberto do bar muda, mas parece estar imprimindo horários aleatórios a cada vez.

Também em um dos dias notei que as negociações não seguem a regra de fechar todas as negociações às 22:59, independentemente do que esteja acontecendo, acho que isto parou de funcionar.

Estou usando isto

   if (TimeDayOfWeek(TimeCurrent())==5 && TimeCurrent()>=StrToTime("22:59")) { CloseAll(); return(0); }

e isto

void CloseAll()
   {
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderMagicNumber()!=MagicNumber) continue;
         
      //
      //
      //
      //
      //
         
      if (OrderType()==OP_BUY || OrderType()==OP_SELL)
         {
         for(int c=0; c<3; c++)
            {
            RefreshRates();
            if (OrderType()==OP_BUY)
                  { double cp = Bid;}  
            else  {        cp = Ask;}
               
            OrderClose(OrderTicket(),OrderLots(),cp,0,Yellow);
            int err=GetLastError();
            if(err==4 || err==136 || err==137 || err==138 || err==146)
               {
               Sleep(5000); continue;
               }  
               break;                     
            }
            break;

Para fechar os negócios no horário especificado.

 

Um correio todo em letras maiúsculas foi removido.

Por favor, não faça uso excessivo de letras maiúsculas ao postar. É considerado gritaria e muito rude.

Razão: