ordini aperti con gap di 10pip - pagina 3

 
    &&  OrderMagicNumber()  == 0           // my magic number

0 è il numero magico di default, quindi la vostra condizione non escluderà nessuna compravendita aperta manualmente

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots

Qui state memorizzando i valori dell'ultimo ordine selezionato. Se volete memorizzare i valori dell'ultimoTicket, dovrete riselezionarlo.

Perché fai un ciclo di ordini per trovare l'ultimo ordine e non fai nulla con il risultato?

I tuoi 2 blocchi di codice sono totalmente indipendenti l'uno dall'altro

 
GumRai:

0 è il numero magico di default, quindi la vostra condizione non escluderà nessuna operazione aperta manualmente

Qui state memorizzando i valori dell'ultimo ordine selezionato. Se volete memorizzare i valori dell'ultimoTicket, dovrete riselezionarlo.

Perché fai un ciclo di ordini per trovare l'ultimo ordine e non fai nulla con il risultato?

I tuoi 2 blocchi di codice sono totalmente indipendenti l'uno dall'altro




GumRai: grazie per la tua risposta, secondo le tue indicazioni

OrderMagicNumber() == 0 ------------here ha messo 0 perché stavo testando il mio codice e l'ho postato senza il valore numero, grazie per i consigli e le correzioni

OrderMagicNumber() == 1234

lastTicket l'ho messo al mio ordersend


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

if(lastTicket>0)
{
bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
}



ma non so se ho capito bene perché tutto quello che voglio che il mio ea faccia è piazzare più ordini di vendita, quindi voglio che l'ea ottenga il prezzo aperto più alto nel simbolo del grafico corrente e apra 10pip sopra di esso. e qualsiasi commercio sotto l'ultimo ordine corrente lo rifiuti.

Quindi, per ottenere ciò che voglio, faccio un passo alla volta. Prima cerco di ottenere l'ultimo ordine aperto, seguendo il modello che mi ha dato WHRoeder.

così il mio ciclo attraverso l'ordine non è solo per impostare 1 commercio aperto ma più commercio aperto così che è perché voglio ottenere l'ultimo biglietto aperto high.please GumRai se sono sbagliato nel mio ordine selezionato mi ha messo attraverso grazie per disposti ad aiutare.



// Orders accounting 

{
     datetime lastTime  = 0;
    int      lastTicket = -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
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
 
}

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots
   
////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------- 5 ------------------------------------//
/*this is the poinnt where main formular or trading system EA-MA is based*/
//---------------------------------------------------------------------------
// Trading criteria
       
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;
     }


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

         if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }
 

Per favore cerca di non includere lunghe linee di codice nei tuoi post, li rende difficili da leggere

   if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }

Non c'è nulla che ti impedisca di usare 2 linee come sopra

 
dan100:

WHRoeder questo codice è tutto nel mio calcolo di esecuzione degli ordini per favore chiedo di aiutarmi a modificare i miei errori e mi ha messo attraverso. grazie per la vostra volontà di aiutare



dan100:

WHRoeder questo codice è tutto nel mio calcolo di esecuzione dell'ordine prego chiedo di aiutarmi a modificare i miei errori e mi ha messo attraverso. grazie per la vostra volontà di aiutare






GumRai grazie per le tue correzioni. ma ho ottenuto sopra il codice giusto

 
dan100: Per favore, sto ancora aspettando la vostra assistenza.WHRoeder
Aspetterete a lungo.
  1. Ti ho detto cosa devi fare e non l'hai fatto.
  2. Ti ho ricordato qui che ancora non l'hai fatto.
  3. E ora lo chiedi di nuovo ma ancora non l'hai fatto.
 
WHRoeder:
dan100: per favore, sto ancora aspettando la tua assistenza.WHRoeder
Aspetterete a lungo.
  1. Ti ho detto cosa devi fare, non l'hai fatto.
  2. Ti ho ricordato qui che ancora non l'hai fatto.
  3. E ora chiedete di nuovo ma ancora non l'ho fatto.



WHRoeder non ho più capito questa è l'intera parte logica del mio ea e anche dove la mia conoscenza del codice è per ora.non so cosa presentare di nuovo, dopo tutto

Questo è il motivo per cui sono qui in cerca di aiuto. ma se puoi permettermi di inviare l'intero codice dell'ea a te starò bene, per favore, per favore WHRoeder aiutami, so che puoi farlo.

approvazione e link per inviare i codici ea intero.


inoltre formalmente prima mi hai dato questa formula......

  1. Trova il trade aperto con il prezzo aperto più alto.
  2. Se il mercato non ha raggiunto il prezzo + 10 pips, ritorna
  3. aprire un nuovo ordine.


Ho testato l'ultimo prezzo solo con la media mobile che incrocia il prezzo ASK o il prezzo BID e poi ho scoperto che a volte gli ordini aperti sono inferiori al prezzo massimo del grafico corrente, quindi è questo che voglio correggere

Non ho codice di test alto solo MA e Ask e 10point così nessun codice di nuovo uso nel test.

 
dan100:

GumRai grazie per le tue correzioni. ma ho capito bene il codice sopra

In primo luogo, non è chiaro cosa stai cercando di fare

Tu dici

"ma non so se ho capito bene, perché tutto quello che voglio che il mio ea faccia è piazzare più ordini di vendita, quindi voglio che l'ea ottenga il prezzo aperto più alto nel simbolo del grafico corrente e apra 10pip al di sopra di esso, e qualsiasi scambio al di sotto dell'ultimo ordine corrente lo rifiuti.

Quindi, per ottenere ciò che voglio, faccio un passo alla volta. Prima cerco di ottenere l'ultimo ordine aperto, seguendo il modello chemi ha dato WHRoeder".

Quindi cos'è che vuoi trovare?

L'ordine con il prezzo aperto più alto?

o

L'ordine che è stato aperto più recentemente?

Come può qualcuno aiutarti se non sei in grado di descrivere ciò che vuoi?

     datetime lastTime  = 0;
    int      lastTicket = -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
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }

Questo codice trova l'ultimo ordine aperto, ma non memorizza il prezzo da nessuna parte

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

Qui dai un valore a Opn_S, ma non ci fai niente

   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

 
GumRai grazie ancora per le tue indicazioni e il riassunto. quello che voglio trovare è

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

per favore aiutatemi con questo

 
dan100:
GumRai grazie ancora per le tue indicazioni e il riassunto. quello che voglio trovare è

prezzo aperto più alto nel simbolo del grafico corrente

per favore aiutatemi con questo

Perché hai bisogno di aiuto con questo?

Se puoi scrivere il codice per trovare l'ordine con l'ultimo (più alto) OrderOpenTime, dovrebbe essere semplice trovare l'ordine con il più alto OrderOpenPrice.

È una semplice sostituzione.

 
GumRai:

Perché hai bisogno di aiuto per questo?

Se puoi scrivere il codice per trovare l'ordine con l'ultimo (più alto) OrderOpenTime, dovrebbe essere semplice trovare l'ordine con il più alto OrderOpenPrice.

È una semplice sostituzione.



Sì, scrivo i miei codici e alcuni li ricerco, ma quando non vedo il risultato desiderato cerco delle soluzioni, anche se so che sono ancora a metà strada per gli errori

a volte, non importa quanto semplici o piccoli siano, possono essere difficili da risolvere. per favore GumRai aiutami, te ne sarò grato.

Motivazione: