ordini aperti con gap di 10pip - pagina 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();
    }

Come ho detto - semplice sostituzione

 
GumRai:

Come ho detto - semplice sostituzione



grazie GumRai: ma la mia ulteriore domanda è che credo che ?????????() sia OrderOpenTime()

ora come faccio a farlo funzionare con la mia logica di trading come tu indichi prima




      
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);

Qui non ci sono condizioni per aprire un ordine e si sovrascrive il valore di lastTicket.

Il tuo codice non ha alcuna logica, sono solo 3 sezioni di codice che sono totalmente estranee l'una all'altra

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




HHH

Il motivo per cui te lo chiedo è che ho organizzato il risultato in questo modo SOTTO il codice......, il risultato è quello che volevo, ma il problema è che apre più ordini in una sola riga. vedi il PICS DEL RISULTATO sopra

// 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()
  }


 

Non c'è alcuna logica, poiché il tuo codice è composto da 3 sezioni che non si relazionano tra loro.

Posso solo concludere che hai copiato e incollato sezioni di codice da altri EA nella vana speranza che funzionino insieme

"Credo che ?????????() sia OrderOpenTime()"

Dimostra che non hai idea di cosa faccia il ciclo e che non l'hai scritto tu.

 

GumRai per favore questo è il mio intero codice si apre principalmente solo vendere. come hai detto tutte queste disconnessioni è venuto come risultato di permettere il mio ea per aprire l'ordine multiplo e la cosa looping prima è solo semplice lopped miei ordini come questo


{
   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 
 
per favore, sto aspettando la vostra risposta
 

Non sono sicuro se quell'EA sia solo scritto male, incompleto o un EA funzionante con pezzi di codice rimossi.

Dici che apre principalmente vendite, ma non vedo che possa mai aprire un acquisto.

La condizione principale per aprire un acquisto è

if(Opn_B==true)

L'unico altro posto nel codice in cui appare Opn_B è

Opn_B=false

Quindi non c'è da nessuna parte che possa essere impostato su vero.

Per inciso

   while(true) // Orders closing loop

Un ciclo che apre solo ordini - grande commento.

   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:

Non sono sicuro se quell'EA sia solo scritto male, incompleto o un EA funzionante con pezzi di codice rimossi.

Dici che apre principalmente vendite, ma non vedo che possa mai aprire un acquisto.

La condizione principale per aprire un acquisto è

L'unico altro posto nel codice in cui appare Opn_B è

Quindi non c'è da nessuna parte che possa essere impostato su vero.

Per inciso

Un ciclo che apre solo ordini - grande commento.

grazie per aver rivisto il mio codice e aver individuato raccomandazioni e correzioni

GumRai: è per questo che ti ho detto che molte persone potrebbero non capirlo ma io sì, e tu sei in grado di capire perché capisci molto bene il codice,

inoltre ho la mia ragione per rendere l'ea aperto solo in vendita, il mio problema con questa richiesta ha reso il mio ea approssimativo ma quando avrò la soluzione riorganizzerò di nuovo ogni cosa.

guarda l'ea ho rimosso le condizioni di chiusura e anche le condizioni di acquisto, ilche fa sembrare l'ea incompleto

.il motivo è che voglio essere sicuro che soddisfi queste condizioni......ordine di apertura in

il prezzo aperto più alto nel simbolo del grafico corrente e aprire 10pip sopra di esso se il suo acquisto/aprire 10pip sotto se la sua vendita.

Ho rimosso le condizioni di chiusura perché non voglio che il backtest chiuda i trade durante i test per assicurarsi che il codice sia corretto prima che altre condizioni siano messe in atto.

Una volta che la soluzione è raggiunta organizzerò il mio ea di nuovo con la condizione di chiusura appropriata che è il motivo per cui vi sto chiedendo di aiutarmi con questo problema anche se il vostro aiuto.




 

Bene, vi ho dato il codice per trovare l'ordine con il prezzo aperto più alto.

Ora si tratta semplicemente di controllare se il prezzo è almeno 10 pip sopra questo valore e, in caso affermativo, aprire un altro ordine

 

per favore GumRai: come posso mettere il ciclo nell'ea, perché il modo in cui l'ho fatto non ha funzionato nel backtest......

Come ho fatto? Ho usato highest_open_price e highest_Ticket per scrivere alcune delle mie condizioni nell'ea ma non mi ha dato il risultato desiderato nel backtest

forse mi manca qualcosa?


  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();
        }
 
Sì, ti manca di mostrare il codice. Come facciamo a sapere cosa avete/non avete fatto?