Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
int Weekday = TimeDayOfWeek(TimeLocal()); //Локальное время |
int Weekdays = TimeDayOfWeek(TimeCurrent()); //Серверное время |
while(IsExpertEnabled()) //До тех пор пока запушенно |
{if(Weekday!=0||Weekday!=6){Exp=true;if(Weekday==1){Info(4,Weekday,0);}} //Если не Сбб. Воск. то разрешено |
if(Weekdays==0||Weekdays==6) //Если Сбб. Воск. то не разрешено |
{
Exp=false;Info(5,Weekdays,0);
if(Weekdays==6){Sleep(86400000);} //Если суббота пауза 24 часа |
if(Weekdays==0){Sleep(3600000);} //Если воскресение пауза 1 час |
}
IsTradeAllowed
Renvoie des informations sur la possibilité de négocier avec des conseillers experts.
boolIsTradeAllowed() ;
La deuxième forme de cet appel renvoie des informations sur la capacité de négocier pour un symbole donné à un moment donné.
boolIsTradeAllowed(
const string symbol// symbole
datetimetested_time// heure
) ;
Paramètres
symbole
[dans] le symbole.
test_time
[en] Temps.
Valeur retournée
Retourne vrai si l'EA est autorisé à commercer et que le fil est libre, sinon retourne faux.
Merci bien sûr, mais c'est comme ils disent pour entrer par l'œil d'un endroit) Je peux également mettre une pause sur l'euro à 5,0 serveur le permettra, puis avec chaque cycle de minuterie essayer de changer la pause, si l'erreur 132 alors le marché est fermé, si normal alors le commerce est, mais au moment du commerce ce serveur est inondé, je voudrais résoudre le problème humainement, pas à travers "boucles", mais c'est le développeur MK.
IsTradeAllowed
Renvoie des informations sur la possibilité de négocier avec des conseillers experts.
boolIsTradeAllowed() ;
La deuxième forme de cet appel renvoie des informations sur la capacité de négocier pour un symbole donné à un moment donné.
boolIsTradeAllowed(
const string symbol// symbole
datetimetested_time// heure
) ;
Paramètres
symbole
[dans] le symbole.
test_time
[en] Temps.
Valeur retournée
Renvoie true si l'EA est autorisé à effectuer des transactions et que le thread pour effectuer les transactions est libre, sinon renvoie false.
Alexander, vous avez tort)
celui-ci fonctionne très bien
celui-ci fonctionne très bien
Merci pour le conseil, mais lorsque le marché est ouvert, il n'est pas correct d'essayer de déterminer la possibilité de travailler avec des ordres, mais cela fonctionnera.
Pour ma part, mon raisonnement est le suivant.
S'il est nécessaire de négocier sur le symbole actuel, un signe indirect que le marché est ouvert est l'arrivée de nouveaux ticks. Ainsi, l'événement OnTick est suffisant et le problème est clos.
Si nous devons travailler avec des symboles autres que le symbole actuel, le fait d'ouvrir des transactions sur le symbole actuel ne garantit pas que les transactions soient exécutées sur un autre symbole. Par exemple, le conseiller expert a été exécuté sur l'EURUSD, l'heure est 09:00 UTC, et nous voulons négocier des actions américaines, dont le marché n'ouvrira qu'à 13:00 UTC. Donc, OnTick ne sera pas utile. Nous devrons déterminer si le marché s'ouvre par d'autres symboles en tentant d'envoyer des ordres au serveur à certains intervalles. Envoyer un ordre une fois par minute n'est en aucun cas un bombardement de serveurs, mais une approche tout à fait normale. Qu'est-ce qu'il y a de mal à ça ?
Pas de ticks, pas de commerce, comme me l'a dit un jour le service clientèle à propos de ce problème de jour de la semaine,
ils ont suggéré une solution comme.
TimeDayOfWeek(TimeLocal());
bien que ce ne soit pas tout à fait correct, car le jour de la semaine peut ne pas être le même que le jour de la borne.
Une condition importante était de ne pas essayer d'ouvrir des commandes, bien que j'y aie eu recours à plusieurs reprises dans d'autres projets. Pour être honnête, il me semble que c'est la méthode la plus simple et la plus fiable jusqu'à présent.
Jusqu'à présent, j'ai trouvé la meilleure façon de le faire (mais je cherche encore, voir ci-dessous) :
1) Déterminer si la négociation est autorisée "en face à face" - deuxième forme de la fonction IsTradeAllowed() (je l'ai mentionnée ci-dessus). Si ce n'est pas le cas, alors il n'est pas autorisé :)
2) Comparez l'heure de la dernière cotation en utilisant SymbolInfoInteger(<symbol>, SYMBOL_TIME) avec l'heure d'une des sessions de négociation(SymbolInfoSessionTrade()), si l'heure de la cotation tombe dans une des plages de session, alors la négociation est autorisée.
3) Vérifier si l'heure de la cotation n'est pas trop "périmée" : si elle date de plus de xx minutes (comparer SymbolInfoInteger(<symbol>, SYMBOL_TIME) et TimeCurrent(), alors nous pensons que la cotation est périmée et, par conséquent, nous ne pouvons pas trader avec elle (si j'ai raison, c'était environ trois minutes)
L'inconvénient de cette approche est le suivant : il peut y avoir des conditions où les transactions sur le symbole sont impossibles, alors que les ticks passent.
Je ne suis pas entré dans le mécanisme ; le développement a été fait pour un courtier et pendant les tests ils ont activé un tel régime - les ticks vont, mais le trading est impossible. Jusqu'à présent, nous n'avons pas réussi à surmonter cette variante.
Il est juste de dire que je n'ai pas rencontré cela dans le cadre de transactions réelles. Ainsi, dans des conditions "normales", la solution semble tolérable. Mais je le cherche encore :)
P.S. Les étapes 1 et 2 peuvent être combinées (pour transférer SymbolInfoInteger(<symbol>, SYMBOL_TIME) dans la fonction IsTradeAllowed), mais je n'ai pas encore fait de tests de cette variante et je ne le dirai pas.