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

 
Aleksey Vyazmikin:

Daher wird in der Anleitung kein Lüfter für diese Funktion erwähnt.

Da ein Objekt in einer Preiskoordinate mehrere Werte haben kann, muss eine Zeilennummer angegeben werden. Diese Funktion ist nur auf die folgenden Objekte anwendbar:

  • Trendlinie (OBJ_TREND)
  • Trendlinie nach Winkel (OBJ_TRENDBYANGLE)
  • Gann-Linie (OBJ_GANNLINE)
  • Äquidistanter Kanal (OBJ_CHANNEL) - 2 Zeilen
  • Kanal für lineare Regression (OBJ_REGRESSION) - 3 Zeilen
  • Standardabweichungskanal (OBJ_STDDEVCHANNEL) - 3 Zeilen
  • Linie mit Pfeil (OBJ_ARROWED_LINE)

Das Gebläse hat zu jedem Zeitpunkt zwei Punkte. Fügen Sie eine parallele Trendlinie hinzu und berechnen Sie diese. Die Ausgabe kann immer gefunden werden.

 
Uladzimir Izerski:

Berechnet mitObjectGetValueByTime Preis, finden Sie heraus, jeder Prozentsatz der Fan.

Im Testgerät funktioniert es. Ich habe es nicht getestet.

Können Sie es in Form eines Codes zeigen?

 
Aleksey Vyazmikin:

Können Sie es in Form eines Codes zeigen?

Ich habe gerade den Code überprüft. Es funktioniert auf den Kanälen. Er erkennt auch den Ventilator.

 F_Draw_Object("FAN",OBJ_FIBOFAN,Time[20],High[20],Time[5],Low[5],0,0,0,2,C'00,00,200',OBJPROP_FILL,false);
 PriseCLv=ObjectGetValueByTime(0,"FAN",Time[10],0);

Sie können eine Trendlinie mit einem Fächer verbinden und diesen auch erkennen. Aber es funktioniert so, wie es ist.

 
Uladzimir Izerski:

Ich habe gerade den Code überprüft. Es funktioniert auf den Kanälen. Er erkennt auch den Ventilator.

Sie können die Trendlinie an den Ventilator binden und ihn auch erkennen. Aber es funktioniert so, wie es ist.

Wie funktioniert das für Sie?

Bei mir funktioniert es nicht, zumindest nicht im visuellen Tester...

bool fiboFanCreate(string ffname, datetime tm1, double pr1, datetime tm2, double pr2)
{
   Print(__FUNCSIG__);
   
   //if(!ObjectCreate(0,ffname,OBJ_FIBOFAN,0,tm1,pr1,tm2,pr2))
   if(!ObjectCreate(0,ffname,OBJ_FIBOFAN,0,tm1,pr1,tm2,pr2,0,0,0,2,C'00,00,200',OBJPROP_FILL,false))
   {
      Print(__FUNCSIG__,
            ": не удалось создать \"Веер Фибоначчи\"! Код ошибки = ",GetLastError());
      return(false);
   }
   
   ChartRedraw();
   Sleep(1000);
   
   return(true);
}
//+------------------------------------------------------------------+
bool fiboFanLevelsSet(double  &values[],  // значения линий уровня
                      string  name)       // имя веера
{
   Print(__FUNCSIG__);
   
   levels = ArraySize(values);
   ArrayPrint(values);
   //--- установим количество уровней
   ObjectSetInteger(0,name,OBJPROP_LEVELS,levels);
   
   //--- установим свойства уровней в цикле
   for(int i=0;i<levels;i++)
   {
      //--- значение уровня
      ObjectSetDouble(0,name,OBJPROP_LEVELVALUE,i,values[i]);
      //--- описание уровня
      ObjectSetString(0,name,OBJPROP_LEVELTEXT,i,IntegerToString(i+1));
   }
   ChartRedraw();
   Sleep(1000);
   //--- успешное выполнение
   return(true);
}

Siehe

void OnTick()
{
   new_bars    = current_chart.isNewBar();   // проверить появление нового бара
   
   if(new_bars > 0)
   {
      if(ObjectFind(0,ff_name) >= 0) Print(ff_name,"4 = ",NormalizeDouble(ObjectGetValueByTime(0,ff_name,TimeCurrent(),4),Digits()));

....

2020.01.19 19:38:50.208 2019.09.19 11:15:00   bool fiboFanCreate(string,datetime,double,datetime,double)
2020.01.19 19:38:50.208 2019.09.19 11:15:01   bool fiboFanLevelsSet(double&[],string)
2020.01.19 19:38:51.365 2019.09.19 11:30:00   FFan4 = 0.0
 

Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien

2 Fragen MT5

Sergey Tabolin, 2020.01.20 11:52

Was hat einen Fehler beim Aufruf des Indikators aus einem EA verursacht? Der Indikator wird normalerweise manuell auf dem Diagramm platziert.

   ResetLastError();
   handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01",0,in_symb1,false,false,in_smoothing);
   if(handle_ICTMP1 == INVALID_HANDLE)                                                 // проверяем наличие хендла индикатора
   {
      Print("Не удалось получить хендл индикатора handle_ICTMP1...",GetLastError());   // если хендл не получен, то выводим сообщение в лог об ошибке
      return(INIT_FAILED);                                                             // завершаем работу с ошибкой
   }
   else
   {
      Print("Получен хендл индикатора handle_ICTMP1");
      if(!MQLInfoInteger(MQL_OPTIMIZATION))
      {
         if(!ChartIndicatorAdd(ChartID(),0,handle_ICTMP1)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
      }
   }
2020.01.20 13:42:09.390 Core 1  file Indicators\my_used\ICTMP_3.01 read error
2020.01.20 13:42:09.390 Core 1  loading of ICTMP_  EURGBP,M15 failed [557]
2020.01.20 13:42:09.390 Core 1  2019.09.19 00:00:00   cannot load custom indicator 'my_used\ICTMP_3.01' [4802]
2020.01.20 13:42:09.390 Core 1  2019.09.19 00:00:00   Не удалось получить хендл индикатора handle_ICTMP1...4802
2020.01.20 13:42:09.390 Core 1  tester stopped because OnInit returns non-zero code
P.S. Es ist im Testgerät.

Und das, obwohl der EA auf dem Chart in Echtzeit ausgeführt wird. Der Indikator wird nicht angezeigt. (((

Was ist das im Einzelnen?

 

Liebe Freunde, kann denn niemand etwas vorschlagen?

Der Indikator funktioniert sowohl im Testgerät als auch im Chart. Wenn ich den EA im Testprogramm ausführe, erhalte ich einen unklaren Fehler. Der Expert Advisor mit diesem Indikator startet und arbeitet normalerweise auf dem Chart.

Wo soll ich graben?

 
Сергей Таболин:

Liebe Freunde, kann denn niemand etwas vorschlagen?

Der Indikator funktioniert sowohl im Tester als auch auf dem Chart. Wenn ich den EA im Testprogramm ausführe, erhalte ich einen unklaren Fehler. Der Expert Advisor mit diesem Indikator startet und arbeitet normalerweise auf dem Chart.

Wo soll ich graben?

Vielleicht in Richtung des Weges des Indikators im Prüfgerät?
 
Artyom Trishkin:
Vielleicht in Richtung des Indikatorpfades im Tester?

Wie war das?

Ich habe alle Indikatoren, die ich brauche, auf diese Weise

handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01"
handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_201",

Das hat es noch nie gegeben. Außerdem ist dies das erste Mal, dass ich von einem separaten Pfad zu einem Indikator im Tester höre...

Funktioniert es bei anderen Indikatoren, aber nicht bei diesem?

 

Speziell ein weiterer Indikator wurde vorher hinzugefügt.

   ResetLastError();
      handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_201",45,9);
      if(handle_HMA7C == INVALID_HANDLE)                                                  // проверяем наличие хендла индикатора
      {
         Print("Не удалось получить хендл индикатора handle_HMA7C...",GetLastError());    // если хендл не получен, то выводим сообщение в лог об ошибке
         return(INIT_FAILED);                                                             // завершаем работу с ошибкой
      }
      else
      {
         Print("Получен хендл индикатора handle_HMA7C");
         if(!MQLInfoInteger(MQL_OPTIMIZATION))
         {
            if(!ChartIndicatorAdd(ChartID(),0,handle_HMA7C)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
         }
      }
   
   handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01",0,in_symb1,false,false,in_smoothing);
   if(handle_ICTMP1 == INVALID_HANDLE)                                                 // проверяем наличие хендла индикатора
   {
      Print("Не удалось получить хендл индикатора handle_ICTMP1...",GetLastError());   // если хендл не получен, то выводим сообщение в лог об ошибке
      return(INIT_FAILED);                                                             // завершаем работу с ошибкой
   }
   else
   {
      Print("Получен хендл индикатора handle_ICTMP1");
      if(!MQLInfoInteger(MQL_OPTIMIZATION))
      {
         if(!ChartIndicatorAdd(ChartID(),0,handle_ICTMP1)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
      }
   }
2020.01.20 20:15:34.713 program file added: Indicators\my_used\my_HMA7C_201.ex5. 41715 bytes loaded
2020.01.20 20:15:34.920 2019.09.19 00:00:00   Получен хендл индикатора handle_HMA7C
2020.01.20 20:15:34.921 file Indicators\my_used\ICTMP_3.01 read error
2020.01.20 20:15:34.921 loading of ICTMP_ EURGBP,M15 failed [557]
2020.01.20 20:15:34.921 2019.09.19 00:00:00   cannot load custom indicator 'my_used\ICTMP_3.01' [4802]
2020.01.20 20:15:34.921 2019.09.19 00:00:00   Не удалось получить хендл индикатора handle_ICTMP1...4802
2020.01.20 20:15:34.921 tester stopped because OnInit returns non-zero code

Der EA wird weiterhin normal auf dem Chart angezeigt. Alle Indikatoren sind geladen und arbeiten....

 
Сергей Таболин:

Sehr geehrte Damen und Herren, kann denn niemand etwas vorschlagen?

Wo soll man graben?

Ich kann davon ausgehen, dass Sie den Griff wiederholt und allmählich überlaufen den Speicher. die auf der Live-Grafik tut es langsam, und hat keine Zeit, um den gesamten Speicher zu füllen. der Tester tut es viele Male pro Sekunde, und schnell überläuft den Speicher.