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

 
Honnêtement, je ne comprends pas comment utiliser la bibliothèque normalement dans le terminal sans possibilité de recherche et de tri... Il suffit de faire défiler bêtement des centaines de lignes ? !!!
 
Alena000:
Pour être honnête, je ne comprends pas comment utiliser la bibliothèque dans le terminal sans chercher et trier du tout... Il suffit de faire défiler stupidement des centaines de lignes ?!!!

La recherche est intégrée dans le MetaEditor (coin supérieur droit). Vous pouvez rechercher des occurrences par :

  • ouvrir le document
  • à travers tous les fichiers
  • MQL4/MQL5.communauté
La recherche est intégrée au terminal lui-même (dans le coin supérieur droit). Depuis le terminal, vous pouvez effectuer des recherches dans l'ensemble de la communauté MQL5 (Articles, Produits, Bibliothèque, Signaux, Forum, Blogs, Documentation).

 
Quelqu'un a-t-il des idées sur la question ? ))
 
Maxim Dobrovolskii:
Quelqu'un a-t-il des idées sur la question ? ))

Ça pourrait aider.

Dossiers :
Fractal.mq4  4 kb
 
Victor Nikolaev:

Ça pourrait aider.

J'aimerais comprendre et savoir pourquoi ma variante ne fonctionne pas. Je pense qu'il s'agit de la combinaison EA+indicateur, mais ce qui ne va pas n'est pas clair.
 
Maxim Dobrovolskii:
J'aimerais comprendre et savoir pourquoi ma variante ne fonctionne pas. Il me semble que c'est à cause de la combinaison Conseiller expert+indicateur, mais je ne sais pas de quoi il s'agit exactement.
Peut-être que le problème est que dans OnTick() vous ne lisez que le tampon zéro, mais dans OnDeinit() vous lisez à la fois le zéro et le premier tampon ?
 
Maxim Dobrovolskii:
Merci, mais je veux comprendre et trouver pourquoi ma version ne fonctionne pas. Je pense que c'est à cause de la combinaison Conseiller expert+indicateur.

Tu veux que je te prouve qu'il n'y a pas vraiment de problème.

J'ai juste besoin du code de l'indicateur. Je n'aime pas le copier.

Je vais peut-être changer quelque chose dans votre indicateur (et je sais même quoi).

 
Alexey Viktorov:
Peut-être que le problème est que dans OnTick() vous lisez seulement le tampon zéro, mais dans OnDeinit() le tampon zéro et le premier tampon ?
Le Deinit sert à montrer qu'il y a une valeur dans l'un des tampons.
 
Victor Nikolaev:

Vous voulez que je vous prouve qu'il n'y a pas vraiment de problème.

J'ai juste besoin du code de l'indicateur. Je n'aime pas le copier.

Je vais peut-être changer quelque chose dans votre indicateur (et je sais même quoi).

//+------------------------------------------------------------------+
//|                                               modify_Fractal.mq4 |
//|          MoneyRobotics Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "MoneyRobotics Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property  indicator_label1  "Up"
#property  indicator_label2  "Down"
#property  indicator_type1   DRAW_ARROW
#property  indicator_type2   DRAW_ARROW
#property  indicator_style1  STYLE_SOLID
#property  indicator_style2  STYLE_SOLID
#property  indicator_width1  1
#property  indicator_width2  1
#property  indicator_color1 Red
#property  indicator_color2 Blue


//--- indicator buffers

double ExtUpFractalsBuffer[];
double ExtDownFractalsBuffer[];

//+-----------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---- indicator buffers mapping  
    SetIndexBuffer(0,ExtUpFractalsBuffer);
    SetIndexBuffer(1,ExtDownFractalsBuffer);  
//---- drawing settings
    SetIndexStyle(0,DRAW_ARROW);
    SetIndexArrow(0,217);
    SetIndexStyle(1,DRAW_ARROW);
    SetIndexArrow(1,218);
//----
    SetIndexEmptyValue(0,0.0);
    SetIndexEmptyValue(1,0.0);
//---- name for DataWindow
    SetIndexLabel(0,"Modify_Fractal Up");
    SetIndexLabel(1,"Modify_Fractal Down");
//---- initialization done  
   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[])
  {
//---
   int    i, nCountedBars;
   double dCurrent;
   nCountedBars=IndicatorCounted();
//---- last counted bar will be recounted    
   
   if(nCountedBars<=8) i=Bars-nCountedBars-4;
   if(nCountedBars>8)
     {
      nCountedBars--;
      i=Bars-nCountedBars-4;
     }
//----Up and Down Fractals
   while ( i >= 4 )
     {
      //----Fractals up bFound=false;
      dCurrent=High[i];
      if(dCurrent>High[i+1] && dCurrent>High[i+2] && dCurrent>High[i+3] &&
         dCurrent>High[i-1] && dCurrent>High[i-2] && dCurrent>High[i-3] && 
         dCurrent>High[i-4] )
        {
         ExtUpFractalsBuffer[i]=NormalizeDouble(dCurrent + 1* Point,Digits);
        }
                           
      //----Fractals down
      dCurrent=Low[i];
      if(dCurrent<Low[i+1] && dCurrent<Low[i+2] && dCurrent<Low[i+3] && 
         dCurrent<Low[i-1] && dCurrent<Low[i-2] && dCurrent<Low[i-3] && 
         dCurrent<Low[i-4])
        {
         ExtDownFractalsBuffer[i]=NormalizeDouble(dCurrent - 1* Point,Digits);
        }
      i--;
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+


Le code de l'indicateur.
 
Maxim Dobrovolskii:
Deinit est de montrer qu'il y a une valeur dans un tampon.

Il y a de la valeur dans le tampon zéro et le premier tampon. Sur la M15, nous avons maintenant des fractales sur 5 et 21 barres. Ce script

/********************Script program start function*******************/
void OnStart()
{
Print("******************", iCustom(_Symbol, PERIOD_CURRENT, "modify_Fractal", 1, 5));
Print("******************", iCustom(_Symbol, PERIOD_CURRENT, "modify_Fractal", 0, 21));
}/*******************************************************************/

trouve et imprime tout correctement. De même, pour le conseiller expert, iCustom() fonctionne aussi bien dans le script que dans le conseiller expert.

Raison: