Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1287

 

Olá! 2020.10.28_05:19:00 GMT+3. Traduzi o indicador LeManTrend_Indicator.mq5 para a quarta versão .mq4 . O indicador aparece no gráfico, mas quando eu tento mudar o tempo GBPUSD,H1 para M5, o MetaTrader4 fica pendurado, a CPU fica sobrecarregada. Tenho que fechar o MetaTrader4 e abri-lo novamente. Não congela quando retiro LeManTrend_Indicator.ex4 da tabela. Eu não entendo o que está errado no código indicador. Quem pode me dar uma dica? Como consertá-lo?

E LeMan_BrainTrend1Sig.mq5 convertido para a quarta versão, está na lista de indicadores, mas nada aparece no gráfico. Como reescrever o código deste indicador para fazê-lo funcionar corretamente, eu não sei. Eu já escrevi anteriormente somente Expert Advisors. Como verificá-los notestador de estratégia- eu sei. E quando escrevo Print() de variáveis no código, torna-se claro o que está errado. Eu não sei como verificar os indicadores. Eu escrevi Print() no código, ele não é salvo em nenhum log. Alguém vai me aconselhar o que fazer com os indicadores para fazê-los funcionar, não para ocupar espaço no disco rígido? Aguardo com expectativa a sua resposta. 05:44 GMT+3.

Sim, vou postar os códigos indicadores agora. Mais uma coisa. Por que eu converti indicadores de .mq5 para .mq4 ? Porque meu corretor tem contas de rublo somente no MetaTrader4. E os indicadores são escritos na quinta versão. E preciso de indicadores para escrever um consultor especializado rentável para o MetaTrader4. É isso agora. 05:53 GMT+3.

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

Olá! 2020.10.28_05:19:00 GMT+3. Traduzi o indicador LeManTrend_Indicator.mq5 para a quarta versão .mq4 . O indicador aparece no gráfico, mas quando eu tento mudar o tempo GBPUSD,H1 para M5, o MetaTrader4 fica pendurado, a CPU fica sobrecarregada. Tenho que fechar o MetaTrader4 e abri-lo novamente. Não congela quando retiro LeManTrend_Indicator.ex4 da tabela. Eu não entendo o que está errado no código indicador. Quem pode me dar uma dica? Como consertá-lo?

E LeMan_BrainTrend1Sig.mq5 convertido para a quarta versão, está na lista de indicadores, mas nada aparece no gráfico. Como reescrever o código deste indicador para fazê-lo funcionar corretamente, eu não sei. Eu já escrevi anteriormente somente Expert Advisors. Como verificá-los notestador de estratégia- eu sei. E quando escrevo Print() de variáveis no código, torna-se claro o que está errado. Eu não sei como verificar os indicadores. Eu escrevi Print() no código, ele não é salvo em nenhum log. Alguém vai me aconselhar o que fazer com os indicadores para fazê-los funcionar, não para ocupar espaço no disco rígido? Aguardo com expectativa a sua resposta. 05:44 GMT+3.

Sim, vou postar os códigos indicadores agora. Mais uma coisa. Por que eu converti indicadores de .mq5 para .mq4 ? Porque meu corretor tem contas de rublo somente no MetaTrader4. E os indicadores são escritos na quinta versão. E preciso de indicadores para escrever um consultor especializado rentável para o MetaTrader4. É isso agora. 05:53 GMT+3.

LeManTrend_Indicator.mq5- o próprio indicador aquihttps://www.mql5.com/ru/code/27570

também funciona em 4 - você só precisa remover a repetição (string ) antes (err_text)

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

pareceria assim

//+------------------------------------------------------------------+
//| 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- o próprio indicador aquihttps://www.mql5.com/ru/code/27570

também funciona em 4 - mas você precisa remover a repetição (string ) antes (err_text)

deve parecer com isto

corda

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

BrainTrend1Sig para 4 aqui -https://www.mql5.com/ru/code/8772

Este deve conter o já corrigido LeManTrend_Indicator.mq4 para 4

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

BrainTrend1Sig para 4 aqui -https://www.mql5.com/ru/code/8772

Aqui você precisa adicionar LeManTrend_Indicator.mq4, já fixado para 4

há um erro - você precisa apagar esta linha ( dupla const = 0; )

e tudo vai funcionar

    dupla const = 0;

dupla const = 0; 2.PNG


 
Nikolai Semko:

Você é um comediante.

Com quem eu estava falando?



De que se trata esta situação? O mesmo índice de barras. E isso parece acontecer apenas na primeira corrida com um símbolo. Ou mais profundamente na história. Pensei que o código acima estava apenas verificando barras...

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


Aqui está um bom indicadorhttps://www.mql5.com/ru/code/28364

Tudo o que você precisa pode ser embutido nele !!!!!!!

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

Boa tarde!

Por favor, ajude-me na seguinte tarefa:

Preciso executar um script (Python) do MQL4 Expert Advisor. Estou tentando fazer isso usando ShellExecuteW() da seguinte maneira:

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

Eu recebo um erro de acesso ao arquivo. O script está em execução, mas o código não vai mais longe.


Ficarei feliz se você puder compartilhar a função de executar o roteiro.

Outra pergunta: como posso verificar a execução do roteiro?

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

Olá! 2020.10.28_05:19:00 GMT+3. Traduzi o indicador LeManTrend_Indicator.mq5 para a quarta versão .mq4 .

Este não se encaixa

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

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

E esta não se encaixa.

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

Esta parece ser melhor.

//+------------------------------------------------------------------+
//|                                                      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);
  }
//+------------------------------------------------------------------+
Arquivos anexados:
Razão: