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

 

Non ho ancora capito come ottenere informazioni adeguate da DayOfWeek. Dà il valore corretto il giorno in cui il robot parte e in alcuni altri casi (a volte). Mi sembra che dia un valore corretto quando apro gli ordini. Se non aprite nulla, vi darà il tempo.

Ho risolto il problema in questo modo:

...
int realDay=DayOfWeek();
int curHour=TimeHour(TimeLocal());
   while(!IsStopped())
      {
      if (TimeHour(TimeLocal())<curHour) realDay++; 
      curHour=TimeHour(TimeLocal());
      if (realDay==7) realDay=0;        
...     

Ma non l'ho ancora testato )))) Dovrebbe funzionare.

 
winsight:

Non ho ancora capito come ottenere informazioni adeguate da "DayOfWeek". Dà il valore corretto il giorno in cui il robot parte e in alcuni altri casi (a volte). Mi sembra che dia un valore corretto quando apro gli ordini. Se non aprite nulla, vi darà il tempo.

Ho risolto il problema in questo modo:

Ma non l'ho ancora testato ))) Dovrebbe funzionare.

È più facile: usa TimeDayOfWeek:

int dayOfWeek = TimeDayOfWeek(TimeCurrent());
 
Ihor Herasko:
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.

Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED));

falso

 
Vasyl Nosal:

Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED));

falso

La mia versione è la seguente:

   Alert("Trade allowed by MarketInfo: ", bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)));
   Alert("Trade allowed by IsTradeAllowed: ", bool(IsTradeAllowed()));
   Alert("Trade allowed by IsTradeAllowed 2-nd version: ", bool(IsTradeAllowed(Symbol(), TimeLocal())));

Risultato:

2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed: true
2015.12.20 16:41:21.196 Test EURUSD,H1: Alert: Trade allowed by MarketInfo: true

Sul mio computer l'ora è GMT+2.

Per questo non capisco come hai fatto a diventare falso nel primo caso. Forse, avete preso uno strumento che non è scambiato in linea di principio.

Le conclusioni sono le seguenti:

  1. La prima e la seconda opzione sono essenzialmente indentiche. Indicano solo il fatto che l'autotrading per lo strumento è abilitato e c'è un flusso commerciale libero.
  2. La terza variante è proprio quello di cui abbiamo bisogno. Ti permette di conoscere il permesso di fare trading su uno strumento dato il suo programma di lavoro.
 
Ihor Herasko:

La mia versione è questa:

Risultato:

Sul mio computer l'ora è GMT+2.

Non è quindi chiaro come siate riusciti a diventare falsi sulla prima opzione. Forse, avete preso uno strumento che non è scambiato in linea di principio.

Le conclusioni sono le seguenti:

  1. La prima e la seconda opzione sono essenzialmente indentiche. Indicano solo il fatto che l'autotrading per lo strumento è abilitato e c'è un flusso commerciale libero.
  2. La terza variante è proprio quello di cui abbiamo bisogno. Permette di conoscere il permesso di fare trading su uno strumento in relazione al suo programma di lavoro.
EURUSD fxOpen
 
Vasyl Nosal:
EURUSD fxOpen

Infatti, questo broker ha il risultato dello script di cui sopra:

2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by MarketInfo: false

Ho iniziato a controllare altri broker. Broker G**X:

2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:18:14.339 Test EURUSD,M314: Alert: Trade allowed by MarketInfo: true

Broker A***i:

2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed: true
2015.12.20 17:20:40.372 Test EURUSD,M15: Alert: Trade allowed by MarketInfo: true

Broker I***a F***x:

2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false
2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed: false
2015.12.20 17:21:38.663 test GBPUSD,H1: Alert: Trade allowed by MarketInfo: false

Il mio primo test oggi è stato su A*****l M*****s.

Così, otteniamo che non tutti i broker hanno correttamente funzionante IsTradeAllowed (prima versione) e MODE_TRADEALLOWED. E d'altra parte, la seconda versione di IsTradeAllowed funziona correttamente ovunque. Quindi, è meglio usarlo.

 
Ihor Herasko:

Infatti, questo broker ha il risultato dello script di cui sopra:

Ho iniziato a controllare altri broker. Broker G**X:

Broker A***i:

Broker I***a F***x:

Il mio primo test oggi è stato su A*****l M*****s.

Così, otteniamo che non tutti i broker hanno correttamente funzionante IsTradeAllowed (prima versione) e MODE_TRADEALLOWED. E d'altra parte, la seconda versione di IsTradeAllowed funziona correttamente ovunque. Quindi, è meglio usarlo.

E oggi

IsTradeAllowed(Symbol(), TimeCurrent())

mostra vigliaccheria

A proposito, perché hai il tempo locale?

 
Vasyl Nosal:

E oggi

IsTradeAllowed(Symbol(), TimeCurrent())

mostra vigliaccheria

A proposito, perché hai il tempo locale?

Oggi è un giorno di festa, quindi è difficile.
 
Alexey Busygin:
È un fine settimana di vacanza, quindi è difficile.
Il fatto è che nessuna delle funzioni di riconoscimento funziona al 100%.
 
Vasyl Nosal:
Il fatto è che nessuna delle funzioni di riconoscimento funziona al 100%.
In alcuni casi, la risposta deve venire dal server DC! E i DC non se ne preoccupano molto, ecco perché in qualche modo funziona.
Motivazione: