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

 

Hallo! 2020.10.28_05:19:00 GMT+3. Ich habe den Indikator LeManTrend_Indicator.mq5 in die vierte Version .mq4 übersetzt. Der Indikator erscheint auf dem Chart, aber wenn ich versuche, von GBPUSD, H1 auf M5 zu wechseln, bleibt MetaTrader4 hängen, die CPU ist überlastet. Ich muss MetaTrader4 schließen und erneut öffnen. Kein Einfrieren, wenn ich LeManTrend_Indicator.ex4 aus dem Diagramm entferne. Ich verstehe nicht, was an dem Code des Indikators falsch ist. Wer kann mir einen Tipp geben? Wie kann man das beheben?

Und LeMan_BrainTrend1Sig.mq5 in die vierte Version konvertiert, es ist in der Liste der Indikatoren, aber nichts erscheint auf dem Chart. Wie man den Code dieses Indikators umschreiben kann, damit er richtig funktioniert, weiß ich nicht. Ich habe bisher nur über Expert Advisors geschrieben. Wie man sie im Strategietester überprüft - ich weiß. Und wenn ich Print() von Variablen in den Code schreibe, wird klar, was falsch ist. Ich weiß nicht, wie ich die Indikatoren überprüfen kann. Ich habe Print() in den Code geschrieben, es wird nicht in einem Protokoll gespeichert. Kann mir jemand einen Rat geben, was ich mit den Indikatoren machen soll, damit sie funktionieren und keinen Platz auf der Festplatte wegnehmen? Ich freue mich darauf, von Ihnen zu hören. 05:44 GMT+3.

Ja, ich werde die Indikatorcodes jetzt posten. Noch eine Sache. Warum habe ich Indikatoren von .mq5 nach .mq4 konvertiert? Denn mein Broker hat Rubelkonten nur im MetaTrader4. Und die Indikatoren sind in der fünften Version geschrieben. Und ich brauche Indikatoren, um einen profitablen Expert Advisor für MetaTrader4 zu schreiben. Das war's dann. 05:53 GMT+3.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Николай Никитюк:

Hallo. 2020.10.28_05:19:00 GMT+3. Ich habe den Indikator LeManTrend_Indicator.mq5 in die vierte Version .mq4 übersetzt. Der Indikator erscheint auf dem Chart, aber wenn ich versuche, von GBPUSD, H1 auf M5 zu wechseln, bleibt MetaTrader4 hängen, die CPU ist überlastet. Ich muss MetaTrader4 schließen und erneut öffnen. Kein Einfrieren, wenn ich LeManTrend_Indicator.ex4 aus dem Diagramm entferne. Ich verstehe nicht, was an dem Code des Indikators falsch ist. Wer kann mir einen Tipp geben? Wie kann man das beheben?

Und LeMan_BrainTrend1Sig.mq5 in die vierte Version konvertiert, es ist in der Liste der Indikatoren, aber nichts erscheint auf dem Chart. Wie man den Code dieses Indikators umschreiben kann, damit er richtig funktioniert, weiß ich nicht. Ich habe bisher nur über Expert Advisors geschrieben. Wie man sie im Strategietester überprüft - ich weiß. Und wenn ich Print() von Variablen in den Code schreibe, wird klar, was falsch ist. Ich weiß nicht, wie ich die Indikatoren überprüfen kann. Ich habe Print() in den Code geschrieben, es wird nicht in einem Protokoll gespeichert. Kann mir jemand einen Rat geben, was ich mit den Indikatoren machen soll, damit sie funktionieren und keinen Platz auf der Festplatte wegnehmen? Ich freue mich darauf, von Ihnen zu hören. 05:44 GMT+3.

Ja, ich werde die Indikatorcodes jetzt posten. Noch eine Sache. Warum habe ich Indikatoren von .mq5 nach .mq4 konvertiert? Denn mein Broker hat Rubelkonten nur im MetaTrader4. Und die Indikatoren sind in der fünften Version geschrieben. Und ich brauche Indikatoren, um einen profitablen Expert Advisor für MetaTrader4 zu schreiben. Das war's dann. 05:53 GMT+3.

LeManTrend_Indicator.mq5- der Indikator selbst hierhttps://www.mql5.com/ru/code/27570

es funktioniert auch in 4 - aber Sie müssen die Wiederholung (string ) vor (err_text) entfernen

      string err_text=(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian")?
                      "Параметр \"Midle\" меньше 1!":
                      "Parameter \"Midle\" is less than 1!";

würde es wie folgt aussehen

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- check "MA averaging period" parameter
   if(PeriodEMA<1)
     {
      string err_text=(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian")?
                      "Параметр \"MA averaging period\" меньше 1!":
                      "Parameter \"MA averaging period\" is less than 1!";
      //--- when testing, we will only output to the log about incorrect input parameters
      if(MQLInfoInteger(MQL_TESTER))
        {
         Print(__FILE__," ",__FUNCTION__,", ERROR: ",err_text);
         return(INIT_FAILED);
        }
      else // if the Expert Advisor is run on the chart, tell the user about the error
        {
         Alert(__FILE__," ",__FUNCTION__,", ERROR: ",err_text);
         return(INIT_PARAMETERS_INCORRECT);
        }
     }
//--- check "Min" parameter
   if(Min<1)
     {
      err_text=(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian")?
               "Параметр \"Min\" меньше 1!":
               "Parameter \"Min\" is less than 1!";
      //--- when testing, we will only output to the log about incorrect input parameters
LeManTrend Indicator
LeManTrend Indicator
  • www.mql5.com
Индикатор на основе анализа максимальных и минимальных цен. Сигналы индикатора возникают в месте пересечения линий 'BUY' и 'SELL':
 
SanAlex:

LeManTrend_Indicator.mq5- der Indikator selbst hierhttps://www.mql5.com/ru/code/27570

es funktioniert auch in 4 - aber Sie müssen die Wiederholung (string ) vor (err_text) entfernen

sollte es wie folgt aussehen

String

 
Николай Никитюк:

BrainTrend1Sig für 4 hier -https://www.mql5.com/ru/code/8772

Diese sollte den bereits korrigierten LeManTrend_Indicator.mq4 für Vierlinge enthalten

BrainTrend1Sig
BrainTrend1Sig
  • www.mql5.com
Индикатор BrainTrend1Sig.
 
SanAlex:

BrainTrend1Sig für 4 hier -https://www.mql5.com/ru/code/8772

Hier müssen Sie LeManTrend_Indicator.mq4 hinzufügen, die bereits für 4

Es liegt ein Fehler vor - Sie müssen diese Zeile löschen ( double const = 0; )

und alles wird funktionieren

    double const = 0;

double const = 0; 2.PNG


 
Nikolai Semko:

Du bist ein Komiker.

Mit wem habe ich gesprochen?



Worum geht es in dieser Situation? Gleicher Balkenindex. Und es scheint nur beim ersten Durchlauf eines Symbols zu passieren. Entweder tiefer in die Geschichte einsteigen. Ich dachte, der obige Code würde nur nach Balken suchen...

 
Николай Никитюк:


Hier ist ein guter Indikatorhttps://www.mql5.com/ru/code/28364

Alles, was Sie brauchen, kann in das System eingebaut werden !!!!!!!

//+------------------------------------------------------------------+
//|                                                      Phoenix.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//--- setting the indicator name
#property description "Phoenix"
//--- set the strict mode of compilation
#property strict
//--- specify where to draw the indicator
#property indicator_chart_window
//--- specify the number of buffers
#property indicator_buffers 2
//--- setting the color of the indicator rendering
#property indicator_color1 clrGreenYellow
#property indicator_color2 clrRed
//--- we define the input parameters

//--- specify arrays of indicator buffers
double arrow_01[];
double arrow_02[];
//*********************************************//
bool flag_buy   = false;
bool flag_sell  = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   string short_name;
//--- we specify two additional buffers for calculations
   IndicatorBuffers(2);
   SetIndexBuffer(0,arrow_01);
   SetIndexBuffer(1,arrow_02);
//--- setting the indicator to be drawn as a line
   SetIndexStyle(0,DRAW_ARROW,EMPTY,2,clrGreenYellow);
   SetIndexArrow(0,233);
   SetIndexBuffer(0,arrow_01);
   SetIndexStyle(1,DRAW_ARROW,EMPTY,2,clrRed);
   SetIndexArrow(1,234);
   SetIndexBuffer(1,arrow_02);
//--- setting a name in the DataWindow window and a label
   short_name="Phoenix";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//--- if there are no errors,initialization is completed successfully
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                            Phoenix                               |
//+------------------------------------------------------------------+
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[])
  {
   for(int shift=rates_total; shift>=0; shift--)
     {
      //--- to simplify the coding and speed up access data are put into internal variables
      double MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,shift);
      double SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,shift);
        {
         if(flag_buy==false)
            //--- check for long position (BUY) possibility
            if(MacdCurrent>SignalCurrent)
              {
               arrow_01[shift]=Low[shift];
               flag_buy=true;
               flag_sell=false;
              }
         if(flag_sell==false)
            //--- check for short position (SELL) possibility
            if(MacdCurrent<SignalCurrent)
              {
               arrow_02[shift]=High[shift];
               flag_buy=false;
               flag_sell=true;
              }
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
Phoenix
Phoenix
  • www.mql5.com
В стрелочном индикаторе Phoenix используется комбинация трех индикаторов: Moving Average, Bolinger Bands и Momentum в сочетании с двумя мощными формулами, основанными на поведении цены текущего графика. В индикаторе Phoenix также реализована система звуковых и текстовых алертов, а также отправка...
Dateien:
EURUSDM30.png  35 kb
 

Guten Tag!

Bitte helfen Sie mir bei der folgenden Aufgabe:

Ich muss ein Skript (Python) von MQL4 Expert Advisor ausführen. Ich versuche, es mit ShellExecuteW() auf folgende Weise zu tun:

#import "shell32.dll"
string ShellExecuteW(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd);
#import
#include <WinUser32.mqh>

void OnStart()
  {
ShellExecuteW(NULL, NULL, "C:\\Users\\yansa\\Desktop\\test_script.py", NULL, NULL, 1);
  }

Ich erhalte einen Dateizugriffsfehler. Das Skript wird ausgeführt, aber der Code geht nicht weiter.


Ich würde mich freuen, wenn Sie mir die Funktion zur Ausführung des Skripts mitteilen könnten.

Eine weitere Frage: Wie kann ich die Ausführung des Skripts überprüfen?

 
Николай Никитюк:

Hallo! 2020.10.28_05:19:00 GMT+3. Ich habe den Indikator LeManTrend_Indicator.mq5 in die vierte Version .mq4 übersetzt.

Dieser hier passt nicht

https://www.mql5.com/ru/code/9096

LeManTrend
LeManTrend
  • www.mql5.com
Индикатор определяет положение тренда на основе текущей цены и максимальных и минимальных цен за три периода.
 
MakarFX:

Und dieser hier passt nicht.

https://www.mql5.com/ru/code/9096

Diese scheint besser zu sein.

//+------------------------------------------------------------------+
//|                                                      Phoenix.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
//--- setting the indicator name
#property description "Phoenix"
//--- set the strict mode of compilation
#property strict
//--- specify where to draw the indicator
#property indicator_chart_window
//--- specify the number of buffers
#property indicator_buffers 2
//--- setting the color of the indicator rendering
#property indicator_color1 clrGreenYellow
#property indicator_color2 clrRed
//--- we define the input parameters

//--- specify arrays of indicator buffers
double arrow_01[];
double arrow_02[];
//*********************************************//
bool flag_buy   = false;
bool flag_sell  = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit(void)
  {
   string short_name;
//--- we specify two additional buffers for calculations
   IndicatorBuffers(2);
   SetIndexBuffer(0,arrow_01);
   SetIndexBuffer(1,arrow_02);
//--- setting the indicator to be drawn as a line
   SetIndexStyle(0,DRAW_ARROW,EMPTY,2,clrGreenYellow);
   SetIndexArrow(0,233);
   SetIndexBuffer(0,arrow_01);
   SetIndexStyle(1,DRAW_ARROW,EMPTY,2,clrRed);
   SetIndexArrow(1,234);
   SetIndexBuffer(1,arrow_02);
//--- setting a name in the DataWindow window and a label
   short_name="Phoenix";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//--- if there are no errors,initialization is completed successfully
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                            Phoenix                               |
//+------------------------------------------------------------------+
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[])
  {
   for(int shift=rates_total; shift>=0; shift--)
     {
      //--- to simplify the coding and speed up access data are put into internal variables
      double MacdCurrent=iCustom(NULL,0,"LeManTrend",13,21,34,3,MODE_MAIN,shift);
      double SignalCurrent=iCustom(NULL,0,"LeManTrend",13,21,34,3,MODE_SIGNAL,shift);
        {
         if(flag_buy==false)
            //--- check for long position (BUY) possibility
            if(MacdCurrent>SignalCurrent)
              {
               arrow_01[shift]=Low[shift];
               flag_buy=true;
               flag_sell=false;
              }
         if(flag_sell==false)
            //--- check for short position (SELL) possibility
            if(MacdCurrent<SignalCurrent)
              {
               arrow_02[shift]=High[shift];
               flag_buy=false;
               flag_sell=true;
              }
        }
     }
   return(rates_total);
  }
//+------------------------------------------------------------------+
Dateien: