pedidos em aberto com intervalo de 10pip - página 4

 
    //datetime lastTime  = 0;
    double highest_open_price=0;
    //int      lastTicket = -1; // None open.
    int      highest_Ticket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    //&&  OrderOpenTime()     >=  lastTime
    &&  ?????????()     >=  highest_open_price
    ){
      highest_open_price= ????????();
      highest_Ticket = OrderTicket();
    }

Como eu disse - substituição simples

 
GumRai:

Como eu disse - substituição simples



obrigado GumRai: mas minha pergunta adicional é: ?????????() é OrderOpenTime()

agora como faço para que funcione com minha lógica comercial, como você aponta cedo




      
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }

 Here you give value to Opn_S, but you do nothing with it







   lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

Aqui não há condições para abrir um pedido e você escreve em excesso o valor do lastTicket.

Seu código não tem lógica, são apenas 3 seções de código que são totalmente alheias umas às outras

===========================================================================================================================




HHH

porque eu pergunto é que eu arranjei o resultado como este BELOW code......it resultou no que eu queria mas o problema é que ele abre vários pedidos em uma única linha. veja o RESULTADO PICS acima

// Orders accounting 
   datetime lastTime  = 0;
    double highest_open_price=0;
    lastTicket = -1; // None open.
    int      highest_Ticket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderOpenTime()     >=  highest_open_price
    ){
      highest_open_price= OrderOpenTime();
      highest_Ticket = OrderTicket();
    }





        
 if(Bid > High[1] && OrderOpenTime()     > highest_open_price)
  {
      Opn_S=true;
     }   
CurrentTime= Time[1];





if(Opn_S==true)               // No opened orders +
        {                                       // criterion for opening Sell
         RefreshRates();                   // Refresh rates     
         lastTicket=OrderSend(Symbol(),OP_SELL,mylot(),Bid,0,0,0,"My Comment",magic,0,Red);
         if(lastTicket>0)
      
           {
            Comment("Opened order Sell ","#",lastTicket);
            return(0);                                 // Exit start()
           }
         if(Fun_Error(GetLastError())==1) // Processing errors
            continue;                             // Retrying
         return(0);                                   // Exit start()
        }
      break;                                    // Exit while
     }
//--------------------------------------------------------------- 9 --------------------------------------
   return(0);                                       // Exit start()
  }


 

Não há lógica, pois seu código é de 3 seções que não se relacionam entre si.

Só posso concluir que você copiou e colou seções de código de outros EAs na vã esperança de que eles trabalhem juntos.

"acredito que ?????????() é OrderOpenTime()".

Prova que você não tem idéia do que o laço faz e que não o escreveu.

 

GumRai por favor, este é todo o meu código aberto principalmente apenas para vender. como você disse, todas essas desconexões vieram como resultado de permitir que minha ea abrisse vários pedidos e looping coisa antes é apenas simples lopped meus pedidos como este


{
   int cnt;
   int NumTrades;   // Number of buy and sell trades in this symbol
   
   NumTrades = 0;
   for (cnt = OrdersTotal()-1 ; cnt >=0 ; cnt--)
     {
     if(OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES)==true)
      if ( OrderSymbol() != Symbol()) continue;
      if ( OrderMagicNumber() != magic)  continue;
      
      if(OrderType() == OP_BUY )  NumTrades++;
      if(OrderType() == OP_SELL ) NumTrades++;
             
     }
    
  }




then getting my ea to work with my loop by just adding  if(NumTrades==0 && Opn_B==true) // No new orders +

this ensures my ea to open just 1 order on a giving chart but now i want to expand my ea to open more than one order i remove  NumTrades==0 

to let the ea open order unrestricted with my ordersend as little i know now i know we can loop through order for so many reason and when it comes
to the looping for highest order on the chart i dont know that well,but can do it if example is giving. please bear with my little coding knowledge and put me through

below is my ea please assist me 
 
por favor, aguarde sua resposta
 

Não tenho certeza se essa EA está apenas mal escrita, incompleta ou se é uma EA funcional com pedaços de código removidos.

Você diz que ela abre principalmente para vender, bem, não vejo que ela possa abrir uma compra.

A principal condição para abrir uma compra é

if(Opn_B==true)

O único outro lugar no código que a Opn_B aparece no código é

Opn_B=false

Portanto, não há em nenhum lugar onde isso possa ser definido como verdade.

A propósito:

   while(true) // Orders closing loop

Um loop que só abre pedidos - ótimo comentário.

   double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
 
GumRai:

Não tenho certeza se essa EA está apenas mal escrita, incompleta ou se é uma EA funcional com pedaços de código removidos.

Você diz que ela abre principalmente para vender, bem, não vejo que ela possa abrir uma compra.

A principal condição para abrir uma compra é

O único outro lugar no código que a Opn_B aparece no código é

Portanto, não há em nenhum lugar onde isso possa ser definido como verdade.

A propósito:

Um loop que só abre pedidos - ótimo comentário.

obrigado por revisar meu código e por detectar recomendações e correções

GumRai: é por isso que eu lhe disse então que muitas pessoas podem não entender, mas eu entendo, e você é capaz de entender porque você entende muito bem o código,

Além disso, tenho minha razão para fazer com que as ea só vendam, meu problema com este pedido tornou minhas ea ásperas, mas quando eu tiver a solução vou reorganizar tudo novamente.

olhar para a ea i remover condições para fechar e também comprar condição, o que faz a ea parece incompleta

.porque quero ter certeza de que ela cumpre estas condições...... abrindo a ordem em

preço mais alto aberto no símbolo do gráfico atual e abrir 10pip acima dele se sua compra/abrir 10pips abaixo se sua venda.

eu removo as condições de fechamento porque não quero voltar atrás para fechar negócios durante os testes para ter certeza de que o código está correto antes que outras condições sejam colocadas em prática .

uma vez que a solução seja alcançada, organizarei minha ea novamente com a condição de fechamento apropriada, e é por isso que estou pedindo que você me ajude com este problema através de sua ajuda.




 

Bem, eu lhe dei o código para encontrar o pedido com o preço aberto mais alto.

Agora é uma simples questão de verificar se o preço está pelo menos 10 pips acima deste valor e, em caso afirmativo, abrir outro pedido

 

por favor GumRai: como posso colocar o loop na ea, porque a forma como o fiz não funcionou no backtest......

como fiz isso? usei o preço_aberto_mais alto e o preço_mais alto_de_Ticket para escrever algumas das minhas condições na ea, mas isso não me deu o resultado desejado no backtest

talvez esteja faltando algo?


  double highest_open_price=0;
   int    highest_Ticket=-1;
   for(int pos=OrdersTotal()-1; pos>=0; pos--)
      if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES) // Only my orders w/
         && OrderMagicNumber()==0           // my magic number
         && OrderSymbol()==Symbol() // and my pair.
         && OrderOpenPrice()>=highest_open_price)
        {
         highest_open_price=OrderOpenPrice();
         highest_Ticket=OrderTicket();
        }
 
Sim, você está faltando mostrar o código. Como podemos saber o que você tem/foi feito?
Razão: