Questions des débutants MQL5 MT5 MetaTrader 5 - page 757

 
User_mt5:


D'une manière générale, il existe un concept appelé "gradient". Il s'agit d'un indicateur qui décrit la "pente" (d'un graphique). Dans le contexte de cette industrie, cet indicateur peut être exprimé en termes de point/temps. Il s'agit essentiellement d'un taux. Cet indicateur ne dépendra pas de l'échelle, car il n'est pas attaché au graphique. Utilisez un gradient et non un angle.


Comment calculez-vous ce gradient ?

Pouvez-vous développer votre idée ? Veuillez noter dans quel fil de discussion du forum j'ai écrit ma question.

 
igorbel:

Comment calculez-vous ce gradient ?

Pouvez-vous développer votre idée ? Veuillez noter dans quel fil de discussion du forum j'ai écrit ma question.

Je n'ai pas d'idée.

Je parle de mathématiques simples. Le gradient est la vitesse. La vitesse en soi, c'est quand le temps est au dénominateur. Dans l'usage courant, il s'agit de la vitesse d'une voiture, exprimée en kilomètres/heure. Mais la vitesse en général peut être différente. Par exemple, la vitesse d'écriture d'un code logiciel est mesurée en nombre de lignes par jour. Dans le cas d'un graphique de prix, la vitesse est mesurée en nombre de points par minute. Par convention, on peut supposer que si le gradient (pente, taux d'ascension) à un certain endroit du graphique est supérieur à, par exemple, 100 points/minute, alors cette partie peut être considérée comme une tendance, et si elle est inférieure, alors comme un plat.

 

Bonjour 2017.07.07_15:55 GMT+3. Je ne comprends pas. Il semble qu'il devrait y avoir un signal, mais dans le testeur de stratégie, il n'y en a pas. En quoi votre testeur MT5 loué est-il différent du testeur MT4 ? Je l'ai écrit presque comme dans la moyenne mobile standard.mq5 . Mais j'ai réussi à tester le conseiller expert sur mon compte de démonstration. Il a ouvert une transaction, mais j'ai dû la fermer moi-même. J'ai réparé la fermeture. Mais j'ai écrit autre chose et l'EA a cessé d'ouvrir des transactions à nouveau. Zéro erreur et zéro avertissement ne sont pas un indicateur du bon état du conseiller expert. J'étais coincé ici. Comment puis-je savoir que le conseiller expert ne fonctionne pas ? Je dois encore déranger Karputov. Si j'avais reçu la liste complète des interdictions, je l'aurais fait moi-même. J'affiche les fichiers, mais pas tous. 16 H 06 GMT+3.

 

Aidez-moi !

Pour obtenir la valeur de l'indicateur dans MQL4, il suffit d'utiliser la fonction suivante

double CMAf(int index)
  {
   return NormalizeDouble(iMA(Symbol(),0,period_CMA,0,0,0,index),Digits);
  }
Comment obtenir un analogue pour MQL5 ?
 
-Aleks-:

Aidez-moi !

Pour obtenir le nom d'un indicateur dans MQL4, une simple fonction suffit

Comment obtenir un analogue pour MQL5 ?

Avez-vous consulté l'aide d'iMA?

Première étape : dans l'"en-tête", déclarez une variable pour stocker la poignée de l'indicateur iMA :

Deuxième étape : créer le handle de l'indicateur dans OnInit().

//+------------------------------------------------------------------+
//|                                                       iMAGet.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input int                  ma_period=10;                 // period of ma 
input int                  ma_shift=0;                   // shift 
input ENUM_MA_METHOD       ma_method=MODE_SMA;           // type of smoothing 
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;    // type of price 
input ENUM_TIMEFRAMES      period=PERIOD_CURRENT;        // timeframe 
//---
int                        handle_iMA;                   // variable for storing the handle of the iMA indicator 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iMA
   handle_iMA=iMA(Symbol(),period,ma_period,ma_shift,ma_method,applied_price);
//--- if the handle is not created 
   if(handle_iMA==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double ma_0=iMAGet(0);
   double ma_1=iMAGet(1);

   Comment("MA #0: ",DoubleToString(ma_0,Digits()+1),"\n",
           "MA #1: ",DoubleToString(ma_1,Digits()+1));
  }
//+------------------------------------------------------------------+
//| Get value of buffers for the iMA                                 |
//+------------------------------------------------------------------+
double iMAGet(const int index)
  {
   double MA[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iMA,0,index,1,MA)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(MA[0]);
  }
//+------------------------------------------------------------------+


Et le résultat (le réticule sur la capture d'écran est placé sur la barre n°1) :

iMAGet

Dossiers :
iMAGet.mq5  7 kb
 
Vladimir Karputov:

Avez-vous vu l'aide d'iMA?

Première étape : déclarer une variable dans l'"en-tête" pour stocker la poignée de l'indicateur iMA :

Deuxième étape : créer le handle de l'indicateur dans OnInit().

Et le résultat (le réticule sur la capture d'écran est placé sur la barre n°1) :

Merci pour la réponse.

Dans MQL4, tout est déclaré dans une fonction - il existe donc un ensemble de fonctions qui sont activées en fonction des paramètres de l'EA. Si je ne me trompe pas, dans votre cas la mémoire sera allouée pour des dizaines d'indicateurs différents que le TS permet d'utiliser, ce qui n'est pas rationnel, ou la mémoire ne sera pas allouée ?

 

Est-il possible d'appeler une fonction de classe sans avoir un objet spécifique de cette classe ? Ce serait donc quelque chose comme ça :

class test
  {
public:
                     test(void);
                    ~test(void);
  public: void PrintInfo (){Print ("Class test");}
  };
//---
void OnStart()
  {
      test.PrintInfo() ;
  }

Ou est-il nécessaire de créer un objet ? Même si cette fonction fait référence à la définition de la classe elle-même, plutôt qu'à une instance de celle-ci.

 

Si la fonction n'a pas besoin d'accéder aux variables de la classe, rendez-la statique.

class test
{
public:
   test();
   ~test();

   static void PrintInfo()
   {
      Print( "Class test" );
   }
};

void OnStart()
{
   test::PrintInfo();
}
 
Koldun Zloy:

Si la fonction n'a pas besoin d'accéder aux variables de la classe, rendez-la statique.

Merci, c'est exactement ce dont j'ai besoin.
 

Des erreurs se produisent - quel est le problème ? Dans MQL4, cela fonctionne...


   double arrFibo[17]=
     {
      0,
      0.236,
      0.382,
      0.5,
      0.618,
      0.764,
      1,
      1.236,
      1.382,
      1.5,
      1.618,
      2.0,
      2.236,
      2.382,
      2.5,
      2.618,
      2.764,
      3        //Всего уровней 17 + 0
     };
'{' - trop d'initialisateurs TZ_Sky_and_Ground_V_04.mq5 2484 6
Raison: