Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1287

 

Ciao! 2020.10.28_05:19:00 GMT+3. Ho tradotto l'indicatore LeManTrend_Indicator.mq5 nella quarta versione .mq4 . L'indicatore appare sul grafico, ma quando provo a passare GBPUSD, H1 a M5 timeframe, MetaTrader4 si blocca, la CPU è sovraccarica. Devo chiudere MetaTrader4 e riaprirlo. Nessun blocco quando rimuovo LeManTrend_Indicator.ex4 dal grafico. Non capisco cosa c'è di sbagliato nel codice dell'indicatore. Chi può darmi un suggerimento? Come risolvere il problema?

E LeMan_BrainTrend1Sig.mq5 convertito alla quarta versione, è nella lista degli indicatori, ma nulla appare sul grafico. Come riscrivere il codice di questo indicatore per farlo funzionare correttamente, non lo so. Ho già scritto solo di Expert Advisors. Come controllarli in strategytester- lo so. E quando scrivo Print() delle variabili nel codice, diventa chiaro cosa c'è di sbagliato. Non so come controllare gli indicatori. Ho scritto Print() nel codice, non viene salvato in nessun registro. Qualcuno può consigliarmi cosa fare con gli indicatori per farli funzionare e non occupare spazio sul disco rigido? Non vedo l'ora di avere tue notizie. 05:44 GMT+3.

Sì, ora posterò i codici degli indicatori. Un'altra cosa. Perché ho convertito gli indicatori da .mq5 a .mq4? Perché il mio broker ha conti in rubli solo in MetaTrader4. E gli indicatori sono scritti in quinta versione. E ho bisogno di indicatori per scrivere un Expert Advisor redditizio per MetaTrader4. Questo è tutto ora. 05:53 GMT+3.

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

Ciao! 2020.10.28_05:19:00 GMT+3. Ho tradotto l'indicatore LeManTrend_Indicator.mq5 nella quarta versione .mq4 . L'indicatore appare sul grafico, ma quando provo a passare GBPUSD, H1 a M5 timeframe, MetaTrader4 si blocca, la CPU è sovraccarica. Devo chiudere MetaTrader4 e riaprirlo. Nessun blocco quando rimuovo LeManTrend_Indicator.ex4 dal grafico. Non capisco cosa c'è di sbagliato nel codice dell'indicatore. Chi può darmi un suggerimento? Come risolvere il problema?

E LeMan_BrainTrend1Sig.mq5 convertito alla quarta versione, è nella lista degli indicatori, ma nulla appare sul grafico. Come riscrivere il codice di questo indicatore per farlo funzionare correttamente, non lo so. Ho già scritto solo di Expert Advisors. Come controllarli in strategytester- lo so. E quando scrivo Print() delle variabili nel codice, diventa chiaro cosa c'è di sbagliato. Non so come controllare gli indicatori. Ho scritto Print() nel codice, non viene salvato in nessun registro. Qualcuno può consigliarmi cosa fare con gli indicatori per farli funzionare e non occupare spazio sul disco rigido? Non vedo l'ora di avere tue notizie. 05:44 GMT+3.

Sì, ora posterò i codici degli indicatori. Un'altra cosa. Perché ho convertito gli indicatori da .mq5 a .mq4? Perché il mio broker ha conti in rubli solo in MetaTrader4. E gli indicatori sono scritti in quinta versione. E ho bisogno di indicatori per scrivere un Expert Advisor redditizio per MetaTrader4. Questo è tutto ora. 05:53 GMT+3.

LeManTrend_Indicator.mq5- l'indicatore stesso quihttps://www.mql5.com/ru/code/27570

funziona anche in 4 - ma è necessario rimuovere la ripetizione (stringa) prima di (err_text)

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

sarebbe così

//+------------------------------------------------------------------+
//| 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- l'indicatore stesso quihttps://www.mql5.com/ru/code/27570

funziona anche in 4 - ma è necessario rimuovere la ripetizione (stringa) prima di (err_text)

dovrebbe apparire così

stringa

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

BrainTrend1Sig per 4 qui -https://www.mql5.com/ru/code/8772

Questo dovrebbe contenere il già corretto LeManTrend_Indicator.mq4 per i quadrupli

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

BrainTrend1Sig per 4 qui -https://www.mql5.com/ru/code/8772

Qui devi aggiungere LeManTrend_Indicator.mq4, già fissato per il 4

c'è un errore - devi cancellare questa linea ( double const = 0; )

e tutto funzionerà

    doppio const = 0;

doppio const = 0; 2.PNG


 
Nikolai Semko:

Sei un comico.

Con chi stavo parlando?



Di cosa si tratta? Stesso indice di barra. E sembra accadere solo alla prima esecuzione su un simbolo. O più a fondo nella storia. Pensavo che il codice di cui sopra stesse solo controllando le barre...

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


Ecco un buon indicatorehttps://www.mql5.com/ru/code/28364

Tutto ciò di cui avete bisogno può essere incorporato in esso !!!!!!!

//+------------------------------------------------------------------+
//|                                                      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 также реализована система звуковых и текстовых алертов, а также отправка...
File:
EURUSDM30.png  35 kb
 

Buon pomeriggio!

Per favore aiutatemi con il seguente compito:

Ho bisogno di eseguire uno script (Python) da MQL4 Expert Advisor. Sto cercando di farlo usando ShellExecuteW() nel modo seguente:

#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);
  }

Ottengo un errore di accesso al file. Lo script è in esecuzione ma il codice non va oltre.


Sarò felice se potete condividere la funzione per eseguire lo script.

Un'altra domanda: come controllo l'esecuzione dello script?

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

Ciao! 2020.10.28_05:19:00 GMT+3. Ho tradotto l'indicatore LeManTrend_Indicator.mq5 nella quarta versione .mq4 .

Questo non si adatta

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

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

E questo non si adatta.

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

Questo sembra essere migliore.

//+------------------------------------------------------------------+
//|                                                      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);
  }
//+------------------------------------------------------------------+
File: