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

 

Je l'ai réécrit en MQL5. J'ai supprimé le travail avec les objets.

En réglant Ratio=1, il apparaît sur le graphique comme il devrait l'être, c'est-à-dire qu'il est juste superposé sur le graphique comme une barre Hi-Low. Mais en mode débogage, ce n'est pas le cas pour une raison quelconque,

elle s'affiche comme si Ratio était réglé sur 2, alors qu'il est réglé sur 1.

Est-ce que tout est correct dans le code ?

//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   1
//--- plot Histogram_2
#property indicator_label1  "Histogram_2"
#property indicator_type1   DRAW_HISTOGRAM2
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1

input int Ratio=1;
int limit;
int limitBars=0;

double H[];
double L[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   SetIndexBuffer(0,H,INDICATOR_DATA);
   SetIndexBuffer(1,L,INDICATOR_DATA);
   ArraySetAsSeries(H,true);
   ArraySetAsSeries(L,true);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

   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[])
  {
   double max[256];
   double min[256];

   if(limitBars<Bars(_Symbol,_Period))
      limit=CHART_FIRST_VISIBLE_BAR;

   for(int i=0; i<limit; i++)
     {
      for(int shift=0; shift<Ratio; shift++)
        {
         max[shift]=iHigh(Symbol(),Period(),i*Ratio+shift);
         min[shift]=iLow(Symbol(),Period(),i*Ratio+shift);
        }

      H[i]=max[ArrayMaximum(max,0,Ratio)];
      L[i]=min[ArrayMinimum(min,0,Ratio)];
     }

   if(limit>1)
     {
      max[0]=H[ArrayMaximum(H,0,limit)];
      min[0]=L[ArrayMinimum(L,0,limit)];
     

     }

   limitBars=Bars(_Symbol,_Period);
   limit=1;
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Comment obtenir la valeur du paramètre
rates_total
par script ?

C'est clair dans l'indicateur. Mais le script ?


#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()

  {
      Alert(rates_total());
    }
Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2023.12.04
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
Novichokkk #:
Comment obtenir la valeur d'un paramètre par script

C'est clair dans l'indicateur. Mais le script ?


https://www.mql5.com/ru/docs/series/bars

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

C'est compréhensible, j'ai déjà procédé de cette manière. Je vous remercie

#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()

  {

   Alert(Bars(_Symbol,_Period));
   

  }
//+------------------------------------------------------------------+

Je me demandais s'il y avait un autre moyen.

 
Novichokkk #:

C'est compréhensible, j'ai déjà fait cela auparavant. Je vous remercie de votre attention.

Je me demandais s'il y avait un autre moyen.

Vous pouvez le faire. SeriesInfoInteger().

Документация по MQL5: Доступ к таймсериям и индикаторам / SeriesInfoInteger
Документация по MQL5: Доступ к таймсериям и индикаторам / SeriesInfoInteger
  • www.mql5.com
SeriesInfoInteger - Доступ к таймсериям и индикаторам - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Où puis-je trouver un exemple simple de mise en œuvre de l'interpolation linéaire par morceaux ?

Par exemple, pour le tableau x[]={0.1 , 0.8, 3.2, 7.9, 9.3} (5 valeurs), il existe des valeurs correspondantes dans le tableau y[]={-3.2, 2.7, 1.1, -6.4, 20} (5 valeurs).

Comment puis-je obtenir les valeurs correspondantes du tableau y[]9 valeurs pour l'argument x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3} (9 valeurs) via la fonction d'interpolation linéaire par morceaux pour l'argument x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3} (9 valeurs) ?

Je comprends que pour commencer, dans le tableau x[] nous cherchons la valeur du tableau x1[], et s'ils correspondent exactement, alors nous assignons la valeur du tableau y[]/ au tableau y1[].

Et si elles ne correspondent pas, nous recherchons 2 valeurs dans le tableau x1[], entre lesquelles se trouve la valeur du tableau x1. Ensuite, pour le tableau y1[], nous calculons la valeur correspondante du tableau y[] à l'aide de la formule.

Et ainsi de suite pour le nombre de points requis. Mais la recherche par énumération de chaque élément du tableau n'est pas économique. Il faut probablement utiliser la recherche binaire (je me suis renseigné sur les méthodes de recherche).

J'aimerais donc voir quelque part comment une telle fonction est écrite et comment elle est utilisée. Lors de mes recherches, je n'ai trouvé que des références à ALGLIB. Mais je n'ai pas pu comprendre d'où elle vient et comment elle est utilisée.

Ne m'envoyez pas à ALGLIB.

 
Novichokkk élément du tableau n'est pas économique. Il faut probablement utiliser la recherche binaire (je me suis renseigné sur les méthodes de recherche).

J'aimerais donc voir quelque part comment une telle fonction est écrite et comment elle est utilisée. Lors de mes recherches, je n'ai trouvé que des références à ALGLIB. Mais je n'ai pas réussi à comprendre d'où elle vient et comment.

Ne m'envoyez pas à ALGLIB.

Pourquoi chercher chacun d'entre eux ? Si x et x1 sont ordonnés, nous progressons à travers eux par deux indices.

 
JRandomTrader #:

Pourquoi chercher chacun d'entre eux ? Si x et x1 sont ordonnés, nous avançons de deux indices.

Oui, je n'y ai pas pensé. C'est pourquoi j'ai demandé des exemples. Mais je n'en ai pas trouvé. J'ai besoin de la bonne façon de procéder.

 
Comment puis-je télécharger un robot dans MQL5 sur le marché pour la vente, puis-je avoir des instructions ?
 
Alisher Batiraliev #:
Comment puis-je télécharger un robot dans MQL5 sur le marché pour la vente, puis-je obtenir des instructions ?

Sur le marché. Il y a un gros bouton vert en haut à droite...


Форекс-маркет – Магазин торговых роботов, советников и технических индикаторов для MetaTrader 5
Форекс-маркет – Магазин торговых роботов, советников и технических индикаторов для MetaTrader 5
  • www.mql5.com
Официальная витрина приложений для торговли из терминала