Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1483

 
Alexey Viktorov:

Beachten Sie die Umrechnung von Zeit und Preis in XY-Koordinaten in Pixel

Lesen Sie den Zeilenpreis, wandeln Sie ihn in Pixel um und weisen Sie die Koordinatendem Objekt "Textmarke" auf der Y-Achse zu, während die X-Koordinate unverändert bleibt.

Ich habe diese Funktion schon lange im Auge, wusste aber nicht, wie ich vorgehen sollte, weil ich nicht erfahren genug bin. Danke, ich werde versuchen, das in den Code zu integrieren.

 
Aleksei Stepanenko:

Zeilen- und Textanzeiger Ver 1

Der Indikator verschiebt den Text nach der Zeile. Fügen Sie den Namen der Zeile in den Eingabeparameter ein.

Ich danke Ihnen. Auch dies ist ein interessantes Layout. Ich werde es auf jeden Fall herausnehmen, sobald ich ChartTimePriceToXY() herausgefunden habe.

 

Können Sie mir bitte sagen, was falsch sein könnte?

   for(int i=rates_total-prev_calculated-2;i>=0;i--)
     {
      ADRBuffer1[i]=High[i];
      if(High[i]<ADRBuffer1[i+1])
      ADRBuffer1[i]=ADRBuffer1[i+1];
      ADRBuffer2[i]=Low[i];
      if(Low[i]>ADRBuffer2[i+1])
      ADRBuffer2[i]=ADRBuffer2[i+1];
     }

Low zieht, aber High will nicht...

 
MakarFX:

Können Sie mir bitte sagen, was falsch sein könnte?

Low zieht, aber High will nicht...

Was ist ADRBuffer1[i+1] gleich beim ersten Durchlauf? Wahrscheinlich gibt es mehr Müll als High[i]

 
Alexey Viktorov:

Was bedeutet ADRBuffer1[i+1] beim ersten Durchlauf? Wahrscheinlich gibt es mehr Müll als High[i].

Bitte sagen Sie mir, wie ich das Problem beheben kann und warum Low gut zeichnet?

Alle Codes

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrDimGray
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrCrimson
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
#property indicator_type3   DRAW_LINE
#property indicator_color3  clrTeal
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1
//--- indicator buffers
double   ADRBuffer0[];
double   ADRBuffer1[];
double   ADRBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   IndicatorDigits(Digits);
//--- indicator buffers mapping
   SetIndexBuffer(0,ADRBuffer0,INDICATOR_DATA);
   SetIndexBuffer(1,ADRBuffer1,INDICATOR_DATA);
   SetIndexBuffer(2,ADRBuffer2,INDICATOR_DATA);
   SetIndexLabel(0,"ADR");
   SetIndexLabel(1,"ADR1");
   SetIndexLabel(2,"ADR2");
//---
   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[])
  {
//---
   if((rates_total-prev_calculated-2)<=0)return(0);
   for(int i=rates_total-prev_calculated-2;i>=0;i--)
     {
      ADRBuffer1[i]=High[i];
      if(High[i]<ADRBuffer1[i+1])
      ADRBuffer1[i]=ADRBuffer1[i+1];
      ADRBuffer2[i]=Low[i];
      if(Low[i]>ADRBuffer2[i+1])
      ADRBuffer2[i]=ADRBuffer2[i+1];
     }
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
MakarFX:

Können Sie mir bitte sagen, wie ich das Problem beheben kann und warum Low normal zeichnet?

Der gesamte Code

Die Anzahl der Konstruktionen muss unbedingt angegeben werden. Und versuchen Sie, die Pufferinitialisierung mit Null zu schreiben, vorausgesetzt, prev_calculate == 0;

 
Alexey Viktorov:

Es ist obligatorisch, die Anzahl der Bauwerke anzugeben.

Es ist mir leider nicht klar, was das bedeutet.

Alexey Viktorov:

Und versuchen Sie, die Pufferinitialisierung mit Null zu schreiben, vorausgesetzt, prev_calculate == 0;

Hat nicht geholfen(

 
MakarFX:

Ich verstehe leider nicht, was das bedeutet.

Es hat nicht geholfen(


if( prev_calculated == 0 ) {
   ADRBuffer1[rates_total-1] = High[rates_total-1];
   ADRBuffer2[rates_total-1] = Low[rates_total-1]
}

for(int i=rates_total-prev_calculated-2;i>=0;i--)
{
...
}
 
MakarFX:

Ich verstehe leider nicht, was das bedeutet.

Es hat nicht geholfen(

#property indicator_plots   3

Der Standardwert ist 1. Und wenn die Bekanntgabe der Anzahl der Konstruktionen nicht hilft, dann fahren Sie mit Option B fort.

 
PapaYozh:


Danke, das hat geholfen...ich habe es nicht richtig gemacht)))
Grund der Beschwerde: