Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 25

 

Цикл от самого "старого" бара к самому "свежему": 

    for (int i = limit; i >= 0; i--);
 

Der Indikator wurde leicht verändert. Sie zählt korrekt bis zur Kommastelle. In einem Abschnitt sollte der Indikator z. B. 11 sein, aber er zeigt 11,58 an.

Was könnte falsch sein?

Ich habe dafür gesorgt, dass vniz_1 und vniz_2 größer als Null sind. Ich habe Lücken in der Indikatorlinie geschaffen. Wie man die Lücken verbindet und sie unterschiedlich einfärbt, aber nicht den Indikator in diesen Lücken berechnet.

//+------------------------------------------------------------------+
//|                                                         сила.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
//--- input parameters
extern int       Period_MA_1=7;
extern int       Period_MA_2=7;
extern int       Period_MA_3=7;
//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    vniz_1,
    vniz_2,
    MA_1_t,                         
    MA_2_t,                           
    MA_3_t;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   
   for(int i=0;i<limit;i++)
   {
      MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_CLOSE,i+1);  
      MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_CLOSE,i+2);  
      MA_3_t=iMA(NULL,0,Period_MA_3,0,MODE_EMA,PRICE_CLOSE,i+3);    
      vniz_1=(MA_3_t-MA_2_t);
      vniz_2=(MA_2_t-MA_1_t);
      if (vniz_1>0&&vniz_2>0)
      {
      ExtMapBuffer1[i]=(vniz_1/vniz_2);
      }
   }
   return(0);
  }
//+------------------------------------------------------------------+
 
Forexman77:

Der Indikator wurde leicht verändert. Sie zählt korrekt bis zur Kommastelle. In einem Abschnitt sollte der Indikator z. B. 11 sein, aber er zeigt 11,58 an.

Was könnte falsch sein?

Ich habe dafür gesorgt, dass vniz_1 und vniz_2 größer als Null sind. Ich habe Lücken in der Indikatorlinie geschaffen. Wie man die Lücken verbindet und sie unterschiedlich einfärbt, aber nicht den Indikator in diesen Lücken berechnet.


      MA_1_t=iMA(NULL,0,Period_MA_1,0,MODE_EMA,PRICE_CLOSE,i+1);  
      MA_2_t=iMA(NULL,0,Period_MA_2,0,MODE_EMA,PRICE_CLOSE,i+2);  
      MA_3_t=iMA(NULL,0,Period_MA_3,0,MODE_EMA,PRICE_CLOSE,i+3); 
Berechnen Sie den Indikator für nicht vorhandene Balken ?????
 
      if (vniz_1<0 || vniz_2<0)
      {
      ExtMapBuffer2[i]=(чему равны разрывы);
      }
 
Was ist 2013.07.07 16:06:21 2010.02.01 01:56 EURUSD,H1: Fehler beim Eröffnen einer EURUSD Verkaufsorder Array index - out of range
??????
 
Nachfolgend finden Sie den Code eines einfachen Indikators, der eine horizontale Linie für alle Balken zeichnet.
Wie kann ich es so einrichten, dass die Linie nur für die letzten 20 Takte gezeichnet wird?




#property indicator_separate_window
#property indicator_buffers 1

#property indicator_color1 Chocolate
#property indicator_width1 6

#property indicator_minimum -0.1
#property indicator_maximum  0.1


double ExtMapBuffer[];



int init() {

   IndicatorBuffers(1);
   IndicatorDigits(   Digits+2);
   IndicatorShortName("H_LINE");

   SetIndexLabel(    0, "H_LINE");
   SetIndexDrawBegin(0, 0);
   SetIndexStyle(    0, DRAW_LINE);
   SetIndexBuffer(   0, ExtMapBuffer);

   SetIndexEmptyValue(0, EMPTY_VALUE);
   SetIndexShift(     0, 0);

   return(0);
}




int start()  {

   int limit;
   int counted_bars=IndicatorCounted();

   if(counted_bars>0) {
      counted_bars--;
   }

   limit=Bars-counted_bars;


   for(int i=0; i<limit; i++) {   
      ExtMapBuffer[i] = 0;
   }


   return(0);
}
 
atztek:
Nachfolgend finden Sie den Code eines einfachen Indikators, der eine horizontale Linie für alle Balken zeichnet.
Wie kann ich es so einrichten, dass die Linie nur für die letzten 20 Takte gezeichnet wird?






Welchen Wert sollte die Linie haben?
 
Vinin:

Welchen Wert sollte die Linie haben?

Die Größe der Linie auf der Y-Achse spielt in diesem Fall keine Rolle, dies ist nur ein Beispiel, anhand dessen ich verstehen möchte, wie man das "Zeichnen" durch Indikatoren auf eine bestimmte Anzahl von Balken begrenzen kann.
 
atztek:

Die Größe der Linie auf der Y-Achse spielt in diesem Fall keine Rolle, dies ist nur ein Beispiel, anhand dessen ich verstehen möchte, wie man das "Zeichnen" durch Indikatoren auf eine bestimmte Anzahl von Balken begrenzen kann.

Möchten Sie Indikatorpuffer oder Objekte verwenden?
 
Vinin:
Möchten Sie Indikatorpuffer oder Objekte verwenden?

Indikatorpuffer, da die Lösung in Zukunft nicht nur für gerade Linien, sondern auch für gleitende Durchschnitte und andere Arten von Linien verwendet werden soll.