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

 
Tango_X:

Ich danke Ihnen! Ich dachte immer, dass ein Verweis auf Klassen ein Verweis auf eine Klasse ist. Aber hier ist es nur eine Erklärung... was hat das damit zu tun?

Dies sind die Grundlagen von OOP, sehen Sie sich die Hilfe an. Zum Beispiel die Operatoren Neu/Löschen und so weiter.

 
Tango_X:

Ich danke Ihnen! Ich dachte immer, dass ein Verweis auf Klassen ein Verweis auf eine Klasse ist. Aber hier ist es nur eine Erklärung... was hat das damit zu tun?

Ich werde es mir ansehen, danke!!!

 
Seric29:

In welchem Metatrader erstellen Sie Symbole auf MT5?

Ja, auf MT5

 
fxsaber:

Das können Sie nicht.

Das ist eine Schande.

Ich mache das nach dem Hochladen in Excel, aber auch dort hat es seine Unzulänglichkeiten. Es ist schade, dass diese Funktion nicht eingebaut ist.

Aber ich habe die Vermutung, dass es irgendwie programmatisch umgesetzt werden kann)

 
ISL:

Ja, auf MT5.

Es ist schade, dass MT4 es nicht erlaubt, Symbole zu erstellen, man kann Werte ändern, aber man kann sie nicht erstellen.

 

Bringen Sie mir bei, wie ich ArraySetAsSeries() loswerden kann!!!

hier habe ich einen Teil des bekannten Indikators für MT4 umgeschrieben (Perfect trend line), alles funktioniert wie in MT4, ABER... Aber ich kann nicht loswerden gezwungen ArraySetAsSeries() von mir geschrieben - sonst der Indikator nicht richtig zählen, ich weiß, dass ArraySetAsSeries() wird die Richtung der Indizierung im Array ändern, aber für 2 Tage habe ich nicht geschafft, es selbst zu tun!

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_plots   1
//--- plot BufBars
#property indicator_label1  "BufBars"
#property indicator_type1   DRAW_COLOR_BARS
#property indicator_color1  clrRed,clrAqua,clrNONE
#property indicator_style1  STYLE_SOLID
#property indicator_width1  3

//--- input parameters
input int SlowLength         = 7; //Slow length
input int SlowPipDisplace    = 0; //Slow pip displace
input int FastLength         = 3; //Fast length
input int FastPipDisplace    = 0; //Fast pip displace
//--- indicator buffers
double         BufBarsBuffer1[];
double         BufBarsBuffer2[];
double         BufBarsBuffer3[];
double         BufBarsBuffer4[];
double         BufBarsColors[];
double         BufLSELLBuffer[];
double         BufLBUYBuffer[];
static int trend=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,BufBarsBuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,BufBarsBuffer2,INDICATOR_DATA);
   SetIndexBuffer(2,BufBarsBuffer3,INDICATOR_DATA);
   SetIndexBuffer(3,BufBarsBuffer4,INDICATOR_DATA);
   SetIndexBuffer(4,BufBarsColors,INDICATOR_COLOR_INDEX);
   SetIndexBuffer(5,BufLSELLBuffer,INDICATOR_DATA);
   SetIndexBuffer(6,BufLBUYBuffer,INDICATOR_DATA);
   for(int i=0;i<7;i++)
     {
      PlotIndexSetInteger(i,PLOT_DRAW_BEGIN,FastLength+1);
      PlotIndexSetDouble(i,PLOT_EMPTY_VALUE,0.0);
     }
   ArraySetAsSeries(BufBarsBuffer1,true);
   ArraySetAsSeries(BufBarsBuffer2,true);
   ArraySetAsSeries(BufBarsBuffer3,true);
   ArraySetAsSeries(BufBarsBuffer4,true);
   ArraySetAsSeries(BufBarsColors,true);
   ArraySetAsSeries(BufLBUYBuffer,true);
   ArraySetAsSeries(BufLSELLBuffer,true);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
   trend=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[])
  {
//---
   int i,limit;
   double thigh1,tlow1,thigh2,tlow2,trendUp,trendDn;
   ArraySetAsSeries(open,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(close,true);
   if(prev_calculated==0)
     {
      limit=rates_total-1;
      BufLSELLBuffer[limit]=high[limit];
      BufLBUYBuffer[limit]=low[limit];
      limit--;
     }
   else limit=rates_total-prev_calculated+1;
   for(i=limit;i>=0;i--)
     {
      thigh1= high[iHighest(NULL,0,MODE_HIGH,SlowLength,i)]+SlowPipDisplace * _Point;
      tlow1 = low[iLowest(NULL,0,MODE_LOW,SlowLength,i)]-SlowPipDisplace * _Point;
      thigh2= high[iHighest(NULL,0,MODE_HIGH,FastLength,i)]+FastPipDisplace * _Point;
      tlow2 = low[iLowest(NULL,0,MODE_LOW,FastLength,i)]-FastPipDisplace * _Point;
      if(close[i]>BufLBUYBuffer[i+1])  trendUp=tlow1;  else trendUp=thigh1;
      if(close[i]>BufLSELLBuffer[i+1]) trendDn=tlow2;  else trendDn=thigh2;
      BufLSELLBuffer[i]= trendDn;
      BufLBUYBuffer[i] = trendUp;
      BufBarsBuffer1[i] = 0.0;
      BufBarsBuffer2[i] = 0.0;
      BufBarsBuffer3[i] = 0.0;
      BufBarsBuffer4[i] = 0.0;
      BufBarsColors[i]  = 2;
      if(close[i]<trendUp && close[i]<trendDn)
        {
         BufBarsBuffer1[i] = open[i];
         BufBarsBuffer2[i] = high[i];
         BufBarsBuffer3[i] = low[i];
         BufBarsBuffer4[i] = close[i];
         BufBarsColors[i]  = 0;
        }
      if(close[i]>trendUp && close[i]>trendDn)
        {
         BufBarsBuffer1[i] = open[i];
         BufBarsBuffer2[i] = high[i];
         BufBarsBuffer3[i] = low[i];
         BufBarsBuffer4[i] = close[i];
         BufBarsColors[i]  = 1;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
Igor Makanu:

Bringen Sie mir bei, wie ich ArraySetAsSeries() loswerden kann!!!

hier habe ich einen Teil des bekannten Indikators für MT4 umgeschrieben (Perfect trend line), alles funktioniert wie in MT4, ABER... Ich weiß, dass ArraySetAsSeries() die Richtung der Indizierung im Array ändern wird, aber für 2 Tage habe ich es nicht selbst geschafft!

Ich kann Folgendes tun

#ifdef __MQL5__
   ArraySetAsSeries(BufBarsBuffer1,true);
   ArraySetAsSeries(BufBarsBuffer2,true);
   ArraySetAsSeries(BufBarsBuffer3,true);
   ArraySetAsSeries(BufBarsBuffer4,true);
   ArraySetAsSeries(BufBarsColors,true);
   ArraySetAsSeries(BufLBUYBuffer,true);
   ArraySetAsSeries(BufLSELLBuffer,true);
#endif
 
Vitaly Muzichenko:

Ich kann es so machen

Ich weiß, dass Sie die Indikatorwerte ohneArraySetAsSeries() berechnen können, aber ich sehe nicht, was ich falsch mache. Ich habe versucht, ein einfaches Beispiel in kodobase zu finden, aber leider sind alle Indikatoren auf unterschiedliche Weise geschrieben, ich kann es nicht herausfinden (((

SZY: Ich brauche den plattformübergreifenden Indikator nicht, ich möchte die Standard-Array-Indizierung behandeln, ich habe bereits ArrayGetAsSeries() verwendet - ich verstehe es nicht

 
Igor Makanu:

Ich weiß, dass Sie die Indikatorwerte ohneArraySetAsSeries() berechnen können, aber ich sehe nicht, was ich falsch mache. Ich habe versucht, ein einfaches Beispiel in kodobase zu finden, leider sind alle Indikatoren auf unterschiedliche Weise geschrieben, ich kann es nicht verstehen (((

Ihre Indikatorberechnung geht vom Anfang bis zum Ende (von den jüngsten historischen Daten über die jüngsten - bis zu den aktuellen). Und dies zeigt die Indizierung wie bei Zeitreihen an. Daher sollten die Arrays entsprechend indiziert werden, was bei Ihnen der Fall ist.

Was läuft dann schief?

 
Igor Makanu:

Ich weiß, dass ich die Indikatorwerte ohneArraySetAsSeries() berechnen kann, aber ich weiß nicht, was ich falsch mache. Ich habe versucht, ein einfaches Beispiel in kodobase zu finden, aber leider sind alle Indikatoren auf unterschiedliche Weise geschrieben, ich kann es nicht herausfinden (((

SZZ: Ich brauche den plattformübergreifenden Indikator nicht, ich möchte die Standard-Array-Indizierung behandeln, ich habe bereits ArrayGetAsSeries() verwendet - ich verstehe es nicht

Sie können es auch ohne ArraySetAsSeries machen, verwenden Sie einfach Print oder Comment, um klarzustellen, dass der Array-Index 0, zum Beispiel open[0], gedruckt wird. Von hier aus können Sie Ihre eigenen Entscheidungen treffen. Es wird Ihnen helfen, herauszufinden, was was ist.

Grund der Beschwerde: