Erreurs, bugs, questions - page 1815

 

Bonjour, le problème suivant se produit sur mon compte de démonstration chez Otkritie.

la situation suivante se produit : si je réussis à modifier et à supprimer une commande

de type ORDER_FILLING_RETURN(un ordre à cours limité ordinaire)

le volume variable de la structureMqlTradeResult est toujours égal à la taille initiale de l'ordre (dans ce cas, l'ordre n'a pas été exécuté du tout).

Il semble qu'il devrait donner un volume exécuté (0 dans mon cas), ou est-ce que je me trompe ?

 
Sergey Kudryavtsev:

Je pense qu'il devrait donner un volume exécuté (0 dans mon cas) ou je me trompe ?

C'était le cas à l'origine

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Bibliothèques : MT4Orders

fxsaber, 2017.02.10 12:01

Résultat du script
OrderSend(NULL,OP_BUYLIMIT,1,Ask-100*Point,100,0,0,My Order)
Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURUSD
Request.volume = 1.0
Request.price = 1.06356
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_IOC (1)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = My Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 57777
Result.volume = 1.0
Result.price = 1.06356
Result.bid = 0.0
Result.ask = 0.0
Result.comment = My Order
Result.request_id = 592
Result.retcode_external = 0
Il est maintenant facile de comprendre comment formuler correctement les demandes de transaction pertinentes dans MT5.
 
fxsaber:
C'était comme ça depuis le début !
Merci !
 
Une recherche sur "MqlTradeResult " ne permet pas de trouver un lien vers la description dans l'aide.
 

Pendant l'exécution d'OrderSend, il n'est pas possible de quitter le mode débogage ou de supprimer l'EA/script.

Parfois, OrderSend fonctionne pendant 180 secondes, avec Request timeout. Il faut attendre trois minutes pour pouvoir compiler dans l'éditeur, si le script était exécuté en mode débogage.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Bugs, bugs, questions

fxsaber, 2017.02.16 07:55

2017.02.16 08:53:03.158 Network '2250': disconnected from FXOpen-MT5
2017.02.16 08:53:03.285 MQL5    wrong type, loading of Test failed
2017.02.16 08:53:03.813 Network '5122740': authorized on MetaQuotes-Demo through Access Point EU Amsterdam (ping: 50.93 ms)

Qu'est-ce que c'est ?

Rien ne fonctionne sur le seul graphique. Chaque fois que je change de compte, ce message apparaît.

Suppression de tous les fichiers Test.ex*. Le message ne cesse de s'afficher.
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Une cachette folle d'agents de test

Renat Fatkhullin, 2017.02.21 04:04

Essayez la nouvelle version du vendredi de MT5 1545 - quelque chose a été amélioré.

Notez également que nous avons plus de 230 000 comptes actifs en permanence sur MetaQuotes-Demo MT5 et que c'est une véritable bacchanale du trading.

Je pense que la bacchanale est encore plus puissante sur l'échange, mais le coping.

1545 - semble s'améliorer. Mais tout passe à travers les mailles du filet.

Demande/réponse.

Request.action = TRADE_ACTION_DEAL (1)
Request.magic = 0
Request.order = 0
Request.symbol = EURCAD
Request.volume = 0.01
Request.price = 1.39016
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_SELL (1)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment =
Request.position = 134821044
Request.position_by = 0
Result.retcode = 10009
Result.deal = 118450870
Result.order = 134821045
Result.volume = 0.01
Result.price = 1.39016
Result.bid = 1.39016
Result.ask = 1.39043
Result.comment = Request executed 57.225 + 18.108 ms
Result.request_id = 4096
Result.retcode_external = 0

Surligné - c'est le temps pendant lequel une entrée apparaît dans l'historique des commandes et des transactions après un envoi de commande réussi. Beaucoup !

Journal de bord

NO      0       08:51:22.422    Trades  '5245006': instant sell 0.01 EURCAD at 1.39016, close #134821044 buy 0.01 EURCAD 1.39043 (deviation: 100)
MM      0       08:51:22.480    Trades  '5245006': accepted instant sell 0.01 EURCAD at 1.39016, close #134821044 buy 0.01 EURCAD 1.39043 (deviation: 100)
LH      0       08:51:22.480    Trades  '5245006': deal #118450870 sell 0.01 EURCAD at 1.39016 done (based on order #134821045)
EQ      0       08:51:22.480    Trades  '5245006': order #134821045 sell 0.01 / 0.01 EURCAD at 1.39016 done in 57.165 ms

Et un autre cas d'exécution du même script.

Demande/Réponse

Request.action = TRADE_ACTION_PENDING (5)
Request.magic = 0
Request.order = 0
Request.symbol = EURCZK
Request.volume = 0.01
Request.price = 27.043
Request.stoplimit = 0.0
Request.sl = 0.0
Request.tp = 0.0
Request.deviation = 100
Request.type = ORDER_TYPE_BUY_LIMIT (2)
Request.type_filling = ORDER_FILLING_RETURN (2)
Request.type_time = ORDER_TIME_GTC (0)
Request.expiration = 1970.01.01 00:00:00
Request.comment = Benchmark_Order
Request.position = 0
Request.position_by = 0
Result.retcode = 10009
Result.deal = 0
Result.order = 134821281
Result.volume = 0.01
Result.price = 0.0
Result.bid = 0.0
Result.ask = 0.0
Result.comment = Request executed 392.585 + 0.299 ms
Result.request_id = 4457
Result.retcode_external = 0

Journal de bord

HP      0       08:51:43.740    Trades  '5245006': buy limit 0.01 EURCZK at 27.04300
RE      0       08:51:44.133    Trades  '5245006': accepted buy limit 0.01 EURCZK at 27.04300
JS      0       08:51:44.133    Trades  '5245006': order #134821281 buy limit 0.01 / 0.01 EURCZK at market done in 392.533 ms

Ping ~54 ms.

 

Il est impossible de copier quoi que ce soit à partir de la fenêtre d'alerte.

Veuillez ajouter à la fenêtre d'alerte la possibilité de sélectionner plusieurs lignes, en cliquant avec le bouton droit de la souris sur le menu "Copier" et "Aller au journal" - pour afficher dans le journal des experts la ligne correspondant à l'alerte.

 

Bon après-midi.

J'ai été confronté à un comportement incorrect (à mon avis) des pointeurs d'objets. Il s'applique aussi bien à MT5 qu'à MT4. Veuillez préciser s'il s'agit d'un bogue ou d'une fonctionnalité. Voici le code :

class CBaseObject { };

class CDescObject:public CBaseObject { };

void OnStart()
  {
      CDescObject *obj1 = new CDescObject(), *obj2;
      CBaseObject *baseObj1 = obj1;
      
      obj2 = baseObj1;//Пока не грохнули объект - no problem
      delete(obj1);

      //Если добавить эти строки, ошибки в последней строке не будет
      //if(CheckPointer(baseObj1)==POINTER_INVALID)
         //baseObj1 = NULL;
      
      obj2 = obj1;//Указатели одного типа - no problem
      obj2 = baseObj1;//здесь ошибка "Invalid pointer access"
  }

Je comprends que les pointeurs ici ne sont pas les mêmes qu'en C, mais ont un monde interne riche. Il serait tout de même plus logique que la mission de la dernière ligne s'achève paisiblement. Dans mon cas, la vérification de POINTER_INVALID se faisait après l'affectation, et je n'ai donc pas compris tout de suite pourquoi le message "Accès invalide au pointeur" apparaissait, alors que personne n'effectuait d'accès.

P. S. : Juste au cas où - Metatrader 5 build 1545, Win 7 SP1 x86

 
Mist13:

J'ai rencontré (à mon avis) un comportement incorrect des pointeurs d'objets.

Cela ressemble à une erreur MQL.

Vous avez l'erreur. Comment imaginez-vous attribuer un parent vide à un descendant ?