Trailing Stops e Trailing Profit - pagina 7

 
Arav007:

Ecco qui.

Saluti


Vedi https://www.mql5.com/en/forum/150195/page6#924239 per un modo migliore
 

L'ho visto e l'ho anche testato.

Inoltre non risolve il problema dello'Stop Loss' e del 'Least Profit Locking' di cui ho bisogno per rendere questo EA completo.

 

Questo è l'inizio del tuo codice

if(OrdersTotal()>0)
   {//----------------------------------------------------------------->1
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {//--------------------------------------------------------------->2    
     if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
     if(OrderSymbol() == Symbol() && OrderMagicNumber() ==Magic_Number_1)
       {
       if (OrderProfit()<0.03)
         {
         if(OrderType()==OP_BUY)
           {  
           bOrderClosed = closeBuyOrder(iOrderType_Buy); //Closing Buy order    
           if(bOrderClosed)
             {
             Print("Buy Order 1 Closed");
             }
            else
               {
               iLastError = GetLastError();                                       
               }//end else if(bOrderClosed)
           }//end if(OrderType()==OP_BUY)
       if(OrderType()==OP_SELL)
          {  
          bOrderClosed = closeSellOrder(iOrderType_Sell); //Closing Sell order
          if(bOrderClosed)
            {
            Print("Sell Order 1 Closed");
            }
           else
              {
              iLastError = GetLastError();
              }//end else if(bOrderClosed)
          }//end if(OrderType()==OP_SELL)
        }// if (OrderProfit()<0.03)                          
      }// if(OrderSymbol() == Symbol() && OrderMagicNumber() ==Magic_Number_1)

spiega cosa sta facendo questo codice e

perché ha fatto questo.... e quando succede

cosa vuoi che faccia questo codice

conosci iLastError se c'è un errore?

 

Oh, grazie. Mi hai aperto gli occhi.

Sta chiudendo tutti gli ordini aperti ogni volta che viene eseguito perché la condizione è

if (OrderProfit()<0.03 )

Quindi chiuderà naturalmente tutti gli ordini appena aperti.

Il mio obiettivo era che se un'operazione va in profitto, diciamo $0.1, e poi se quell'operazione torna indietro, verrà chiusa con il profitto minimo, diciamo $0.01.

Probabilmente non è possibile con la funzione'OrderProfit()'.

Dovrei usare il trailing stop.

 
Arav007:

L'ho visto e l'ho anche testato.

Inoltre non risolve il problema con 'Stop Loss' e 'Least Profit Locking' di cui ho solo bisogno per rendere questo EA completo.


Cosa volevi codificare?

che problema c'è con lo stoploss

al pareggio hai il blocco del minimo profitto per i primi due trade come volevi, ..... ho pensato

 
deVries:


Cosa volevi codificare?

che problema c'è con lo stoploss

a pareggio si ha un minimo di blocco del profitto per i primi due trade come volevi tu, ..... ho pensato


Per favore perdonatemi.

Non ho potuto impostare correttamente i parametri.

Sì, è così! Grazie mille.

Lo SL si è spostato per i primi due trade e anche il TP.

Ho usato queste impostazioni ora:

extern double BreakEven =5;

extern double BreakEvenSL =1;

extern double TrailingStop =10;

extern double TrailingStep =3;

Solo per chiarire il concetto:

Se il mercato si muove di 5 pip in profitto dal prezzo aperto, lo Stop Loss sarà impostato a 1 pip di profitto. Poi inizierà la funzione di Trailing Stop.

Con un Trailing Stop di 10, se il mercato si muove di 10 pip in profitto dal prezzo di apertura, lo Stop Loss diventerà a 3 pip in profitto, giusto?

E poi se il mercato raggiunge altri 10 pip, cioè 20 pip in totale, lo SL sarà a 6 pip in profitto?

Saluti