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

 
Elena Baranova:

Sehr geehrte Fachleute, könnten Sie mir bitte mitteilen, ob es möglich ist, die Werte des RSI für einen Wochenzeitraum im Code des Advisors zu erhalten, aber die Werte für die Woche zu berechnen, die nicht am Montag beginnt, sondern zum Beispiel am Mittwoch (d.h. die Woche von Mittwoch bis zum nächsten Mittwoch). Soweit ich weiß, ist das mit iRSI nicht möglich?

Bislang sehe ich nur eine Möglichkeit, den Code für die Berechnung selbst zu schreiben. Gibt es eine einfachere Lösung oder eine fertige Lösung?

Wenn Sie einen Indikator-Handle auf dem W1-Zeitrahmen erstellen, bedeutet dies, dass der Indikator auf W1-Balken berechnet wird: ein Balken, eine Woche.

Sie müssen einen Indikator-Handle für den D1-Zeitrahmen (Tageszeitrahmen) erstellen.


Im Allgemeinen ist die Bedeutung des Satzes "(d.h. eine Woche von Mittwoch bis zum nächsten Mittwoch)" nicht klar. Es spielt keine Rolle, welcher Wochentag beginnt - der Indikator wird auf Balken berechnet.

 
Vladimir Karputov:

Wenn Sie einen Indikator-Handle auf dem W1-Zeitrahmen erstellen, bedeutet dies, dass der Indikator auf W1-Balken berechnet wird: ein Balken, dann eine Woche.

Sie müssen einen Indikator-Handle für den D1-Zeitrahmen (Tageszeitrahmen) erstellen.


Im Allgemeinen ist die Bedeutung des Satzes "(d.h. eine Woche von Mittwoch bis zum nächsten Mittwoch)" nicht klar. Es spielt keine Rolle, an welchem Tag die Woche beginnt - der Indikator wird anhand von Balken berechnet.

Ich verstehe alles über die Bars. Aber alle wöchentlichen Bars beginnen am Montag. Um zum Beispiel eine Woche von Mittwoch bis Mittwoch zu erhalten, sollte ich meinen eigenen Code auf der Grundlage von Tagesbalken schreiben.

Ich verstehe die Bedeutung dieser Berechnung auch nicht ganz, aber der Kunde hat danach gefragt.

 
Elena Baranova:

Ich verstehe alles über die Bars. Aber alle wöchentlichen Bars beginnen am Montag. Um also beispielsweise die Woche von Mittwoch bis Mittwoch zu erhalten, muss ich wohl meinen eigenen Code auf der Grundlage der Tagesbalken schreiben.

Ich verstehe die Bedeutung dieser Berechnung auch nicht ganz, aber mein Kunde hat mich darum gebeten.

Der Expert Advisor eröffnet Trades auf Basis der RSI-Werte. Ich verstehe den Sinn dieser Berechnung nicht ganz, aber der Kunde hat sie angefordert, und der EA öffnet Aufträge nur montags bei der Eröffnung eines neuen Wochenbalkens.

 
Elena Baranova:

Ich verstehe alles über die Bars. Aber alle wöchentlichen Bars beginnen am Montag. Um also beispielsweise die Woche von Mittwoch bis Mittwoch zu erhalten, muss ich wohl meinen eigenen Code auf der Grundlage der Tagesbalken schreiben.

Ich verstehe den Sinn einer solchen Berechnung auch nicht ganz, aber der Kunde hat mich gebeten, sie durchzuführen.

Ich kann die physikalische Bedeutung nicht verstehen. Deshalb gehe ich jetzt.

 

Helfen Sie, das Problem mit der Anzeige von Charts in MT5 zu lösen: Der Chart wird ständig aktualisiert und nach links verschoben. Und das gilt für alle Instrumente.

Im weiteren Verlauf geht es immer weiter in Richtung Maximalgeschichte. Im Allgemeinen kann es die Informationen der letzten Woche nicht richtig anzeigen. Die Kerzen des letzten Tages verschwinden ständig, sie blinken und bewegen sich nach links. Wie kann man das beheben?

 
Александр:

Helfen Sie mit, das Problem mit der Chart-Anzeige in MT5 zu lösen: Der Chart wird ständig aktualisiert und nach links verschoben. Und das gilt für alle Instrumente.

Er verschiebt sich immer weiter zur maximalen Geschichte. Im Allgemeinen können die Informationen für die letzte Woche nicht normal angezeigt werden. Die Leuchter des letzten Tages verschwinden ständig, sie blinken und bewegen sich nach links. Wie kann man das beheben?

Es ist einfach eine Zeitmaschine :)

Vielleicht haben Sie einige Skripte/Ratgeber/Indikatoren laufen - sie können das Diagramm verschieben.

 
Александр:

Helfen Sie mit, das Problem mit der Chart-Anzeige in MT5 zu lösen: Der Chart wird ständig aktualisiert und nach links verschoben. Und das gilt für alle Instrumente.

Er verschiebt sich immer weiter zur maximalen Geschichte. Im Allgemeinen können die Informationen für die letzte Woche nicht normal angezeigt werden. Die Leuchter des letzten Tages verschwinden ständig, sie blinken und bewegen sich nach links. Wie kann man das beheben?

Entfernen Sie laufende Indikatoren und EAs. Entfernen Sie die Katze von der Tastatur. Entfernen Sie verschütteten Kaffee von der Tastatur.

 
Vladimir Karputov:

Laufende Blinker und Berater entfernen. Entfernen Sie die Katze aus dem Tastenfeld. Entfernen Sie verschütteten Kaffee von der Tastatur.

Danke für den Rat. Das Problem ist gelöst, man muss nur einen Server mit einem hohen Ping wählen.

 

Bitte erklären Sie, warum der blaue Bereich nicht schattiert ist? Und wie kann man das beheben?
Ist es überhaupt möglich, zwei Histogramme in einem Indikator zu erstellen?

#property indicator_chart_window                   
#property indicator_buffers   8                    
#property indicator_plots     8                    

#property indicator_color1    clrRed                
#property indicator_style1    STYLE_SOLID          
#property indicator_color2    clrRed               
#property indicator_style2    STYLE_SOLID          
#property indicator_color3    clrRed               
#property indicator_style3    STYLE_DOT            

#property indicator_color5    clrDodgerBlue        
#property indicator_style5    STYLE_SOLID          
#property indicator_color6    clrDodgerBlue        
#property indicator_style6    STYLE_SOLID          
#property indicator_color7    clrDodgerBlue        
#property indicator_style7    STYLE_DOT            

double
   Line_High_Up[], Line_High_Dn[], Hist_High_Up[], Hist_High_Dn[],
   Line_Low_Up[],  Line_Low_Dn[],  Hist_Low_Up[],  Hist_Low_Dn[];
   

void OnInit() 
   { 
   SetIndexBuffer     (0, Line_High_Up,      INDICATOR_DATA); 
   PlotIndexSetInteger(0, PLOT_DRAW_TYPE,    DRAW_LINE);      
   SetIndexBuffer     (1, Line_High_Dn,      INDICATOR_DATA); 
   PlotIndexSetInteger(1, PLOT_DRAW_TYPE,    DRAW_LINE);      
   SetIndexBuffer     (2, Hist_High_Up,      INDICATOR_DATA); 
   PlotIndexSetInteger(2, PLOT_DRAW_TYPE,    DRAW_HISTOGRAM2);
   SetIndexBuffer     (3, Hist_High_Dn,      INDICATOR_DATA);

   SetIndexBuffer     (4, Line_Low_Up,       INDICATOR_DATA);
   PlotIndexSetInteger(4, PLOT_DRAW_TYPE,    DRAW_LINE);     
   SetIndexBuffer     (5, Line_Low_Dn,       INDICATOR_DATA);
   PlotIndexSetInteger(5, PLOT_DRAW_TYPE,    DRAW_LINE);     
   SetIndexBuffer     (6, Hist_Low_Up,       INDICATOR_DATA);
   PlotIndexSetInteger(6, PLOT_DRAW_TYPE,    DRAW_HISTOGRAM2);
   SetIndexBuffer     (7, Hist_Low_Dn,       INDICATOR_DATA);
   }


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;
   for(i=prev_calculated; i<=rates_total-1; i++)      
      {
      Line_High_Dn[i] = Hist_High_Dn[i] = high[i];
      Line_High_Up[i] = Hist_High_Up[i] = Line_High_Dn[i] + 20*_Point;

      Line_Low_Up[i]  = Hist_Low_Up[i]  = low[i];
      Line_Low_Dn[i]  = Hist_Low_Dn[i]  = Line_Low_Up[i] - 20*_Point;
      }
   return(i-1);
   }           
 
User_mt5:

Bitte erklären Sie, warum der blaue Bereich nicht schattiert ist? Und wie kann man sie beheben?
Ist es überhaupt möglich, zwei Histogramme in einem Indikator auszugeben?

Wenn die Dicke für beide Histogramme auf '3' eingestellt ist

//+------------------------------------------------------------------+
//|                                                            2.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_plots   2
//--- plot Hist_High
#property indicator_label1  "Hist_High"
#property indicator_type1   DRAW_HISTOGRAM2
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot Hist_Low
#property indicator_label2  "Hist_Low"
#property indicator_type2   DRAW_HISTOGRAM2
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- input parameters
input int      Input1=9;
//--- indicator buffers
double         Hist_HighBuffer1[];
double         Hist_HighBuffer2[];
double         Hist_LowBuffer1[];
double         Hist_LowBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Hist_HighBuffer1,INDICATOR_DATA);
   SetIndexBuffer(1,Hist_HighBuffer2,INDICATOR_DATA);
   SetIndexBuffer(2,Hist_LowBuffer1,INDICATOR_DATA);
   SetIndexBuffer(3,Hist_LowBuffer2,INDICATOR_DATA);
//---
   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 limit=prev_calculated-1;
   if(prev_calculated==0)
      limit=0;
   for(int i=limit; i<rates_total; i++)
     {
      Hist_HighBuffer1[i]=high[i]+20.0*Point();
      Hist_HighBuffer2[i]=high[i];
      Hist_LowBuffer1[i]=low[i];
      Hist_LowBuffer2[i]=low[i]-20.0*Point();
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+



Dateien:
2.mq5  3 kb