Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 552

 
VasiliKolchanov:
Ihor grazie per la tua risposta, solo una domanda, non sarà un ritardo, cioè gli avvisi saranno accumulati con ogni tick durante la pausa, e alla fine del tempo EA mi invierà comunque tutti (tutti accumulati) ? Può sembrare ridicolo, ma scusate il novellino - sto imparando.

Non lo farà, perché non arriverà al punto di far scattare un allarme. Riceverai un avviso e poi, dopo un periodo di tempo stabilito, un altro avviso e così via.

 
Vitaly Muzichenko:

In realtà dovrebbe essere il contrario)

Grazie!!!

 

Spiegate cosa c'è di sbagliato qui. Ho impostato un ordine di apertura su una suddivisione giornaliera per candele giornaliere. Cioè, alle 00:00, una nuova candela giornaliera si apre dentro la candela precedente.



doppio open1, close1, open, close;

open1=iHigh(NULL,PERIOD_D1,1);

close1=iLow(NULL,PERIOD_D1,1);

open=iHigh(NULL,PERIOD_D1,0);

close=iLow(NULL,PERIOD_D1,0);


if(O(m)==falso){ //se non c'è un ordine

se(open1<Ask){

b(......);} //ordine aperto


se(close1>Ask){

s(.......);}}/ordine aperto



La volta di Mosca, l'ordine si apre all'interno della candela precedente a 00.03, stavo guardando di notte a 00.03 mentre si formava una nuova candela e ha ancora aperto l'ordine. È come se l'EA non vedesse una nuova candela giornaliera.

Anche se ho fatto la stessa identica cosa sulla ripartizione oraria, funziona perfettamente.

Se abilito il mio EA alle 06.00, funzionerà come dovrebbe, ma non mi piacerà il fatto che le rotture diurne avvengono prima delle 06.00 e gli ordini si apriranno in posti sbagliati dopo le 06.00. Il problema è nella differenza di tempo tra la candela giornaliera e l'ora di Mosca. DC grande capitale


Aiuto! Per favore!

 
Evgeniy Oshurkevich : Hai risposto alla tua stessa domanda. Le candele sono disegnate sull'ora del server. E quello locale potrebbe non coincidere con esso.

Quindi lasciate il gufo durante la notte, se è scritto normalmente, vi darà una posizione. Oppure calcola le tue candele sull'intervallo di tempo che ti interessa.

 
Ihor Herasko:

Non lo farà, perché non arriverà al punto di far scattare un allarme. Riceverai un avviso e poi, dopo un periodo di tempo stabilito, un altro

Grazie!

 

Si prega di consigliare come trattare una situazione in cui un ordine aperto rinviato a domani, automaticamente con l'apertura di una nuova sessione ha portato profitto sui parametri specificati? L'unica domanda è: come faccio a riconoscere una nuova sessione? La nuova funzione di rilevamento delle barre non funziona nella mia situazione. Se so come restituire separatamente l'anno, il mese e il giorno di apertura dell'ordine, risolverò il problema in questo caso, non so come fare tutto il resto, e per favore consigliate in quale formato la funzione restituisce il valore OrderOpenTime (anno, mese, giorno, ora : min : sec O ora : min : sec)?

 
VasiliKolchanov:

Si prega di consigliare come trattare una situazione in cui un ordine aperto rinviato a domani, automaticamente con l'apertura di una nuova sessione ha portato profitto sui parametri specificati? L'unica domanda è: come faccio a riconoscere una nuova sessione? La funzione di riconoscimento di una nuova barra non funziona nella mia situazione. Il resto ho un'idea approssimativa di come fare.

Ovviamente - la funzione di riconoscimento di una nuova sessione è necessaria)

 
VasiliKolchanov:

Forse qualcuno sa come restituire separatamente l'anno, il mese e il giorno di apertura di questo ordine, allora il problema sarebbe risolto. Non so come fare il resto. E non so se mi aiuterà o no suggerire in quale formato restituire il valore della funzione OrderOpenTime (anno.mese.giorno.ora : min : sec O ora : min : sec) ?

Qui ho abbozzato e testato uno script che controllerà la storia degli ordini chiusi (non ho ordini di mercato al momento, potete rifarlo voi stessi) e troverà l'ultimo ordine chiuso e lo registrerà:

#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
   int i,otype,k=OrdersHistoryTotal();
   string sy=Symbol();
   datetime oclose,t=0;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         otype    = OrderType();
         oclose   = OrderCloseTime();
         if(OrderSymbol()==sy)
           {
            if(otype==OP_BUY || otype==OP_SELL)
              {
               if(t<oclose)
                 {
                  t=oclose;
                 }
              }
           }
        }
     }
   Print("Последний ордер закрыт: ",TimeDay(t)," день, ",TimeHour(t),"час, ",TimeMinute(t)," минуты");
  }
//+------------------------------------------------------------------+

risultato:

21:12:07.558 test EURUSD,H1: Ultimo ordine chiuso: giorno 27, 21h, 17 min

 
Taras Slobodyanik:

ovviamente - è necessaria una nuova funzione di riconoscimento della sessione)

Che aspetto ha Taras?
 
Igor Makanu:

Ho abbozzato e testato uno script che controllerà la storia degli ordini chiusi (non ho ordini di mercato al momento, potete rifarlo voi stessi) e troverà l'ultimo ordine chiuso e registrerà le informazioni su di esso:

risultato:

21:12:07.558 test EURUSD,H1: Ultimo ordine chiuso: giorno 27, 21h, 17 min

Motivazione: