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

 
Bicus:

Che cos'è? Sta attraversando tutti gli ordini della storia, vero? È chiaro che il corpo del ciclo può essere in qualche modo limitato da date, ecc.

Quello che intendevo nella mia domanda era: c'è qualche trucco per memorizzare solo gli ultimi ordini chiusi nella storia del tester, cioè come si fa nella storia reale?

Nella storia reale funziona allo stesso modo. Vengono cercati tutti gli ordini della storia dell'account.

La storia non viene corretta. È lo stesso per questo account e può essere aggiornato solo con nuovi eventi.

 
artmedia70:

Sembra essere già noioso... È elementare, Watson:

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine")<0) ObjectCreate("MyPriceLine", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine", OBJPROP_PRICE1, Ask+20*Point);
return(0);
}

//+------------------------------------------------------------------+
Grazie per la risposta tanto attesa! Non riesco a capire, come mi aiuterà a risolvere il mio problema? Come faccio a far disegnare le linee sopra e sotto Ask e dallo stesso EA allo stesso tempo?
 
globad:
Grazie per la risposta tanto attesa! Non vedo come questo possa aiutarmi a risolvere il mio problema? Come faccio a far disegnare le linee sopra e sotto Ask e dallo stesso EA allo stesso tempo?
Date alle linee nomi diversi .
 
Vovo4ka:

Ragazzi aiuto, la condizione è la seguente: tre candele rialziste, poi c'è un "takeover" .... ho aperto una posizione per vendere allo stesso modo per comprare...ecco il codice dove si trova l'errore?

dov'è l'errore?
 
sergeev:
Qual è il problema?

non funziona in questo modo....... non apre le posizioni.... anche se vedo dalla cronologia che dovrebbe aprirsi, ma non apre le posizioni... rimane semplicemente silenzioso e senza errori
 
Come faccio a fare in modo che un trade aperto non sia più di, diciamo, uno all'ora?
 
artmedia70:
Date alle linee nomi diversi .

In qualche modo...?

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int start()
{
if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0, 0, Ask+20*Point) ;
ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0, 0, Ask-20*Point) ;
ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point);
return(0);
}
//+------------------------------------------------------------------+
 
Vovo4ka:
Ragazzi, come si fa a far aprire uno scambio non più di, diciamo, una volta all'ora?

Per esempio, così:

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

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

Chiama così:

if (SecondsAfterOpenLastPos(NULL, OP_SELL, Magic)>=(Period()*3)*60) {
   // --- код, если прошло три минуты и более с момента открытия ... 
   // ... последней позиции Sell  с магиком Magic  на текущем символе ---
   }
Spero che tu possa trasformare i minuti in ore... :)
 
globad:

In qualche modo...?

Non chiedere, controlla con un tester... :)
 
globad:

In qualche modo...?

if (ObjectFind("MyPriceLine1")<0) ObjectCreate("MyPriceLine1", OBJ_HLINE, 0,0, Ask+20*Point);
                                     ObjectSet("MyPriceLine1", OBJPROP_PRICE1, Ask+20*Point);
if (ObjectFind("MyPriceLine2")>0) ObjectCreate("MyPriceLine2", OBJ_HLINE, 0,0, Ask-20*Point);
                                     ObjectSet("MyPriceLine2", OBJPROP_PRICE1, Ask-20*Point); 
ObjectFind restituisce -1 se la linea non è ancora stata creata, cioè dovreste anche scrivere ObjectFind("MyPriceLine2")<0 nel secondo if
Motivazione: