[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 49

 
vovan-gogan:
Gente, aiutatemi con il codice: perché questo EA non mette una pausa su un incrocio di MA.


È questo che avete in mente?

if (OrdersTotal()<= 1)
   return;
Aprirà solo gli ordini a partire dal secondo. Nemmeno dal secondo, ma dal terzo.
 
DhP, Roman, grazie!!!!!!
 
Dimka-novitsek:
DhP, Roman, grazie!!!!!!

La pulizia ha avuto successo?
 
Ciao, potresti darmi un suggerimento? Nel seguente codice, ottengo il tempo di chiusura dell'ultimo ordine per un particolare titolo:

for(j=0; j<OrdersHistoryTotal(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
if (OrderSymbol()==Symbol())
{
datetime ctm=OrderCloseTime();
break;
}

Vorrei che il prossimo ordine su questo titolo fosse aperto solo dopo tre barre, cioè sulla quarta barra, ma non prima. Come posso fare un assegno?
 
first_may:
Ciao, potresti darmi un suggerimento? Nel seguente codice, ottengo il tempo di chiusura dell'ultimo ordine per un particolare titolo:

for(j=0; j<OrdersHistoryTotal(); j++)
se (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
se (OrderSymbol()==Symbol())
{
datetime ctm=OrderCloseTime();
pausa;
}

Voglio aprire il prossimo ordine su questo titolo dopo tre barre, cioè sulla quarta barra, ma non prima. Come posso fare un assegno?

Sei sicuro che sia l'ultimo chiuso? E se fosse il primo che incontri? Stai cadendo fuori dal giro.

 
artmedia70:

Sei sicuro che sia l'ultimo chiuso? E se fosse il primo che incontri? Stai uscendo dal giro, vero?




Sto esaminando la storia, non ci sono tutti i mandati?
 
first_may:

Sto esaminando la storia, non ci sono tutti gli ordini?

si passa attraverso la storia fino al primo ordine sul simbolo, dopo di che pausa - si esce dal ciclo.

Se avete 100 ordini, vedrete solo un
.

 
first_may:

Sto passando attraverso la storia, tutti gli ordini sono lì?

Qui. La funzione ti restituirà il numero di barra dell'ultima barra chiusa da questo EA:

int BarLastClosePose() {
datetime t;
for (int i=0; i<OrdersHistoryTotal(); i++) {
   if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) {
      if (OrderMagicNumber()!=Magic)   continue;
      if (OrderSymbol()!=Symbol())     continue;
      if (OrderType()>1)               continue;
      if (t<OrderCloseTime()) t=OrderCloseTime();
      }
   }
   return(iBarShift(Symbol(), Period(), t, True));
}

Si chiama, per esempio, int BarClose=BarLastClosePose();

La variabile BarClose memorizzerà il numero della barra dell'ultima posizione chiusa, o -1 (se non c'è nessuna barra). Magia - EA magic - scrivi la tua variabile lì.
Oppure, cancella questa linea se vuoi controllare tutti gli ordini (anche quelli che sono stati piazzati da un altro EA o che sono stati aperti manualmente da te)
E poi puoi controllare quando il prossimo ordine può essere aperto (dopo quante barre).

 
In generale, l'obiettivo è quello di aprire un ordine solo dopo almeno tre barre, cioè sulla quarta barra, ma non prima, dopo l'ultimo ordine chiuso sul titolo. Per fare questo, vado attraverso la storia e se vedo un ordine su questo titolo dalla storia, lo considero chiuso e ultimo. Mi sbaglio a pensare che gli ordini saranno selezionati in ordine cronologico?
 
first_may:
In generale, l'obiettivo è quello di aprire un ordine solo dopo almeno tre barre, cioè sulla quarta barra, ma non prima, dopo l'ultimo ordine chiuso sul titolo. Per fare questo, vado attraverso la storia e se vedo un ordine su questo titolo dalla storia, lo considero chiuso e ultimo. Mi sbaglio a pensare che gli ordini saranno selezionati in ordine cronologico?
Ti sbagli a non voler studiare l'esempio di cui sopra
Motivazione: