Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1485

 

Ich habe es auf MQL5 umgeschrieben. Ich habe die Arbeit mit Objekten daraus entfernt.

Wenn ich Ratio=1 einstelle, erscheint es im Diagramm, wie es sein sollte, d.h. es wird einfach als Hi-Low-Balken in das Diagramm eingeblendet. Aber im Debugging-Modus ist das aus irgendeinem Grund nicht so,

Es wird so angezeigt, als ob Ratio auf 2 eingestellt ist, obwohl es auf 1 eingestellt ist.

Ist im Code alles korrekt?

//+------------------------------------------------------------------+
#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);
  }
//+------------------------------------------------------------------+
 
Wie erhält man den Wert des Parameters
rates_total
per Skript?

Im Indikator ist das klar. Aber das Skript?


#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 #:
Wie erhält man den Parameterwert per Skript?

Im Indikator ist das klar. Aber das Skript?


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

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

Das ist verständlich, so habe ich es auch schon gemacht. Ich danke Ihnen.

#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));
   

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

Ich habe mich gefragt, ob es einen anderen Weg gibt.

 
Novichokkk #:

Das ist verständlich, das habe ich auch schon gemacht. Dankeschön

Ich habe mich gefragt, ob es einen anderen Weg gibt.

Sie können. SeriesInfoInteger().

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

Wo kann ich ein einfaches Beispiel für die Implementierung einer stückweisen linearen Interpolation sehen?

Zum Beispiel für Array x[]={0.1 , 0.8, 3.2, 7.9, 9.3} (5 Werte) gibt es entsprechende Werte in Array y[]={-3.2, 2.7, 1.1, -6.4, 20} (5 Werte)

Wie bekomme ich die entsprechenden Werte aus dem Array y[]9 Werte für das Argument x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3} (9 Werte) über die stückweise lineare Interpolationsfunktion für das Argument x1[]={0.1, 1, 2, 2.5, 5, 5.1, 6, 8, 9.3} (9 Werte)?

Ich verstehe, dass wir zunächst im Array x[] nach dem Wert aus dem Array x1[] suchen, und wenn sie genau übereinstimmen, dann den Wert aus dem Array y[]/ dem Array y1[] zuweisen.

Und wenn sie nicht übereinstimmen, suchen wir in Array x1[] nach 2 Werten, zwischen denen der Wert aus Array x1 liegt. Dann berechnen wir für das Array y1[] den entsprechenden Wert aus dem Array y[] nach der Formel.

Und so weiter für die gewünschte Anzahl von Punkten. Aber die Suche durch Aufzählung der einzelnen Elemente des Arrays ist nicht wirtschaftlich. Wahrscheinlich verwenden wir die binäre Suche (ich habe über die Suchmethoden gelesen).

Ich würde also gerne irgendwo sehen, wie eine solche Funktion geschrieben ist und wie sie verwendet wird. Bei der Suche habe ich nur Verweise auf ALGLIB gefunden. Aber ich konnte nicht verstehen, woher sie kommt und wie.

Schicken Sie mich nicht zu ALGLIB.

 
Novichokkk Elemente des Arrays ist nicht wirtschaftlich. Wahrscheinlich verwenden Sie die binäre Suche (ich habe über Suchmethoden gelesen).

Ich würde also gerne irgendwo sehen, wie eine solche Funktion geschrieben ist und wie sie verwendet wird. Bei der Suche habe ich nur Verweise auf ALGLIB gefunden. Aber ich konnte nicht herausfinden, woher sie kommt und wie.

Schicken Sie mich nicht zu ALGLIB.

Warum nach jedem suchen? Wenn x und x1 geordnet sind, gehen wir sie mit zwei Indizes durch.

 
JRandomTrader #:

Warum nach jedem einzelnen suchen? Wenn x und x1 geordnet sind, gehen wir um zwei Indizes weiter.

Ja, daran habe ich nicht gedacht. Deshalb habe ich nach Beispielen gefragt. Aber ich konnte keine finden. Ich brauche den richtigen Weg, um es zu tun.

 
Wie kann ich einen Roboter in MQL5 in den Markt zum Verkauf hochladen, kann ich Anweisungen haben?
 
Alisher Batiraliev #:
Wie kann ich einen Roboter in MQL5 auf dem Markt zum Verkauf hochladen, kann ich Anweisungen erhalten?

Im Markt. Es gibt eine große grüne Schaltfläche oben rechts...


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