Fragen von einem "Dummy" - Seite 234

 
forward666: Ja, ich brauche eine Visualisierung

Für Tests: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

Für den Live-Handel wurde noch keine Hilfe gefunden - versuchen Sie einfach, eine Position in einem Demokonto zu eröffnen und zu schließen.

 
Boris.45: Guten Tag, geschätzte Trader! Bitte helfen Sie einem Programmieranfänger. Ich habe einen Programmblock geschrieben, der Fraktale für mehrere Zeitrahmen verwendet, um nach sich bewegenden Kanälen (SK) von Borispolz zu suchen, und habe begonnen, Algorithmen für die Positionseröffnung zu schreiben. Ich bin mit einer Situation konfrontiert, in der der Zeitrahmen von sich schnell bewegenden Trends nur ein oder zwei Balken beträgt. Diese Situation legt Folgendes nahe: Sie müssen bei der Suche und Berechnung der SK-Parameter auf ausgewählten Zeitrahmen arbeiten, während die Entscheidung, Aufträge zu erteilen oder Positionen zu eröffnen, auf sehr kleinen Zeitrahmen getroffen werden sollte. Bitte geben Sie mir einen Rat, wie ich das Programm so einrichten kann, dass der Block zur Berechnung der SK-Parameter nur für die ausgewählten Zeitrahmen, z.B. H1 und H4, funktioniert, und der Block zur Entscheidungsfindung über die Platzierung von Orders für den Zeitrahmen M1. Ich habe in den Artikeln keine Lösungen dafür gefunden.

Ich danke Ihnen für Ihre Aufmerksamkeit.

Ich bin ziemlich weit weg von Fraktalen, aber hier sind einige allgemeine Überlegungen. Wir können es auf die einfachste Weise versuchen: Erstellen Sie einen Indikator, der "SK-Parameter" auf H4 berechnet. Lassen Sie dann unseren Expert Advisor diesen Indikator bei jedem Tick überprüfen und Entscheidungen über die Platzierung von Aufträgen treffen.
 
Yedelkin:

Für Tests: https://www.metatrader5.com/ru/terminal/help/algotrading/visualization

Für den Live-Handel habe ich noch keine Hilfe gefunden - versuchen Sie einfach, eine Position in einem Demokonto zu eröffnen und zu schließen.

Danke! Ich werde es versuchen!

Aber ich brauche es nur zur Visualisierung auf einem Demokonto)

 
forward666: Aber ich brauche es nur zur Visualisierung auf einem Demokonto)
Wenn es auf einem Demokonto nicht funktioniert, schreiben Sie mir.
 
Yedelkin:
Wenn es auf einem Demokonto nicht funktioniert, lassen Sie es mich wissen.
Okay, ich werde es heute Abend ausprobieren und berichten!
 
forward666:

Aber ich brauche es nur zur Visualisierung auf einem Demokonto)


Von der Historie aus können Sie die Maus auf das Diagramm ziehen (mit dem Schieberegler - alles).

!!! Mit einem Controller werden die Karteneinstellungen zurückgesetzt.
 

Was ist an dem Code falsch?

Die Grafiken sind in Ordnung, im Tester erscheint die Fehlermeldung Array Out Of Range

#property indicator_label1  "LINE"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrGold
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

input int    period   = 10;       //Период усредения
input bool   USE_LIMIT= false;    //вкл/выкл лимитирование
                                  //Заключается в ограничении максимального изменения значения индикатора
input double use_limit= 0.00005;  //Величина
                                  //на которую максимально может измениться индикатор

double         Buffer[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   
   SetIndexBuffer(0,Buffer,INDICATOR_DATA);
   //PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- вычисления значений индикатора
//--- calculate the indicator values
   int start=0;
//--- если расчет уже производился на предыдущем запуске OnCalculate
//--- if the calculation is made on a previous run of OnCalculate
   if(prev_calculated>0) start=prev_calculated-1; // установим начало расчетов с предпослденего бара -- Set the start of the penultimate bar calculations
//--- заполняем индикаторный буфер значениями
//--- fill indicator buffer values
   for(int i=start;i<rates_total;i++)
     {
      Buffer[0]=price[0];
      double delta=(price[i]-Buffer[i])/period;
      if(USE_LIMIT && delta>use_limit)
        {
         delta=use_limit;
        }
      if(USE_LIMIT && delta<-use_limit)
        {
         delta=-use_limit;
        }
      Buffer[i+1]=Buffer[i]+delta;
     }
//--- вернем значение prev_calculated для следующего вызова функции
//--- return the value for the next call of prev_calculated function
   return(rates_total);
  }
//+------------------------------------------------------------------+
 
lazarev-d-m:

Was ist an dem Code falsch?

Die Grafiken sind in Ordnung, im Tester erscheint die Fehlermeldung Array Out Of Range


Die Schleife geht solange, bis i<rates_total ist, dann gibt es Buffer[ i+1] .

Buffer[rates_total] gibt es nicht, der letzte Index ist rates_total-1.

 
lazarev-d-m:

Was ist an dem Code falsch?

Die Grafiken sind in Ordnung, im Tester erscheint die Fehlermeldung Array Out Of Range


Buffer[i+1] === +1 не делается проверка на выход за массив
 
Karlson:


Die Schleife geht so lange, bis i<rates_total ist, dann gibt es Buffer[ i+1] .

Buffer[rates_total] gibt es nicht, der letzte Index ist rates_total-1.

Geändert in dies

i<rates_total-1
Scheint zu funktionieren