Je n'ai toujours pas trouvé comment obtenir des informations adéquates à partir de "DayOfWeek". Il donne la valeur correcte le jour où le robot démarre et dans certains autres cas (parfois). Il me semble qu'il donne une valeur correcte lorsque j'ouvre des ordres. Si vous n'ouvrez rien, il vous donnera la météo.
J'ai résolu le problème de cette façon :
...
int realDay=DayOfWeek();
int curHour=TimeHour(TimeLocal());
while(!IsStopped())
{
if (TimeHour(TimeLocal())<curHour) realDay++;
curHour=TimeHour(TimeLocal());
if (realDay==7) realDay=0;
...
Mais je ne l'ai pas encore testé )))). Cela devrait fonctionner.
Je n'ai toujours pas trouvé comment obtenir des informations adéquates à partir de "DayOfWeek". Il donne la valeur correcte le jour où le robot démarre et dans certains autres cas (parfois). Il me semble qu'il donne une valeur correcte lorsque j'ouvre des ordres. Si vous n'ouvrez rien, il vous donnera la météo.
J'ai résolu le problème de cette façon :
Mais je ne l'ai pas encore testé ;)) Cela devrait fonctionner.
Ihor Herasko: De cette façon, vous n'obtiendrez que le statut d'autorisation de l'instrument à négocier. Si l'instrument est négocié, vous en obtiendrez la vérité tous les jours de la semaine.
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())));
Résultat :
2015.12.2016:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2016:41:21.196 Test EURUSD,H1: Alert: Trade allowed by IsTradeAllowed: true2015.12.2016:41:21.196 Test EURUSD,H1: Alert: Trade allowed by MarketInfo: true
Sur mon ordinateur, l'heure est GMT+2.
C'est pourquoi je ne comprends pas comment vous avez réussi à vous tromper dans le premier cas. Peut-être avez-vous pris un instrument qui n'est pas négocié en principe.
Les conclusions sont les suivantes :
La première et la deuxième option sont essentiellement identiques. Ils indiquent seulement que la négociation automatique pour l'instrument est activée et qu'il existe un flux commercial libre.
La troisième variante est exactement ce dont nous avons besoin. Il vous permet de connaître l'autorisation de négocier sur un instrument compte tenu de son calendrier de travail.
Il n'est donc pas clair comment vous avez réussi à vous tromper sur la première option. Peut-être avez-vous pris un instrument qui n'est pas négocié en principe.
Les conclusions sont les suivantes :
La première et la deuxième option sont essentiellement identiques. Ils indiquent seulement que la négociation automatique pour l'instrument est activée et qu'il existe un flux commercial libre.
La troisième variante est exactement ce dont nous avons besoin. Il vous permet de connaître l'autorisation de négocier sur un instrument par rapport à son calendrier de travail.
En effet, ce courtier a le résultat du script ci-dessus :
2015.12.2017:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2017:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by IsTradeAllowed: false2015.12.2017:19:18.685 Test GBPUSD,H4: Alert: Trade allowed by MarketInfo: false
J'ai commencé à vérifier d'autres courtiers. Broker G**X :
2015.12.2017:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2017:18:14.339 Test EURUSD,M314: Alert: Trade allowed by IsTradeAllowed: false2015.12.2017:18:14.339 Test EURUSD,M314: Alert: Trade allowed by MarketInfo: true
Courtier A***i :
2015.12.2017:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2017:20:40.372 Test EURUSD,M15: Alert: Trade allowed by IsTradeAllowed: true2015.12.2017:20:40.372 Test EURUSD,M15: Alert: Trade allowed by MarketInfo: true
Broker I***a F***x :
2015.12.2017:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed 2-nd version: false2015.12.2017:21:38.663 test GBPUSD,H1: Alert: Trade allowed by IsTradeAllowed: false2015.12.2017:21:38.663 test GBPUSD,H1: Alert: Trade allowed by MarketInfo: false
Mon premier test aujourd'hui était sur A*****l M*****s.
Ainsi, nous obtenons que tous les courtiers n'ont pas un fonctionnement correct de IsTradeAllowed (première version) et MODE_TRADEALLOWED. Et d'autre part, la deuxième version de IsTradeAllowed fonctionne correctement partout. Il est donc préférable de l'utiliser.
En effet, ce courtier a le résultat du script ci-dessus :
J'ai commencé à vérifier d'autres courtiers. Broker G**X :
Courtier A***i :
Broker I***a F***x :
Mon premier test aujourd'hui était sur A*****l M*****s.
Ainsi, nous obtenons que tous les courtiers n'ont pas un fonctionnement correct de IsTradeAllowed (première version) et MODE_TRADEALLOWED. Et d'autre part, la deuxième version de IsTradeAllowed fonctionne correctement partout. Il est donc préférable de l'utiliser.
Je n'ai toujours pas trouvé comment obtenir des informations adéquates à partir de "DayOfWeek". Il donne la valeur correcte le jour où le robot démarre et dans certains autres cas (parfois). Il me semble qu'il donne une valeur correcte lorsque j'ouvre des ordres. Si vous n'ouvrez rien, il vous donnera la météo.
J'ai résolu le problème de cette façon :
Mais je ne l'ai pas encore testé )))). Cela devrait fonctionner.
Je n'ai toujours pas trouvé comment obtenir des informations adéquates à partir de "DayOfWeek". Il donne la valeur correcte le jour où le robot démarre et dans certains autres cas (parfois). Il me semble qu'il donne une valeur correcte lorsque j'ouvre des ordres. Si vous n'ouvrez rien, il vous donnera la météo.
J'ai résolu le problème de cette façon :
Mais je ne l'ai pas encore testé ;)) Cela devrait fonctionner.
C'est plus facile - utilisez TimeDayOfWeek :
De cette façon, vous n'obtiendrez que le statut d'autorisation de l'instrument à négocier. Si l'instrument est négocié, vous en obtiendrez la vérité tous les jours de la semaine.
Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)) ;
faux
Alert(bool(MarketInfo(Symbol(),MODE_TRADEALLOWED)) ;
faux
Ma version est la suivante :
Résultat :
Sur mon ordinateur, l'heure est GMT+2.
C'est pourquoi je ne comprends pas comment vous avez réussi à vous tromper dans le premier cas. Peut-être avez-vous pris un instrument qui n'est pas négocié en principe.
Les conclusions sont les suivantes :
Ma version est la suivante :
Résultat :
Sur mon ordinateur, l'heure est GMT+2.
Il n'est donc pas clair comment vous avez réussi à vous tromper sur la première option. Peut-être avez-vous pris un instrument qui n'est pas négocié en principe.
Les conclusions sont les suivantes :
EURUSD fxOpen
En effet, ce courtier a le résultat du script ci-dessus :
J'ai commencé à vérifier d'autres courtiers. Broker G**X :
Courtier A***i :
Broker I***a F***x :
Mon premier test aujourd'hui était sur A*****l M*****s.
Ainsi, nous obtenons que tous les courtiers n'ont pas un fonctionnement correct de IsTradeAllowed (première version) et MODE_TRADEALLOWED. Et d'autre part, la deuxième version de IsTradeAllowed fonctionne correctement partout. Il est donc préférable de l'utiliser.
En effet, ce courtier a le résultat du script ci-dessus :
J'ai commencé à vérifier d'autres courtiers. Broker G**X :
Courtier A***i :
Broker I***a F***x :
Mon premier test aujourd'hui était sur A*****l M*****s.
Ainsi, nous obtenons que tous les courtiers n'ont pas un fonctionnement correct de IsTradeAllowed (première version) et MODE_TRADEALLOWED. Et d'autre part, la deuxième version de IsTradeAllowed fonctionne correctement partout. Il est donc préférable de l'utiliser.
Et aujourd'hui
IsTradeAllowed(Symbol(), TimeCurrent())
cela montre la lâcheté
Au fait, pourquoi avez-vous l'heure locale?
Et aujourd'hui
IsTradeAllowed(Symbol(), TimeCurrent())
montre la lâcheté
Au fait, pourquoi avez-vous du temps local ?
C'est un week-end de vacances, donc c'est difficile.
Le fait est qu'aucune des fonctions de reconnaissance ne fonctionne à 100%.