Erreurs, bugs, questions - page 2936

 
Vitaly Muzichenko:

Quelques déchets

Définissez la valeur.

Pas pour la pratique, mais par pure curiosité théorique. Un autre numéro (9xxx - je ne me souviens pas exactement) ressemblait plus à un déchet et n'est apparu qu'une seule fois et je n'ai plus pu le reproduire, tandis que le numéro ci-dessus était constant et se répétait de temps en temps. (Je me demande si c'est la même chose pour vous et pour d'autres ?) Je m'en moque, l'essentiel est que les autres programmeurs ne trébuchent pas douloureusement dessus.

 
x572intraday:

Ce n'était pas pour la pratique, mais par pure curiosité théorique. Un autre numéro (9xxx - je ne me souviens pas exactement) ressemblait davantage à des déchets et il n'apparaissait qu'une seule fois et ne pouvait plus être reproduit, tandis que le numéro ci-dessus était constant et se répétait de temps en temps. (Je me demande si c'est la même chose pour vous et les autres ?) Je ne m'en soucie pas, l'essentiel est que les autres programmeurs ne trébuchent pas douloureusement dessus.

J'ai "0", je l'ai vérifié plusieurs fois.

 
Vitaly Muzichenko:

J'ai eu un 0, j'ai vérifié plusieurs fois.

Hmm... Je ne sais pas comment une circonstance est liée à l'autre, mais je l'ai utilisé comme indicateur sur différentes paires de devises - les chiffres grimpent différemment (sur chaque instrument, le même chiffre est répété à chaque tick ), il y avait même un zéro. C'est étrange. Mais il semble que sans initialisation avec son propre numéro, c'est vraiment nul.

 
x572intraday:

Hmm... Je ne sais pas comment une circonstance est liée à l'autre, mais j'ai lancé un indicateur sur différentes paires de devises - les chiffres grimpent différemment (sur chaque instrument, le même chiffre est répété à chaque tick ), il y avait même un zéro. C'est étrange. Mais il semble que sans initialisation avec son propre numéro, c'est vraiment de la camelote.

Je l'ai revérifié en insérant le code par tics.

dans mt4 c'est toujours 0.

dans mt5 oui, 0 est extrêmement rare, le nombre est 511026368

 
x572intraday:

Hmm... Je ne sais pas comment une circonstance est liée à l'autre, mais je l'ai utilisé comme indicateur sur différentes paires de devises - les chiffres grimpent différemment (sur chaque instrument, le même chiffre est répété à chaque tick), il y avait même un zéro. C'est étrange. Mais il semble que sans initialisation avec son propre numéro, c'est vraiment n'importe quoi.

Le tableau (et toutes les autres variables) se voit allouer de la mémoire lors de sa création. Si le tableau n'est pas initialisé, tout ce qui y a été laissé par les utilisations antérieures = poubelle.

Si vous ne modifiez pas les valeurs à partir du programme, rien ne se passe dans cette mémoire, les déchets gardent leur valeur.

Dans MT4, toutes les variables et tous les tableaux sont forcés d'être initialisés avec zéro.

 

CExpert.TradeEventOrderTriggered() non appelé

Lorsque vous travaillez avec le marché FORTS, sur le serveur BCS-Demo, une certaine instabilité de l'appel CExpert.TradeEventOrderTriggered() est apparue lorsque des ordres en attente sont déclenchés.
Le code de la méthode CExpert::CheckTradeState de la bibliothèque standard MQL5 ne prend pas en compte la réception asynchrone possible des informations sur les positions, les ordres, les transactions et l'historique.

1446://--- check triggering of a pending order
1447:   if(hist_ord_tot==m_hist_ord_tot+1 && ord_tot==m_ord_tot-1)
1448:     {
1449:      //--- triggering of a pending order
1450:      if(deal_tot==m_deal_tot+1)

Lorsque le code est exécuté sur des données historiques, les conditions fonctionnent correctement. Lorsque l'on travaille avec des données réelles, il peut y avoir des situations où les informations sur les changements de positions, les transactions, les ordres et l'historique ne sont pas obtenues en même temps, et où l'ordre dans lequel les informations sont obtenues est aléatoire.

Journal des appels de la méthode bool CExpert::CheckTradeState(void). Un appel deCheckTradeState() correspond à 2 lignes " CheckTradeState : .....".

//Сработал отложенный ордер открытия позиции
CheckTradeState: hist_ord_tot = 613 ord_tot = 0 deal_tot = 544 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 613 m_ord_tot = 1 m_deal_tot = 543 m_pos_tot = 0
CheckTradeState: hist_ord_tot = 614 ord_tot = 1 deal_tot = 544 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 614 m_ord_tot = 1 m_deal_tot = 544 m_pos_tot = 1

//Сработал отложенный ордер открытия позиции 
CheckTradeState: hist_ord_tot = 615 ord_tot = 1 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 615 m_ord_tot = 1 m_deal_tot = 545 m_pos_tot = 0
CheckTradeState: hist_ord_tot = 615 ord_tot = 0 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 615 m_ord_tot = 1 m_deal_tot = 546 m_pos_tot = 1
CheckTradeState: hist_ord_tot = 616 ord_tot = 0 deal_tot = 546 pos_tot = 1
CheckTradeState: m_hist_ord_tot = 616 m_ord_tot = 0 m_deal_tot = 546 m_pos_tot = 1

Vous pouvez voir dans le journal :
1. Lorsqu'un ordre en attente se déclenche, la longueur de l'historique est mise à jour plus tard que les informations sur les transactions, les ordres et les positions, ce qui entraîne le non-respect de la première condition du code.
2. Désynchronisation possible de la réception des informations sur les changements du nombre d'ordres, d'opérations et de positions, ce qui entraîne l'impossibilité de remplir la deuxième condition du code (si vous pouvez d'une manière ou d'une autre contourner le premier problème et effectuer le premier if). Peut-être que cette désynchronisation s'est produite lorsqu'un ordre a été exécuté en 2 étapes (en parties : 1 lot+1 lot), mais dans ce cas pourquoi le nombre de transactions +1, et non +2.

J'étais coincé avec ce code :

//--- establishment of the checkpoint history of the trade
   bool isSyncMode = MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION) || MQLInfoInteger(MQL_VISUAL_MODE);
   if(!isSyncMode)
      HistorySelect(m_beg_date,TimeCurrent());
   else
      HistoryPoint(true);
//---
   return(res);

Le point du bloc : si en mode asynchrone on est arrivé à la fin de la procédure, c'est possible quand l'historique n'est pas chargé, on récupère l'historique, mais on ne mémorise pas les valeurs des quantités de commandes, etc.

P.S. Il semble que cette partie de la bibliothèque standard soit sous-développée. Un fragment de code écrit 3 fois de suite est particulièrement déconcertant.

1458: res=TradeEventOrderTriggered();
1459: //--- establishment of the checkpoint history of the trade
1460: HistoryPoint(true);
1461: return(res);

J'écris ici en espérant que le problème sera remarqué et que quelque chose sera corrigé quelque part.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
J'ai regardé la taille des fichiers EX5 EA dans le marché. Tous ceux que j'ai examinés sont inférieurs à 200 Ko. Qu'est-ce qui vous permet d'obtenir des tailles aussi petites ? Un simple code ?
 
fxsaber:
J'ai examiné la taille des fichiers EX5 Expert Advisor sur le marché. Ils sont tous inférieurs à 200 Ko. Qu'est-ce qui vous permet d'atteindre une si petite taille ? Un simple code ?

Je pense que les auteurs sont des génies, 90% des meilleurs vendeurs ne se posent aucune question sur la plateforme - ils écrivent donc les codes avec un instinct naturel )))).


voici la question :

Je branche les données :

#resource "Common\\Files\\EURUSD_tick.bin" as const MqlTick HistoryData[]

Je reçois une erreur :

fichier de ressources 'Common\Files\EURUSD_tick.bin' non trouvé

ne peut pas ouvrir le fichier de ressources .....\\\\MQL5\Experts\Virtual\Common\Files\EURUSD_tick.bin' (3)

Si je place le fichier dans le dossier EA ou dans le dossier Files, tout est OK.


Donc, je ne peux pas monter une ressource à partir du dossier commun ? -Ou dois-je spécifier un autre chemin ?

 
Igor Makanu:

Je pense que les auteurs sont des génies, 90% des meilleurs vendeurs n'ont aucune question sur la plateforme - ils écrivent donc les codes avec une connaissance innée )))).

Pour les questions concernant les autres comptes.

Vous ne pouvez pas connecter la ressource à partir du dossier Common ? ou avez-vous besoin d'une autre façon de prescrire ?

Je ne sais pas.

 

Est-il possible d'organiser des partenariats sur la base de Freelance ?

"Je paie 50 $ pour chaque tranche de cinq utilisateurs référencés".