Come scoprire se il mercato è chiuso? (mql4) - pagina 4

 

E noi facciamo questo:

MqlTick Tick;
bool IsNewTick(string symbol)
  {
   MqlTick t;
   SymbolInfoTick(symbol,t);
   if(t.time>Tick.time)
     {
      SymbolInfoTick(symbol,Tick);
      return(true);
     }
   return(false);
  }

La funzione indica se c'è un nuovo tick sullo strumento.

Ottimo per OnTime. Solo per ognisimbolo, ci deve essereun Tickdiverso

 
Vasyl Nosal:

Wow, è un sacco di testo.

MarketInfo(Symbol(),MODE_TRADEALLOWED)

In questo modo, otterrete solo lo stato di autorizzazione dello strumento da scambiare. Se lo strumento è scambiato, si otterrà vero per esso qualsiasi giorno della settimana.
 
Ihor Herasko:
Questo vi darà solo lo stato di autorizzazione al trading dello strumento. Se lo strumento è negoziabile, si otterrà vero in qualsiasi giorno della settimana.
Non è vero.
 
Prima di inviare un ordine, effettuare un controllo, http://docs.mql4.com/check/istradeallowed
 
Ramiz Mavludov:
Prima di inviare un ordine, effettuare un controllo, http://docs.mql4.com/check/istradeallowed
E questo si riferisce al pulsante auto-trade.
 
Vasyl Nosal:
E questo si riferisce al pulsante auto-trade.
Non capisco. Senza l'auto-trading attivo, il tuo EA non dovrebbe fare assolutamente nulla.
 
Ramiz Mavludov:
Non capisco. Senza l'auto-trading attivo, il tuo EA non dovrebbe fare assolutamente nulla.
No. Può e, in effetti, il più delle volte, non dovrebbe fare nulla. Quando il pulsante AutoTrade è disattivato, non può lavorare solo con le funzioni di trading. Il resto dei calcoli va bene.
 
Ramiz Mavludov:
Non capisco. Se non abiliti l'auto-trading, il tuo EA non dovrebbe fare assolutamente nulla.
Ciò che è scritto sul link non ha alcuna rilevanza per la questione della chiusura del mercato.
 
Vasyl Nosal:
Non è vero.

Forse dovrebbe essere controllato di nuovo. L'ultima volta che ho lavorato su questa domanda è stato prima dell'aggiornamento di MQL4. A quel tempo tale modo indicava la possibilità di fare trading sul simbolo in generale, non in un momento specifico. Inoltre, l'aiuto è ora formulato in modo tale da non dare una risposta chiara. Aspettiamo il fine settimana e controlliamo. O forse qualcuno ha qualche azione americana nella lista dei simboli per i quali il mercato è ora chiuso. Allora possiamo controllare ora.

Per quanto riguarda IsTradeAllowed indicato da Ramiz Mavludov, è effettivamente corretto. Questa funzione permette di controllare la situazione di un mercato chiuso. E potete saperlo ora in anticipo, invece di aspettare il fine settimana:

   datetime curDay = D'2015.12.14 05:00';
   Print("Trade allowed for 2015.12.14 05:00: ", IsTradeAllowed(_Symbol, curDay));
   
   datetime sunday = D'2015.12.20 03:00';
   Print("Trade allowed for Sunday: ", IsTradeAllowed(_Symbol, sunday));

Risultato:

2015.12.16 13:37:23.662 TestData EURUSD,Daily: Trade allowed for Sunday: false
2015.12.16 13:37:23.662 TestData EURUSD,Daily: Trade allowed for 2015.12.14 05:00: true
 
Ihor Herasko:

Forse dovrebbe essere controllato di nuovo. L'ultima volta che ho lavorato a questa domanda è stato prima dell'aggiornamento di MQL4. A quel tempo tale modo indicava la possibilità di fare trading sul simbolo in generale, non in un momento specifico. Inoltre, l'aiuto è ora formulato in modo tale da non dare una risposta chiara. Aspettiamo il fine settimana e controlliamo. O forse qualcuno ha qualche azione americana nella lista dei simboli per i quali il mercato è ora chiuso. Allora possiamo controllare ora.

Per quanto riguarda IsTradeAllowed indicato da Ramiz Mavludov, è effettivamente corretto. Questa funzione permette di controllare la situazione di un mercato chiuso. E puoi saperlo ora in anticipo, invece di aspettare il fine settimana:

Risultato:

Sì, è così.

Pensavo che intendesseboolIsTradeAllowed();.

Motivazione: