Fractal Break Out-Stuck - pagina 2

 

Al momento sto ricevendo l'errore della parentesi finale "}".


Ma ho ricontrollato le funzioni e sono tutte elaborate correttamente.


Ho provato in un altro modo e ho continuato ad ottenere questo stesso errore.

 
ZacharyRC:

Attualmente sto ottenendo l'errore della parentesi finale "}".


Ma ho ricontrollato le funzioni e sono tutte elaborate correttamente.


Ho provato in un altro modo e ho continuato ad ottenere questo stesso errore.


Ho trovato l'errore, non importa!
 
ZacharyRC:

Ciao deVries:


Mi sto imbattendo in problemi nel mio codice finale, con il tentativo di mettere uno stop loss modificato a pareggio dopo così tanti pips.


Vedi qualche errore evidente?

Devi rileggere questo:cosa sono i valori di ritorno delle funzioni? Come si usano? Non vuoi sapere cosa succede nella tua OrderModify()? Cosa succede se la tua OrderSelect() fallisce?

 
if(OrdersTotal()>1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==(OP_BUY)&&(Move.BE))
{

Questo non è il modo giusto per ottenere i trade del tuo EA

non puoi essere sicuro che la posizione 0 sia del tuo EA che devi gestire

usare sempre un ciclo per ottenere tutte le compravendite aperte e poi selezionare in questo modo si ha

il tuo Symbol() che l'EA sta negoziando e il MAGICNUMBER che hai dato con il tuo EA

.

Il mio modo è come

 

 for(i = OrdersTotal()-1; i >= 0 ; i--)         //always counting down checking trades
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;     // if false we abort the loop
     if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;   //if selected trade not symbol or magicnumber next one
 
RaptorUK:

Devi rileggere questo:cosa sono i valori di ritorno delle funzioni? Come si usano? Non vuoi sapere cosa succede alla tua OrderModify()? Cosa succede se la tua OrderSelect() fallisce?


Sicuramente rileggerò stasera, non ho ancora una comprensione completa.
deVries:

Questo non è il modo giusto per ottenere i trade del tuo EA

non puoi essere sicuro che la posizione 0 sia del tuo EA che devi gestire

utilizzare sempre un ciclo per ottenere tutte le compravendite aperte e poi selezionare in questo modo si ha

il tuo Symbol() che l'EA sta negoziando e il MAGICNUMBER che hai dato con il tuo EA

.

Il mio modo è come

Stavo usando un ciclo for() l'ultima volta e ho avuto un paio di errori e ci ho rinunciato. Proverò di nuovo e rileggerò il testo.


Grazie signori.

 
RaptorUK:

Devi rileggere questo:cosa sono i valori di ritorno delle funzioni? Come si usano? Non vuoi sapere cosa succede alla tua OrderModify()? Cosa succede se la tua OrderSelect() fallisce?


Mi sento un po' lento oggi! Dopo aver lasciato che questo affondi, mi rendo conto che il linguaggio MQL4 può essere il miglior compagno per trovare gli errori, non la bacheca.



TY RaptorUK!

 
ZacharyRC:

Mi sento un po' lento oggi! Dopo aver lasciato che questo affondi, mi rendo conto che il linguaggio MQL4 può essere il miglior compagno per trovare gli errori, non la bacheca.

Esattamente, 100% corretto :-)
 
deVries:

Questo non è il modo giusto per ottenere i trade del tuo EA

non puoi essere sicuro che la posizione 0 sia del tuo EA che devi gestire

usare sempre un ciclo per ottenere tutte le compravendite aperte e poi selezionare in questo modo si ha

il tuo Symbol() che l'EA sta negoziando e il MAGICNUMBER che hai dato con il tuo EA

.

Il mio modo è come

Ahhhh vedo, questo mi permette di scorrere i miei trade e dire quale è quale e abbinare i Magic Numbers. Il loop è di gran lunga il modo migliore.

 
ZacharyRC:

Ahhhh capisco, questo mi permette di scorrere i miei trade e dire quali sono e quali corrispondono ai Magic Numbers. Illoop è di gran lunga il modo migliore.

Più lo userai e più trucchi imparerai a fare con esso....
 

Ho ancora delle difficoltà. Ho condotto degli errori per scoprirne il motivo.


Il giornale ha segnalato:

1) Errore 4051=Parametro errato

2) Biglietto non valido per modificare l'ordine

//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;


if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);
if(OrderType()==OP_BUY)
{

 if(Move.BE && StopLoss > 0) 
 {
   if(Bid - OrderOpenPrice() >= Point * StopLoss)
     {
       if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) 
        {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
 }
  }
   }
    }
 else{
 
    if(Move.BE && StopLoss > 0) {
               if(OrderOpenPrice() - Ask >= Point * StopLoss)
                {
                  if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
                   {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
}
 }
  }
   }
    }