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

 
Kira27:

(dc)) Les dernières réponses aux questions ont beaucoup aidé à comprendre la configuration de SB.

variable -- *position. Il est marqué en rouge. Est-ce juste une variable avec ce nom ou est-ce que * signifie quelque chose ? Il est compilé cette traînée et inclut #include

Et il n'y a pas de telle variable dans aucun d'entre eux. D'où vient-elle, elle a été déclarée quelque part ?) Ensuite, d'ailleurs, ce n'est pas moins intéressant, qu'est-ce que c'est -- double &sl ? ??

Lisez lesfonctions pour commencer. Il y a des variables dans la déclaration des fonctions.

Et aussi insérer le code correctement avec le bouton Code

 

Pouvez-vous me dire quel pourrait être le problème ? Je place un EA sur un graphique, il ne veut pas entrer, le conseiller expert écrit ceci :

2021.01.24 22:11:44.019 Nova V6 (EURUSD,H1) cannot load custom indicator 'Standard Deviation smoothing' [4802]
2021.01.24 22:11:44.020 Nova V6 (EURUSD,H1) Failed to create handle of the iCustom indicator for the symbol EURUSD/PERIOD_H1, error code 4802



Dans le journal, ceci:

2021.01.24 22:18:04.506 Experts expert Nova V6 (EURUSD,H1) loaded successfully
2021.01.24 22:18:07.274 Experts initializing of Nova V6 (EURUSD,H1) failed with code 1
2021.01.24 22:18:07.288 Experts expert Nova V6 (EURUSD,H1) removed
Standard Deviation - Трендовые индикаторы - Справка по MetaTrader 5
Standard Deviation - Трендовые индикаторы - Справка по MetaTrader 5
  • www.metatrader5.com
Технический Индикатор Стандартное отклонение (Standard Deviation, StdDev) измеряет волатильность рынка. Этот индикатор характеризует размер...
 
pit84:

Pouvez-vous me dire quel pourrait être le problème ? Je place un EA sur un graphique, il ne veut pas entrer, le conseiller expert écrit ceci :



Dans mon journal, il est écrit ceci:

Il n'y a pas d'indicateur de" lissage de l'écart-type " dans le dossier "indicateurs".

 
pit84:

Pouvez-vous me dire quel pourrait être le problème ? Je place un EA sur un graphique, il ne veut pas entrer, le conseiller expert écrit ceci :



Dans le journal, il est dit ceci:

Pas d'indicateur personnalisé.

 

La chose la plus intéressante est qu'il existe un indicateur et qu'il peut être placé sur un graphique sans aucun problème, mais le conseiller expert ne veut pas...

 
pit84:

La chose la plus intéressante est qu'il y a un indicateur et qu'il va sur le graphique sans aucun problème, mais l'EA ne veut pas...

Lisez attentivement : à l'endroit que vous indiquez, il n'y a pas d'indicateur.

Insérez votre code MQL5 à l'aide du bouton Code et collez une capture d'écran à partir de l'explorateur Windows - pour prouver la présence de l'indicateur.
 
BillionerClub:

Non loin de la caisse, de la marche, même erreur, dites-moi quelle est l'erreur dans le code ?

Tous les télépathes sont en vacances. Malheureusement, il n'y a personne pour lire vos pensées.

 
BillionerClub:

Non loin de la caisse, en partant, même erreur, dites-moi quelle est l'erreur dans le code ?

De, loin, de, allant à, disant, allant à, avec - HZ )))))))))))

 
Vladimir Karputov:

Tous les télépathes sont en vacances. Malheureusement, il n'y a personne pour lire vos pensées.

En fait, je cherche moi-même des bugs dans mon code, mais comme il est discuté ici, j'ai décidé de vous le donner, peut-être qu'il est discuté aussi, peut-être que mon code sera résolu aussi...

 
//+------------------------------------------------------------------+
//|                                 Standard Deviation smoothing.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
#include <MovingAverages.mqh>
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_plots   1
//--- the iStdDev plot
#property indicator_label1  "StdDev smoothing"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrGreenYellow
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- input parameters 
input int                  Inp_StdDev_ma_period    = 20;          // period of averaging
input int                  Inp_StdDev_ma_shift     = 0;           // shift
input ENUM_MA_METHOD       Inp_StdDev_ma_method    = MODE_SMA;    // type of smoothing
input ENUM_APPLIED_PRICE   Inp_StdDev_applied_price= PRICE_CLOSE; // type of price
//--- indicator buffer 
double StdDevBuffer[];
double StdDevBufferTemp[];
int    handle_iStdDev;        // variable for storing the handle_iStdDev of the iStdDev indicator 
string short_name;            // name of the indicator on a chart 
int    bars_calculated=0;     // we will keep the number of values in the Standard Deviation indicator 
int    m_weightsum;
//+------------------------------------------------------------------+ 
//| Custom indicator initialization function                         | 
//+------------------------------------------------------------------+ 
int OnInit()
  {
   m_weightsum=0;
//--- assignment of array to indicator buffer 
   SetIndexBuffer(0,StdDevBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,StdDevBufferTemp,INDICATOR_CALCULATIONS);
//--- set shift 
   PlotIndexSetInteger(0,PLOT_SHIFT,Inp_StdDev_ma_shift);
//--- create handle_iStdDev of the indicator iStdDev   
   handle_iStdDev=iStdDev(Symbol(),Period(),Inp_StdDev_ma_period,
                          Inp_StdDev_ma_shift,Inp_StdDev_ma_method,Inp_StdDev_applied_price);
//--- if the handle_iStdDev is not created 
   if(handle_iStdDev==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle_iStdDev of the iStdDev indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//--- show the symbol/timeframe the Standard Deviation indicator is calculated for 
   short_name=StringFormat("StdDev smoothing(%d)",Inp_StdDev_ma_period);
   IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//--- normal initialization of the indicator   
   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[])
  {
//--- number of values copied from the iStdDev indicator 
   int values_to_copy;
//--- determine the number of values calculated in the indicator 
   int calculated=BarsCalculated(handle_iStdDev);
   if(calculated<=0)
     {
      PrintFormat("BarsCalculated() returned %d, error code %d",calculated,GetLastError());
      return(0);
     }
//--- if it is the first start of calculation of the indicator or if the number of values in the iStdDev indicator changed 
//---or if it is necessary to calculated the indicator for two or more bars (it means something has changed in the price history) 
   if(prev_calculated==0 || calculated!=bars_calculated || rates_total>prev_calculated+1)
     {
      //--- if the iStdDevBuffer array is greater than the number of values in the iStdDev indicator for symbol/period, then we don't copy everything  
      //--- otherwise, we copy less than the size of indicator buffers 
      if(calculated>rates_total)
         values_to_copy=rates_total;
      else
         values_to_copy=calculated;
     }
   else
     {
      //--- it means that it's not the first time of the indicator calculation, and since the last call of OnCalculate() 
      //--- for calculation not more than one bar is added 
      values_to_copy=(rates_total-prev_calculated)+1;
     }
//--- fill the array with values of the Standard Deviation indicator 
//--- if FillArrayFromBuffer returns false, it means the information is nor ready yet, quit operation 
   if(!FillArrayFromBuffer(StdDevBufferTemp,Inp_StdDev_ma_shift,handle_iStdDev,values_to_copy))
      return(0);
   if(prev_calculated==0)
      for(int i=0;i<Inp_StdDev_ma_period-1;i++)
         StdDevBufferTemp[i]=0.0;
   switch(Inp_StdDev_ma_method)
     {
      case  MODE_SMA:
         SimpleMAOnBuffer(rates_total,prev_calculated,0,3,StdDevBufferTemp,StdDevBuffer);
         break;
      case  MODE_EMA:
         ExponentialMAOnBuffer(rates_total,prev_calculated,0,3,StdDevBufferTemp,StdDevBuffer);
         break;
      case  MODE_SMMA:
         SmoothedMAOnBuffer(rates_total,prev_calculated,0,3,StdDevBufferTemp,StdDevBuffer);
         break;
      default:
         LinearWeightedMAOnBuffer(rates_total,prev_calculated,0,9,StdDevBufferTemp,StdDevBuffer,m_weightsum);
         break;
     }
//--- memorize the number of values in the Standard Deviation indicator 
   bars_calculated=calculated;
//--- return the prev_calculated value for the next call 
   return(rates_total);
  }
//+------------------------------------------------------------------+ 
//| Filling indicator buffers from the iStdDev indicator             | 
//+------------------------------------------------------------------+ 
bool FillArrayFromBuffer(double &std_buffer[],  // indicator buffer of the Standard Deviation line 
                         int std_shift,         // shift of the Standard Deviation line 
                         int ind_handle,        // handle_iStdDev of the iStdDev indicator 
                         int amount             // number of copied values 
                         )
  {
//--- reset error code 
   ResetLastError();
//--- fill a part of the iStdDevBuffer array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(ind_handle,0,-std_shift,amount,std_buffer)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iStdDev indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(false);
     }
//--- everything is fine 
   return(true);
  }
//+------------------------------------------------------------------+ 
//| Indicator deinitialization function                              | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
//--- clear the chart after deleting the indicator 
   Comment("");
  }
//+------------------------------------------------------------------+

Vladimir Karputov:

Lisez attentivement : là où vous indiquez qu'il n'y a pas d'indicateur.

Insérez votre code MQL5 à l'aide du bouton et collez une capture d'écran depuis l'Explorateur Windows - pour prouver la présence de l'indicateur.
Dossiers :
tvkzq3.PNG  145 kb
xfwzp8.PNG2.PNG  148 kb
Raison: