Bug de redimensionnement des tableaux dans la version bêta 530 - page 3

 
RaptorUK:

Je ne connais pas MT3, mais je suppose que le code qui fonctionnait sur MT3 fonctionnait également sur MT4... C'est le problème avec MT4 --> MT5 et c'est pourquoi la situation est différente.

La majorité des utilisateurs de MT4 ne savent pas coder, si leurs indicateurs préférés de MT4 n'existent pas sur MT5, ils n'utiliseront pas MT5.

Pour autant que je sache, le code MT3 ne fonctionne pas sur MT4, le langage est très différent. Ce débat sur MT4/MT5 est sans fin, il y a beaucoup de facteurs qui ont conduit à la survie de MT4, je ne suis même pas sûr que MT5 était destiné à remplacer complètement MT4.

Quoi qu'il en soit, à propos de la nouvelle version, Metaquotes a déclaré qu'elle sera rétrocompatible au niveau ex4, mais pas vraiment au niveau mq4.

 

J'ai jeté un coup d'œil rapide à l'aide du nouveau metaeditor, la nouvelle version mql4 semble beaucoup plus différente de l'ancienne version que je ne le pensais.

 
angevoyageur:

Pour autant que je sache, le code MT3 ne fonctionne pas sur MT4, le langage est très différent. Ce débat sur MT4/MT5 est sans fin, il y a beaucoup de facteurs qui ont conduit à la survie de MT4, je ne suis même pas sûr que MT5 était destiné à remplacer complètement MT4.

Quoi qu'il en soit, à propos de la nouvelle version, Metaquotes a déclaré qu'elle sera rétrocompatible au niveau ex4, mais pas vraiment au niveau mq4.

La compatibilité avec les indicateurs, scripts et EAs .ex4 actuels ne concerne pas seulement la langue, mais aussi le terminal et les modifications apportées à son fonctionnement. Par exemple, les changements apportés au testeur de stratégie peuvent casser les EA conçus pour être utilisés principalement dans le testeur de stratégie, alors que le même EA fonctionne correctement sur un graphique en direct, mais ne remplit plus sa fonction principale...
 
angevoyageur:

Pour autant que je sache, le code MT3 ne fonctionne pas sur MT4, le langage est très différent. Ce débat sur MT4/MT5 est sans fin, il y a beaucoup de facteurs qui ont conduit à la survie de MT4, je ne suis même pas sûr que MT5 était destiné à remplacer complètement MT4.

Quoi qu'il en soit, à propos de la nouvelle version, Metaquotes a déclaré qu'elle serait rétrocompatible au niveau ex4, mais pas vraiment au niveau mq4.

Pour moi, il semble qu'il est censé être rétrocompatible au niveau mq4, les indicateurs personnalisés inclus sont les versions originales mql4 avec un changement du nom de la fonction init(), ils compilent dans le nouveau compilateur et s'exécutent sur le nouveau terminal, ce qui doit signifier que nous pouvons toujours coder des indicateurs en utilisant IndicatorCounted() si nous le voulons ...

init() est maintenant appelé int OnInit(void) et il retourne(INIT_SUCCEEDED) ;

 
SDC:

Pour moi, il semble qu'il est censé être rétrocompatible au niveau mq4, les indicateurs personnalisés inclus sont les versions originales mql4 avec un changement de nom de la fonction init(), ils compilent dans le nouveau compilateur et s'exécutent sur le nouveau terminal, cela doit signifier que nous pouvons toujours coder des indicateurs en utilisant IndicatorCounted() si nous le voulons ...

init() est maintenant appelé int OnInit(void) et il retourne(INIT_SUCCEEDED) ;

Désolé mais il ne sera pas rétrocompatible au niveau de mq4, voir l'annonce de la première beta.

Différences par rapport à l'ancienne version MQL4 :

  • Changement de la priorité des opérations logiques AND/OR. Maintenant, tout est similaire au standard C/C++.

  • Introduction d'une évaluation raccourcie des expressions logiques. Maintenant, lorsqu'une expression logique est évaluée avant d'atteindre sa fin, les expressions suivantes restantes ne sont pas évaluées, comme en C/C++.

  • Seules les valeurs entières sont maintenant utilisées dans l'opérateur switch. Les valeurs réelles auraient pu être utilisées auparavant

  • Le symbole du point ne peut plus être utilisé dans les noms de variables. De même, les symboles '@', '$' et '?' ne peuvent plus être utilisés dans les noms de variables.

  • Les exigences relatives à la fonction de démarrage ont été renforcées. Auparavant, les paramètres pouvaient être définis dans la fonction de démarrage. Désormais, tous les points d'entrée init, start, deinit, OnInit, OnStart, OnTick, OnTimer et autres doivent correspondre exactement à leur signature.

  • En raison de l'expansion des mots-clés, des noms tels que short, long, float, const, virtual, input, delete, new, do, char ne peuvent plus être utilisés.

  • Maintenant, les fonctions dll importées ne peuvent pas accepter les tableaux de chaînes MQL comme paramètre, comme dans MQL5.

  • Introduction de noms de variables prédéfinis _Period, _Symbol, _LastError, _CriticalError, _StopFlag, _Point, _Digits, _UninitReason, _RandomSeed, qui peuvent entrer en conflit avec des variables simples déclarées sous les mêmes noms dans les fichiers sources existants.

  • le type datetime est devenu un type à 8 octets, comme dans MQL5.

Les différences ne sont pas critiques et peuvent être facilement corrigées dans le code. En contrepartie, nous accédons à de nombreuses fonctionnalités de MQL5, à une vitesse d'exécution améliorée et à un contrôle de qualité beaucoup plus strict.

Ce ne sont pas de gros changements, mais cela signifie qu'il n'y aura pas de rétrocompatibilité à 100% (mq4).
 
SDC:

...

init() est maintenant appelé int OnInit(void) et il renvoie bien(INIT_SUCCEEDED) ;

Vous pouvez utiliser les deux versions.
 

J'aime les nouvelles fonctionnalités du méta-éditeur.

 

Je pense que lorsque la nouvelle version sortira, cela causera beaucoup de confusion sur le forum pour les nouveaux venus car la nouvelle documentation mql4 est basée sur le codage mql5. Cela signifie que beaucoup de ce qui est décrit sur ce forum et dans la base de code sera contredit par la documentation mql4.

Configuration d'un tampon indicateur à partir de la nouvelle documentation mql4 : (Ceci contient des erreurs et ne compile pas)

#property copyright "2009, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
 
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//---- plot MA
#property indicator_label1  "MA"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- input parameters
input bool               AsSeries=true;
input int                period=15;
input ENUM_MA_METHOD     smootMode=MODE_EMA;
input ENUM_APPLIED_PRICE price=PRICE_CLOSE;
input int                shift=0;
//--- indicator buffers
double                   MABuffer[];
int                      ma_handle;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   if(AsSeries) ArraySetAsSeries(MABuffer,true);
   Print("Indicator buffer is timeseries = ",ArrayGetAsSeries(MABuffer));
   SetIndexBuffer(0,MABuffer,INDICATOR_DATA);
   Print("Indicator buffer after SetIndexBuffer() is timeseries = ",
         ArrayGetAsSeries(MABuffer));
   
//--- change the oredr of accessing elements of the indicator buffer
   ArraySetAsSeries(MABuffer,AsSeries);
   
   IndicatorSetString(INDICATOR_SHORTNAME,"MA("+period+")"+AsSeries);
//---
   ma_handle=iMA(Symbol(),0,period,shift,smootMode,price);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--- Copy the values of the moving average in the buffer MABuffer
   int copied=CopyBuffer(ma_handle,0,0,rates_total,MABuffer);
 
   Print("MABuffer[0] = ",MABuffer[0]);// Depending on the value AsSeries
                                      // Will receive a very old value
                                      // Or for the current unfinished bar
 
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
SDC:

Je pense que lorsque la nouvelle version sortira, cela causera beaucoup de confusion sur le forum pour les nouveaux venus car la nouvelle documentation mql4 est basée sur le codage mql5. Cela signifie que beaucoup de ce qui est décrit sur ce forum et dans la base de code sera contredit par la documentation mql4.

Configuration d'un tampon indicateur à partir de la nouvelle documentation mql4 : (Ceci contient des erreurs et ne compile pas)

Oui, vous avez raison, ce sera une transition difficile. Cependant, je pense qu'elle ne sera pas difficile pour les débutants mais pour les codeurs expérimentés de mql4 qui ne connaissent pas encore mql5. En général, les débutants ne lisent pas la documentation.
 

Avez-vous déjà codé en MQL5 angevoyageur ?

Raison: