J'ai rencontré un problème - lors des tests à un certain point, pour des raisons inconnues, l'erreur "arrêts invalides" apparaît, mais les arrêts sont corrects.
Forux: Rencontré un problème - lors des tests à un certain point pour des raisons inconnues, une erreur "arrêts invalides" apparaît, mais les arrêts sont corrects.
Voici ce que nous avons obtenu (à partir de 2010.05.01) :
Quel pourrait être le problème ? (80% du dépôt était libre à l'époque)
Le message d'erreur s'affiche en réponse à la modification de la position. En même temps, il n'y a pas de contrôle de la distance autorisée des niveaux sl/tp par rapport au prix actuel dans le code. Il peut arriver que le prix actuel du marché s'approche des niveaux de sl ou de tp à une distance plus courte que celle autorisée par le serveur. Regardez dans le manuel ORDER_STOPS_LEVEL
Yedelkin: Le message d'erreur s'affiche en réponse à la modification de la position. Le code ne vérifie pas la distance admissible des niveaux sl/tp par rapport au prix actuel. Il peut arriver que, pendant le traitement de deux demandes de transaction, le prix actuel du marché se soit rapproché des niveaux sl ou tp au-delà de la distance autorisée par le serveur. Regardez dans le manuel ORDER_STOPS_LEVEL
J'ai modifié le code pour le vérifier :
price = SymbolInfoDouble(_Symbol, isBuy ? SYMBOL_ASK : SYMBOL_BID);
Print(" --- Can not modify order --- error = " + GetLastError() + " order = " + order + " price = " + price);
par conséquent, la ligne d'erreur n'a pas changé (c'est-à-dire que le prix n'a pas changé). Et il ne le pourrait probablement pas, c'est deux ans et demi de tests sur des minutes, sur l'historique d'alpari (98% de qualité d'historique).
Cela ressemble plus à une erreur de MetaTrader lui-même, car avant cela, la même chose se produisait, mais il n'y avait pas d'erreur.
Yedelkin: Ну а проверку на допустимый отступ тоже сделали?
Yedelkin: Avez-vous également vérifié l'indentation autorisée ?
La distance autorisée dans le test est de 0. Et le prix n'a pas changé, après l'erreur il est le même que le prix auquel l'ordre a été créé, avant la modification.
price = SymbolInfoDouble(_Symbol, isBuy ? SYMBOL_ASK : SYMBOL_BID);
Print("SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == " + SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL));
Print(" --- Can not modify order --- error = " + GetLastError() + " isBuy = " + isBuy + " order = " + order + " price = " + price);
Journal de bord
2013.01.1614:32:28 Core 12011.03.1821:59:00 --- Can not modify order --- error = 4756 isBuy = false order = 4720 price = 1.417952013.01.1614:32:28 Core 12011.03.1821:59:00SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == 02013.01.1614:32:28 Core 12011.03.1821:59:00 failed modify sell 0.10 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.42095, tp: 1.41495 [Invalid stops]
2013.01.1614:32:28 Core 12011.03.1821:59:00 order performed sell 0.10 at 1.41795 [#4720 sell 0.10 EURUSD at 1.41795]2013.01.1614:32:28 Core 12011.03.1821:59:00 deal performed [#4720 sell 0.10 EURUSD at 1.41795]2013.01.1614:32:28 Core 12011.03.1821:59:00 deal #4720 sell 0.10 EURUSD at 1.41795 done (based on order #4720)2013.01.1614:32:28 Core 12011.03.1821:59:00 exchange sell 0.10 EURUSD at 1.41795 (1.41795 / 1.42399 / 1.41795)
...
Forux: Et le prix n'a pas changé, après l'erreur il est le même que le prix auquel l'ordre a été créé avant la modification.
Le prix lui-même (en général) peut initialement être plus proche des niveaux que ce que le serveur permet actuellement. C'est pourquoi il est toujours conseillé de vérifier une telle condition.
Forux: La distance autorisée dans le test est de 0.
Oui, il est clair maintenant que la vérification de l'indentation ne résout pas le problème dans ce cas. Ai-je bien compris que les niveaux sl/tp d'une position de vente sont fixés sur la base du cours acheteur ?
Le prix lui-même (en général) peut initialement être plus proche des niveaux que ce que le serveur permet actuellement. C'est pourquoi il est toujours conseillé de vérifier une telle condition.
Oui, il est clair maintenant que la vérification de l'indentation ne résout pas le problème dans ce cas. Ai-je bien compris que les niveaux sl/tp pour les positions de vente sont fixés sur la base du cours acheteur ?
Oui, et l'entrée et la sortie se font soit à l'Ask, soit à l'Bid, selon le type d'ordre.
Forux: Oui, et l'entrée et la sortie se font soit par l'Ask ou l'Bid, selon le type d'ordre.
Ai-je bien compris que les niveaux sl/tp pour une position de vente sont fixés sur la basedu cours acheteur? Si ce n'est pas difficile, imprimez les cours vendeur, acheteur, SL et TP actuels pour la zone problématique.
Yedelkin: Ai-je bien compris que les niveaux sl/tp d'une position de vente sont fixés sur la basedu cours acheteur? Si ce n'est pas difficile, imprimez l'Ask, l'Bid, le SL et le TP actuels pour la zone problématique.
2013.01.1615:55:57 Core 12011.03.1821:59:00 --- Can not modify order --- error = 4756 isBuy = false order = 4720 price = 1.417952013.01.1615:55:57 Core 12011.03.1821:59:00 TP == 1.414952013.01.1615:55:57 Core 12011.03.1821:59:00 SL == 1.420952013.01.1615:55:57 Core 12011.03.1821:59:00 BID == 1.417952013.01.1615:55:57 Core 12011.03.1821:59:00 ASK == 1.423992013.01.1615:55:57 Core 12011.03.1821:59:00SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) == 02013.01.1615:55:57 Core 12011.03.1821:59:00 failed modify sell 0.10 EURUSD sl: 0.00000, tp: 0.00000 -> sl: 1.42095, tp: 1.41495 [Invalid stops]
2013.01.1615:55:57 Core 12011.03.1821:59:00 order performed sell 0.10 at 1.41795 [#4720 sell 0.10 EURUSD at 1.41795]2013.01.1615:55:57 Core 12011.03.1821:59:00 deal performed [#4720 sell 0.10 EURUSD at 1.41795]2013.01.1615:55:57 Core 12011.03.1821:59:00 deal #4720 sell 0.10 EURUSD at 1.41795 done (based on order #4720)2013.01.1615:55:57 Core 12011.03.1821:59:00 exchange sell 0.10 EURUSD at 1.41795 (1.41795 / 1.42399 / 1.41795)
...
Question supprimée. (Enfin, et la propagation o_o).
J'ai rencontré un problème - lors des tests à un certain point, pour des raisons inconnues, l'erreur "arrêts invalides" apparaît, mais les arrêts sont corrects.
L'algorithme est trivial - passer une commande
lorsqu'il est fermé, répétez la procédure
En conséquence, j'ai obtenu ces résultats (j'ai commencé en 2010.05.01) :
Quel pourrait être le problème ? (à l'époque, 80 % de mon dépôt était gratuit).
Voici ce que nous avons obtenu (à partir de 2010.05.01) :
Quel pourrait être le problème ? (80% du dépôt était libre à l'époque)
Le message d'erreur s'affiche en réponse à la modification de la position. Le code ne vérifie pas la distance admissible des niveaux sl/tp par rapport au prix actuel. Il peut arriver que, pendant le traitement de deux demandes de transaction, le prix actuel du marché se soit rapproché des niveaux sl ou tp au-delà de la distance autorisée par le serveur. Regardez dans le manuel ORDER_STOPS_LEVEL
J'ai modifié le code pour le vérifier :
par conséquent, la ligne d'erreur n'a pas changé (c'est-à-dire que le prix n'a pas changé). Et il ne le pourrait probablement pas, c'est deux ans et demi de tests sur des minutes, sur l'historique d'alpari (98% de qualité d'historique).
Cela ressemble plus à une erreur de MetaTrader lui-même, car avant cela, la même chose se produisait, mais il n'y avait pas d'erreur.
Ну а проверку на допустимый отступ тоже сделали?
Avez-vous également vérifié l'indentation autorisée ?
La distance autorisée dans le test est de 0. Et le prix n'a pas changé, après l'erreur il est le même que le prix auquel l'ordre a été créé, avant la modification.
Journal de bord
Le prix lui-même (en général) peut initialement être plus proche des niveaux que ce que le serveur permet actuellement. C'est pourquoi il est toujours conseillé de vérifier une telle condition.
Oui, il est clair maintenant que la vérification de l'indentation ne résout pas le problème dans ce cas. Ai-je bien compris que les niveaux sl/tp d'une position de vente sont fixés sur la base du cours acheteur ?
Le prix lui-même (en général) peut initialement être plus proche des niveaux que ce que le serveur permet actuellement. C'est pourquoi il est toujours conseillé de vérifier une telle condition.
Oui, il est clair maintenant que la vérification de l'indentation ne résout pas le problème dans ce cas. Ai-je bien compris que les niveaux sl/tp pour les positions de vente sont fixés sur la base du cours acheteur ?
Ai-je bien compris que les niveaux sl/tp d'une position de vente sont fixés sur la basedu cours acheteur? Si ce n'est pas difficile, imprimez l'Ask, l'Bid, le SL et le TP actuels pour la zone problématique.
Bonjour ! Il n'y avait pas de programme MT-5 avant, mais maintenant ils ont commencé à me donner dans la section "signaux".
Je n'ai pas besoin d'informations. J'utilise l'internet mobile et je paie pour chaque Mb.
Et ces signaux ont multiplié par 3 ou 4 la consommation de l'Internet.
Question : comment configurer la réception et la non-réception de ces signaux ? Je n'ai souscrit à aucun de ces signaux.