[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 46

 

Se conoscete la funzione per calcolare il saldo totale delle perdite delle posizioni CHIUSE per SL e il saldo totale dei trade redditizi APERTI, scrivete per favore.

Il calcolo del saldo delle perdite deve partire dall'ultimo valore massimo del deposito

 

Buon pomeriggio!!! La mia funzione è imprecare con quaranta parolacce - evidentemente non ne sapevo molto, e ho anche dimenticato come inventare

void  SELL { double Price1_SELL= (Bid-Dist*Point) ; double TP1_SELL=Price1_SELL-TP*Point; double SL1_SELL=Price1_SELL+SL*Point;
   
   double  Price2_SELL= (Price1_SELL -Dist*Point) ;double   TP2_SELL=Price2_SELL-TP*Point;double   SL2_SELL=Price2_SELL+SL*Point;
   
   double  Price3_SELL=(Price2_SELL -Dist*Point) ; double  TP3_SELL=Price3_SELL-TP*Point; double  SL3_SELL=Price3_SELL+SL*Point;
   
   double  Price4_SELL= (Price3_SELL -Dist*Point) ; double  TP4_SELL=Price4_SELL-TP*Point; double  SL4_SELL=Price4_SELL+SL*Point;
   
   double  Price5_SELL= (Price4_SELL -Dist*Point) ;double   TP5_SELL=Price5_SELL-TP*Point; double  SL5_SELL=Price5_SELL+SL*Point;}
 
Dimka-novitsek:

Buon pomeriggio!!! La mia funzione è imprecare con quaranta parolacce - evidentemente non ne sapevo molto, e ho anche dimenticato come inventare


Diman! Buona notte! Hai bisogno di riposo, non per una funzione, ma per qualche stronzata che hai scritto...

 
Allora ho detto che non mi ricordo. Ho intenzione di finirlo. Ordini. Cosa c'è di sbagliato nel compilatore?
 
Dimka-novitsek:
Ti dico che non mi ricordo. Lo scriverò. Ordini. Cosa non piace al compilatore?

Non è così che si scrivono le f-i. Leggere il libro di testo.

 
Grazie!!! Lettura.
 
А. Le graffette non erano sufficienti per lei!
 

Ciao, il mio Expert Advisor mette degli stop in sospeso. Quando controllo nel tester solo SELL_STOP funziona, invece di BUY_STOP appare un errore Order Send error/ Error opening Buy order:130.

extern int TrailingStop=30;
//-----------------------------------------------------------------------------------------------+
for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
              }
           }
         else // go to short position
           {
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
              }
           }
        }
     }

   
   return(0);

Aiutami a trovare la ragione!

 

La ragione è la mancanza di logica!

for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
Come capire? Se CELLSTOP, cosa c'entra BAI?
 
Twilight:

Come faccio a sapere se gli ultimi ordini 1-2-3 sono stati perdenti?

E in generale, come faccio a sapere qual è stato l'ultimo ordine?


Recentemente ho scritto una funzione che, nel caso dell'ultimo ordine perdente, restituisce il tipo di questo ordine. In altre parole, se fHistory() == 0, l'ultimo ordine perdente era Comprare, fHistory() == 1, l'ultimo ordine perdente era Vendere. Se vogliamo tracciare gli ordini redditizi, allora cambiate il segno nella linea in questo modo: if(OrderProfit() > 0 ).

//+----------------------------------------------------------------------------+
// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордера
int fHistory(){
  for(int i=OrdersHistoryTotal(); i >= 0; i--){              // Выборка в истории
     if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){   // Если есть следующий в истории
        if(OrderMagicNumber()!=magN) continue;               // Ордера не нашего эксперта
        if(OrderProfit() < 0 ) return (OrderType());         // Если убыток по посл.ордеру вернем тип ордера
     }
  }
  return(-1);
}

La variabile magN è l'ordine magico dichiarato globalmente.