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

 

Hallo, könnten Sie bitte beraten, in den Code unten ohne die Schleife Block (die nach dem CopyByffer kommt), der Indikator läuft normalerweise, aber wenn Sie einen Zyklus vergleichen den Preis einer Kerze mit dem Preis eines der Bars, die Bars selbst nach dem Start nicht angezeigt werden, was könnte das Problem sein?

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_plots   3
#property indicator_type1   DRAW_LINE
#property indicator_color1  Olive
#property indicator_type2   DRAW_LINE
#property indicator_color2  Green
#property indicator_type3   DRAW_LINE
#property indicator_color3  Olive

input int peroid = 20;        // период полос 1
input int bands_shift= 0;           // смещение полос 1 
input double deviation = 2.3;   // отклонение полос 1

input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE; // тип цены 

double      Base[];     // массив для BASE_LINE индикатора iBands
double      Upper[];    // массив для UPPER_BAND индикатора iBands
double      Lower[];    // массив для LOWER_BAND индикатора iBands

int iBands1_handle; //Указатель на первый индикатор 
int iBands2_handle; //Указатель на первый индикатор 

int g_i_Window;


int OnInit()
  {
   g_i_Window=ChartWindowFind();
   SetIndexBuffer(0,Base,INDICATOR_DATA);
   SetIndexBuffer(1,Upper,INDICATOR_DATA);
   SetIndexBuffer(2,Lower,INDICATOR_DATA);
           
   iBands1_handle=iBands(NULL,PERIOD_CURRENT,peroid,bands_shift,deviation,applied_price);

   if(iBands1_handle==INVALID_HANDLE){
         Alert("Неудалось загрузить индикатор, повторите попытку");
         return(-1);
         }
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,      // размер входных таймсерий 
                 const int prev_calculated,  // обработано баров на предыдущем вызове
                 const datetime& time[],     // Time 
                 const double& open[],       // Open 
                 const double& high[],       // High 
                 const double& low[],        // Low 
                 const double& close[],      // Close 
                 const long& tick_volume[],  // Tick Volume 
                 const long& volume[],       // Real Volume 
                 const int& spread[])         // Spread 
  {
   int i;
   int shift = 0;
   int shift1;
   int shift2;
   int shift3;
   string alert;
   
   double O, O1, O2, C, C1, C2, L, L1, L2, H, H1, H2;
      shift1 = shift;
      shift2 = shift + 1;
      shift3 = shift + 2;   
      O = open[shift1];
      O1 = open[shift2];
      O2 = open[shift3];
      H = high[shift1];
      H1 = high[shift2];
      H2 = high[shift3];
      L = low[shift1];
      L1 = low[shift2];
      L2 = low[shift3];;
      C = close[shift1];
      C1 = close[shift2];
      C2 = close[shift3]; 
   
   i = (prev_calculated==0)?1: prev_calculated;
   i = (prev_calculated==rates_total)?rates_total-1: i;
   
   CopyBuffer(iBands1_handle,0,0,rates_total-1,Base);
   CopyBuffer(iBands1_handle,1,0,rates_total-1,Upper);
   CopyBuffer(iBands1_handle,2,0,rates_total-1,Lower);

   for (i = i; i < rates_total; i++)
   {
    if(H > L && O > Lower[i])
    {
     int time_waiting = (int)TimeLocal() + 1;
     while(TimeLocal() < time_waiting){}
     Comment("True");
     return(0);
    }
     else Comment("False"); 
   }
   
   
   if (prev_calculated==0) ChartRedraw();   
   return(rates_total);
  }

Ergebnis:


 
Aleksey Vyazmikin:

Das können Sie nicht.

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Alexey Viktorov, 2018.05.30 15:53

Nun, nicht ganz so dynamisch, aber einmal durch Neuinitialisierung können Sie das. Das habe ich.


 
Alexey Viktorov:

Wenn Sie dies näher ausführen können, beschreiben Sie bitte

 
Andrii Djola:

wenn Sie etwas genauer sein können

Wie viel detaillierter?

In einer Situation musste ich farbige Balken oder farbige Kerzenständer erstellen. Sie verwenden 4 Wertepuffer und 1 Farbpuffer. Die andere, die ich brauchte, um eine farbige Linie anzuzeigen, wo 1 Wertpuffer und 1 Farbpuffer.

Das Aufrufen und Ändern von Indikatoreigenschaften führt zur Initialisierung des Indikators. Dementsprechend, wenn die Einstellungen Bars oder Candlesticks enthalten, dann eine Option der Initialisierung. Wenn die Zeile, die andere Option der Initialisierung.

Es ist nicht möglich, die Anzahl der Puffer in der Mitte des Indikators zu ändern, wie Alexey Vyazmikin sagte, ohne sich der anderen Optionen bewusst zu sein.

 
Alexey Viktorov:

Wie viel mehr Details?

In einer Situation musste ich farbige Balken oder farbige Kerzenständer erstellen. Sie verwenden 4 Wertepuffer und 1 Farbpuffer. Die andere, die ich brauchte, um eine farbige Linie anzuzeigen, wo 1 Wertpuffer und 1 Farbpuffer.

Das Aufrufen und Ändern von Indikatoreigenschaften führt zur Initialisierung des Indikators. Dementsprechend, wenn die Einstellungen Bars oder Candlesticks enthalten, dann eine Option der Initialisierung. Wenn die Zeile, dann eine andere Initialisierungsoption.

Es ist nicht möglich, die Anzahl der Puffer in der Mitte des Indikators zu ändern, wie Alexey Vyazmikin sagte, ohne sich anderer Optionen bewusst zu sein.

Wenn Sie sich entscheiden, meinen Nachnamen auf Russisch zu schreiben, klingt er wie Vyazmikin.

Was meinen Verdacht angeht - ich denke, die Antwort auf die gestellte Frage ist richtig. Ohne eine Erklärung der Bedürfnisse ist es sinnlos, etwas anderes zu behaupten. Die Neuinitialisierung ist ein Neustart des Programms, es ist klar, dass Sie alles in den Einstellungen ändern können.

 
Aleksey Vyazmikin:

Wenn man meinen Nachnamen auf Russisch schreibt, klingt er wie Vyazmikin.

Was meinen Verdacht angeht, so glaube ich, dass die Antwort auf die gestellte Frage richtig ist. Ohne eine Erklärung des Bedarfs hat es keinen Sinn, das Gegenteil zu behaupten. Die Neuinitialisierung ist ein Neustart des Programms, es ist klar, dass Sie alles in den Einstellungen ändern können.

Stört Sie das Fehlen eines weichen Zeichens so sehr?

Habe ich von Unkorrektheit gesprochen, so habe ich meiner Meinung nach genau die Korrektheit der Antwort hervorgehoben.

 
alph:
Können Sie mir sagen, ob dies eine realistische Testerfigur ist? Und ist es ein gutes oder schlechtes Ergebnis für ein Jahr mit einer Einlage von 3000$?
wirklich.
 
Alexey Viktorov:

Stört Sie das Fehlen eines weichen Zeichens so sehr?

Mir geht es um Aufklärung, nicht um Beleidigung. Warum sollte ich beleidigt sein? Können Sie buchstabieren und wollen Sie mich beleidigen? Ich habe diese Option nicht einmal in Betracht gezogen, war sie umsonst?

 
Aleksey Vyazmikin:

Meine Motivation ist die Erleuchtung, nicht der Groll. Warum sollte ich beleidigt sein, wussten Sie, wie man richtig schreibt und wollten mich beleidigen? Ich habe diese Option nicht einmal in Betracht gezogen, war sie umsonst?

Frieden, Freundschaft, Kaugummi.

 
Alexey Viktorov:

Frieden, Freundschaft, Kaugummi.

Und die halben Liter?