Erreurs, bugs, questions - page 74

 

En testant l'Expert Advisor, je suis accidentellement tombé sur la fonction Sleep() dans le testeur qui, je pense, ne fonctionne pas correctement. Le point est le suivant :

le conseiller expert ferme toutes les positions à 23h00 si le bénéfice total est supérieur à celui spécifié (la fonction CloseAll()). Après la fermeture de la position suivante, un délai de 10 secondes est introduit par Sleep(10000).

Voici ce que nous avons dans le journal :

FP 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 CloseAll Profit : 3030.66
JD 0 Trade 04:31:04 instant vendre 0.80 EURAUD à 1.56474 (1.56474 / 1.56558 / 1.56474)
JH 0 Trades 04:31:04 deal #85 vendre 0.80 EURAUD à 1.56474 fait (basé sur l'ordre #85)
HL 0 Trade 04:31:04 transaction effectuée [#85 sell 0.80 EURAUD at 1.56474]
HI 0 Trade 04:31:04 ordre exécuté vendre 0.80 EURAUD à 1.56474 [#85 vendre 0.80 EURAUD à 1.56474].
QE 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 position par EURAUD à fermer
PN 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
FG 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.
RO 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
QD 0 Trade 04:31:04 acheter 1.00 USDJPY à 90.444 (90.417 / 90.444 / 90.417)
NS 0 Trades 04:31:04 deal #86 buy 1.00 USDJPY at 90.444 done (based on order #86)
MJ 0 Trade 04:31:04 transaction effectuée [#86 buy 1.00 USDJPY at 90.444]
JS 0 Trade 04:31:04 ordre exécuté buy 1.00 at 90.444 [#86 buy 1.00 USDJPY at 90.444]
JL 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 position par USDJPY à fermer
JI 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
PN 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.
DF 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
QN 0 Trade 04:31:04 acheter 0.80 AUDUSD à 0.90001 (0.89967 / 0.90001 / 0.89967)
IH 0 Trades 04:31:04 deal #87 buy 0.80 AUDUSD at 0.90001 done (based on order #87)
KQ 0 Trade 04:31:04 transaction effectuée [#87 acheter 0.80 AUDUSD à 0.90001]
RL 0 Trade 04:31:04 ordre exécuté acheter 0.80 à 0.90001 [#87 acheter 0.80 AUDUSD à 0.90001]
EG 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 position par AUDUSD à fermer
LP 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0
JI 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 Sleep 10 cek.

NQ 0 PriceChannel_multi (2) (EURUSD,H1) 04:31:04 23:0:0

Comme on peut le voir, le temps avant et après le décalage est le même. Mais cela ne se produit que si TimeCurrent() == 0.

Sinon, le glissement fonctionne bien. Par exemple :

MD 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 CloseAll Profit : 3382.28
KQ 0 Trade 04:30:39 ET ET 0.70 EURUSD à 1.44090 (1.44090 / 1.44108 / 1.44090)
IE 0 Trades 04:30:39 deal #27 sell 0.70 EURUSD at 1.44090 done (based on order #27)
CI 0 Trade 04:30:39 deal effectué [#27 sell 0.70 EURUSD at 1.44090]
EL 0 Trade 04:30:39 ordre exécuté vendre 0.70 à 1.44090 [#27 vendre 0.70 EURUSD à 1.44090].
DH 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39
JR 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:7
MK 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 cek.
EP 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:15
DE 0 Trade 04:30:39 ET 0.80 AUDUSD à 0.91951 (0.91951 / 0.91993 / 0.91951)
CJ 0 Trades 04:30:39 deal #28 sell 0.80 AUDUSD at 0.91951 done (based on order #28)
HR 0 Trade 04:30:39 deal effectué [#28 sell 0.80 AUDUSD at 0.91951]
HH 0 Trade 04:30:39 ordre exécuté vendre 0.80 AUDUSD à 0.91951 [#28 vendre 0.80 AUDUSD à 0.91951].
LS 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 AUDUSD à fermer
QL 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:15
ED 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 10 cek Sleep.
LO 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:25
DD 0 Trade 04:30:39 acheter 0.60 EURAUD à 1.56727 (1.56632 / 1.56727 / 1.56632)
LN 0 Transactions 04:30:39 deal #29 acheter 0.60 EURAUD à 1.56727 fait (basé sur l'ordre #29)
FK 0 Trade 04:30:39 transaction effectuée [#29 achat 0.60 EURAUD à 1.56727]
IR 0 Trade 04:30:39 ordre exécuté buy 0.60 at 1.56727 [#29 buy 0.60 EURAUD at 1.56727]
RM 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 position par EURAUD à fermer
FE 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:25
GN 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:39 Sleep 10 cek.

QE 0 PriceChannel_multi (2) (EURUSD,H1) 04:30:3923:0:35

Code pour la fermeture d'une position :

if(m_trade[j].PositionClose(m_symbol[j].Name()))
           {
            PosCloseCount--;
            printf("Position by %s to be closed",m_symbol[j].Name());
            MqlDateTime  dt_struct;
            TimeCurrent(dt_struct);
            printf("%u:%u:%u",dt_struct.hour,dt_struct.min,dt_struct.sec);
            Sleep(10000);
            Print("Sleep 10 cek.");
            TimeCurrent(dt_struct);
            printf("%u:%u:%u",dt_struct.hour,dt_struct.min,dt_struct.sec);
           }

Appel de la fonction CloseAll :

   MqlDateTime  dt_struct;
   TimeCurrent(dt_struct);
   if(dt_struct.hour==2 3 && m_account.Profit()>InpProfitToClose)
     {
      Trade=false;Print("CloseAll Profit: ",m_account.Profit());
      while(PositionsTotal()>0)
         CloseAll();

Si nous changeons la condition en

if(dt_struct.hour==23 && dt_struct.min>0 && m_account.Profit()>InpProfitToClose)
il n'y a pas d'erreur.
Документация по MQL5: Общие функции / Sleep
Документация по MQL5: Общие функции / Sleep
  • www.mql5.com
Общие функции / Sleep - Документация по MQL5
 
joo:
Alors, mon message n'est pas vain, comme je le pensais déjà ?

Oui. Nous avons corrigé le comportement de StringToTime. Merci.

 
Valmars:

En testant l'Expert Advisor, je suis accidentellement tombé sur la fonction Sleep() dans le testeur qui, je pense, ne fonctionne pas correctement. Le point est le suivant :

Très intéressant. Voyons voir.
 
J'ouvre l'onglet "Nouvelles" et il y a... - c'est la mauvaise nouvelle. Est-ce que j'ai manqué quelque chose ?
 
x100intraday:
J'ouvre l'onglet "Nouvelles" et là... - c'est la mauvaise nouvelle. Est-ce que j'ai manqué quelque chose ?

Définissez les langues dans lesquelles vous souhaitez recevoir les actualités.


 
Rosh:

Définissez les langues dans lesquelles vous souhaitez recevoir les actualités.


Ce n'est pas le cas. Il est un peu saupoudré de "nouvelles" du forum mt5, il n'a rien à voir avec les nouvelles du forex. Pas seulement les mises à jour pro-auto récemment, mais j'ai téléchargé la distribution mt5 à nouveau et l'ai installée, cela fait presque une semaine maintenant. Je ne sais pas comment c'était pendant la semaine, parce que je ne suis pas allé dans l'onglet "Actualités", mais je l'ai découvert maintenant :

Nouvelles financières bizarres

 
x100intraday:

Ce n'est pas le cas. Il est un peu saupoudré de "nouvelles" du forum mt5, il n'a rien à voir avec les nouvelles du forex. Je ne l'ai pas juste pro-auto-téléchargé récemment, j'ai téléchargé la distribution mt5 à nouveau et l'ai installé, cela fait presque une semaine maintenant. Je ne sais pas comment c'était pendant la semaine, car je n'ai pas accédé à l'onglet "Actualités", mais je l'ai découvert maintenant :

Il s'agit de notre serveur de démonstration qui diffuse les nouvelles de MQL5.com au lieu des nouvelles manquantes du forex (nous n'avons pas le droit de diffuser les nouvelles gratuites des autres).

Si vous ne voulez pas les voir, il suffit de décocher la case correspondante dans la section des catégories d'actualités du menu contextuel.

 

Après la mise à jour automatique, l'EA qui fonctionnait précédemment a commencé à donner des messages indiquant qu'il ne pouvait pas copier les séries chronologiques. Le problème a été résolu en déchargeant l'EA et en la chargeant à nouveau. Question : faut-il s'attendre à ce que ce résultat de la mise à jour automatique soit toujours présent ou s'agit-il d'une erreur terminale, qui sera éliminée ?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
Yedelkin:

Après la mise à jour automatique, l'EA qui fonctionnait précédemment a commencé à donner des messages indiquant qu'il ne pouvait pas copier les séries chronologiques. Le problème a été résolu en déchargeant l'EA et en la chargeant à nouveau. Question : faut-il s'attendre à ce que ce résultat de la mise à jour automatique soit toujours présent ou s'agit-il d'une erreur terminale, qui sera éliminée ?

Veuillez donner plus de détails (journaux, captures d'écran, etc.).

Sans cela, il n'est pas possible de donner une réponse éclairée.

 
Renat:

Veuillez fournir plus de détails (journaux, captures d'écran, etc.).

Sans cela, il est impossible de donner une réponse raisonnable.

OK. Compte de démonstration sur le serveur MQ, fichier journal joint (2010729.log), l'heure de début de la mise à jour automatique est 20:54, à 22:36 j'ai supprimé Expert Advisor moi-même et l'ai téléchargé une minute plus tard.

Il existe un simple contrôle de type dans EA :

if(CopyHigh(Symbol(),0,0,bars,high)<bars || CopyClose(Symbol(),0,0,bars,close)<bars || CopyLow(Symbol(),0,0,bars,low)<bars || CopyTime(Symbol(),0,0,bars,time)<bars)
  {
   Print("Can't copy timeseries!");
   return;
  }

En conséquence, après la mise à jour automatique des messages sont allés (fichier 20100729copy.log). En général, cela s'est produit avant, mais en quelque sorte n'a pas prêté attention.

Après avoir rechargé le Conseiller Expert, les lignes de prix d'ouverture et de stop-loss dans le graphique ont également disparu.

Puis-je ajouter quelque chose à ce qui a été dit ?

Raison: