Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1287

 

Bonjour. 2020.10.28_05:19:00 GMT+3. J'ai traduit l'indicateur LeManTrend_Indicator.mq5 dans la quatrième version .mq4 . L'indicateur apparaît sur le graphique, mais lorsque j'essaie de passer de GBPUSD,H1 à M5 timeframe, MetaTrader4 se bloque, le CPU est surchargé. Je dois fermer MetaTrader4 et le rouvrir. Aucun gel lorsque je supprime LeManTrend_Indicator.ex4 du graphique. Je ne comprends pas ce qui ne va pas dans le code de l'indicateur. Qui peut me donner un indice ? Comment le réparer ?

Et LeMan_BrainTrend1Sig.mq5 converti à la quatrième version, il est dans la liste des indicateurs, mais rien n'apparaît sur le graphique. Comment réécrire le code de cet indicateur pour le faire fonctionner correctement, je ne sais pas. J'ai déjà écrit sur les conseillers experts. Comment les vérifier dans letesteur de stratégie- je sais. Et lorsque j'écris Print() des variables dans le code, ce qui ne va pas devient clair. Je ne sais pas comment vérifier les indicateurs. J'ai écrit Print() dans le code, il n'est enregistré dans aucun journal. Quelqu'un peut-il me conseiller sur ce qu'il faut faire avec les indicateurs pour qu'ils fonctionnent et ne prennent pas de place sur le disque dur ? Dans l'attente d'une réponse de votre part. 05H44 GMT+3.

Oui, je vais poster les codes indicateurs maintenant. Une dernière chose. Pourquoi ai-je converti les indicateurs de .mq5 en .mq4 ? Parce que mon courtier ne dispose de comptes en roubles que dans MetaTrader4. Et les indicateurs sont écrits en cinquième version. Et j'ai besoin d'indicateurs pour écrire un conseiller expert rentable pour MetaTrader4. C'est tout maintenant. 05:53 GMT+3.

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

Bonjour ! 2020.10.28_05:19:00 GMT+3. J'ai traduit l'indicateur LeManTrend_Indicator.mq5 dans la quatrième version .mq4 . L'indicateur apparaît sur le graphique, mais lorsque j'essaie de passer de GBPUSD,H1 à M5 timeframe, MetaTrader4 se bloque, le CPU est surchargé. Je dois fermer MetaTrader4 et le rouvrir. Aucun gel lorsque je supprime LeManTrend_Indicator.ex4 du graphique. Je ne comprends pas ce qui ne va pas dans le code de l'indicateur. Qui peut me donner un indice ? Comment le réparer ?

Et LeMan_BrainTrend1Sig.mq5 converti à la quatrième version, il est dans la liste des indicateurs, mais rien n'apparaît sur le graphique. Comment réécrire le code de cet indicateur pour le faire fonctionner correctement, je ne sais pas. J'ai déjà écrit sur les conseillers experts. Comment les vérifier dans letesteur de stratégie- je sais. Et lorsque j'écris Print() des variables dans le code, ce qui ne va pas devient clair. Je ne sais pas comment vérifier les indicateurs. J'ai écrit Print() dans le code, il n'est enregistré dans aucun journal. Quelqu'un peut-il me conseiller sur ce qu'il faut faire avec les indicateurs pour qu'ils fonctionnent et ne prennent pas de place sur le disque dur ? Dans l'attente d'une réponse de votre part. 05H44 GMT+3.

Oui, je vais poster les codes indicateurs maintenant. Une dernière chose. Pourquoi ai-je converti les indicateurs de .mq5 en .mq4 ? Parce que mon courtier ne dispose de comptes en roubles que dans MetaTrader4. Et les indicateurs sont écrits en cinquième version. Et j'ai besoin d'indicateurs pour écrire un conseiller expert rentable pour MetaTrader4. C'est tout maintenant. 05:53 GMT+3.

LeManTrend_Indicator.mq5- l'indicateur lui-même icihttps://www.mql5.com/ru/code/27570

cela fonctionne également en 4 - il suffit de supprimer la répétition (string ) avant (err_text)

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

cela ressemblerait à ceci

//+------------------------------------------------------------------+
//| 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'indicateur lui-même icihttps://www.mql5.com/ru/code/27570

cela fonctionne également en 4 - mais vous devez supprimer la répétition (string ) avant (err_text)

cela devrait ressembler à ceci

chaîne de caractères

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

BrainTrend1Sig pour 4 ici -https://www.mql5.com/ru/code/8772

Celui-ci devrait contenir le LeManTrend_Indicator.mq4 déjà corrigé pour 4

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

BrainTrend1Sig pour 4 ici -https://www.mql5.com/ru/code/8772

Ici vous devez ajouter LeManTrend_Indicator.mq4, déjà fixé pour 4

il y a une erreur - vous devez supprimer cette ligne ( double const = 0 ; )

et tout fonctionnera

    double const = 0 ;

double const = 0 ; 2.PNG


 
Nikolai Semko:

Vous êtes un comédien.

A qui je parlais ?



De quoi s'agit-il ? Même indice de barre. Et cela semble se produire uniquement lors de la première exécution d'un symbole. Soit plus profondément dans l'histoire. Je pensais que le code ci-dessus vérifiait juste les barres...

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


Voici un bon indicateurhttps://www.mql5.com/ru/code/28364

Tout ce dont vous avez besoin peut y être intégré ! !!!!!!.

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

Bonjour !

Veuillez m'aider à accomplir la tâche suivante :

Je dois exécuter un script (Python) à partir de MQL4 Expert Advisor. J'essaie de le faire en utilisant ShellExecuteW() de la manière suivante :

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

Je reçois une erreur d'accès au fichier. Le script s'exécute mais le code ne va pas plus loin.


Je serai heureux si vous pouvez partager la fonction pour exécuter le script.

Autre question : comment vérifier l'exécution du script ?

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

Bonjour ! 2020.10.28_05:19:00 GMT+3. J'ai traduit l'indicateur LeManTrend_Indicator.mq5 dans la quatrième version .mq4 .

Celui-ci ne convient pas

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

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

Et celui-là ne convient pas.

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

Celui-ci semble être meilleur.

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