[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 249

 
artmedia70:
Non chiedere, controlla con un tester... :)
Dopo la compilazione l'Expert Advisor funziona come prima delle modifiche. Cioè traccia una linea.
 
globad:
l'esperto traccia una linea.
se il codice dice "disegna la linea 1 se non è disegnata; disegna la linea 2 se non è disegnata" - non possono non essere disegnate:)
 
eddy: artmedia70:
se il codice dice "disegna la linea 1 se non è disegnata; disegna la linea 2 se non è disegnata" - non possono non essere disegnate:)
Tutti i ragazzi l'hanno capito! Funziona!
 

Puoi dirmi perché tutte le percentuali sono 0 nel rapporto di prova? Vale a dire, drawdown relativo, drawdown massimo, ecc.

 
artmedia70:

Per esempio, così:

Chiama così:

Spero che tu possa trasformare i minuti in ore... :)





Ho provato a scriverlo come hai detto tu, ma funziona... apre ancora le posizioni alla chiusura della precedente...((

forse non capisci cosa voglio dire, voglio che apra una posizione non prima di 1 ora dopo che la precedente è stata chiusa ... e nel tuo caso, esclude la possibilità di riaprire, ma appena si chiude, apre immediatamente la prossima

 if (SecondsAfterOpenLastPos(NULL, OP_SELL, MAGIC)>=(Period()*Interval)*60) {
        OpenSell();  
           } 
 
ragazzi aiuto: abbiamo bisogno che un trade sia aperto se è passato un certo tempo dopo che il precedente è stato chiuso....help
 
Vovo4ka:
ragazzi aiuto: ho bisogno che un accordo venga aperto se è passato un certo periodo di tempo dopo che il precedente è stato chiuso....help


per (int i=0; i<OrdersTotal(); i++)
{ se(OrderSelect(i, SELECT_BY_POS)==true)
{
TC = TimeCurrent();
OM = OrderMagicNumber();
if (TC-OM>86400 && (OrderType()==OP_SELL)){
CLOSEORDER("Sell");
}
if (TC-OM>86400 && (OrderType()==OP_BUY)){
CLOSEORDER("Buy");
}
}
}

In OrderMagicNumber() quando si apre un ordine scrive: Magic = TimeCurrent();

 
ILL:


per (int i=0; i<OrdersTotal(); i++)
{ se (OrderSelect(i, SELECT_BY_POS)==true)
{
TC = TimeCurrent();
OM = OrderMagicNumber();
if (TC-OM>86400 && (OrderType()==OP_SELL)){
CLOSEORDER("Sell");
}
if (TC-OM>86400 && (OrderType()==OP_BUY)){
CLOSEORDER("Buy");
}
}
}

In OrderMagicNumber(), quando si apre un ordine, è scritto: Magic = TimeCurrent();


Ho dimenticato =) 86400 - questo è il numero di secondi dopo i quali la posizione viene chiusa
 
ILL:

Potete dirmi perché tutte le percentuali sono 0 nel rapporto di prova? Vale a dire, drawdown relativo, drawdown massimo, ecc.


Tutto calcolato - il deposito era troppo grande)
 
Vovo4ka:


Ho provato a scriverlo come hai detto tu, funziona... apre ancora una posizione alla chiusura della precedente...(

Forse non capisci quello che voglio dire, deve aprire un trade non prima di 1 ora dopo che il precedente è stato chiuso...e nel tuo caso, esclude la possibilità di aprire un trade ripetuto, ma appena viene chiuso, il prossimo viene aperto immediatamente

E pensate al codice della funzione? Trova quattro differenze :) :

//+----------------------------------------------------------------------------+
datetime SecondsAfterCloseLastPos(string sy, int op, int mn) 
{
   datetime t;
   int      i, k=OrdersHistoryTotal();

   if (sy=="0") sy=Symbol();
   for (i=0; i<k; i++) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue; 
         if (OrderMagicNumber()!=mn)   continue; 
         if (t<OrderCloseTime()) t=OrderCloseTime();
         }
      }
  return(TimeCurrent()-t);
}
//+----------------------------------------------------------------------------+
Motivazione: