从头开始自学MQL5语言 - 页 79

 
Valeriy Yastremskiy:

Artem Trishkin也回答了我的问题,因为它是一个链接(upperand),所以它可以站在任何地方。为了实验的纯洁性,应该尝试没有空格。

谢谢你,Valery!如果我遇到类似的问题,一定会考虑这一点。

圣诞快乐!

真诚的,弗拉基米尔。

 

祝大家交易愉快,心情愉快!

我继续学习MQL5编程语言。我对以前发表的代码 进行了一些修改,这是我得到的结果。

input string Symbol_Main="EURUSD";          //Валютная пара, на которую ставим советник
input ENUM_TIMEFRAMES Time_Frame=PERIOD_H1; //Таймфрейм, на который ставим советник

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   /* Определим график валютной пары и таймфрейм, на который будем устанавливать советник. */
   /* Если текущий график валютной пары и текущий таймфрейм совпадают со входными параметрами */
   if(_Symbol==Symbol_Main && _Period==Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и продолжаем работу советника */
      MessageBox("Работа советника разрешена! Продолжим!");
      return(INIT_SUCCEEDED); //возвращаем для функции OnInit значение означающее "удачная инициализация"
     }
   /* Если текущий график валютной пары и текущий таймфрейм не совпадают со входными параметрами */
   if(_Symbol!=Symbol_Main && _Period!=Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадают валютная пара и таймфрейм! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   /* Если текущий график валютной пары не совпадает со входным параметром */
   if(_Symbol!=Symbol_Main)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадает валютная пара! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   /* Если текущий таймфрейм не совпадает со входным параметром */
   if(_Period!=Time_Frame)
     {
      /* выводим окно сообщений на торговом терминале и закрываем советник */
      MessageBox("Не совпадет таймфрейм! Выходим!");
      return(INIT_FAILED); //возвращаем для функции OnInit значение означающее "неудачная инициализация"
     }
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

也许有人会需要它。

问候,弗拉基米尔。

 

大家今天好,心情好

我有一些空闲时间,决定继续我的自学。但突然间,我遇到了一个问题。早些时候,当我在我的专家顾问Trailing_Stop_(v.2).mq5中向贸易服务器发出这样的请求时。

   /*  Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {0};
   MqlTradeResult result= {0};

在代码编译过程中没有任何问题。现在,编译器产生了以下错误。

不能将0转换为枚举'ENUM_TRADE_REQUEST_ACTIONS'Trailing_Stop_(v.2).mq5 411 30

如果我在大括号中的请求 后面去掉一个零。

   /*  Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {};
   MqlTradeResult result= {0};

那么我就没有得到一个错误。请帮助我,这是什么原因?

问候,弗拉基米尔。

 
MrBrooklin:

大家今天好,心情好

我有一些空闲时间,决定继续我的自学。但突然间,我遇到了一个问题。早些时候,当我在我的专家顾问Trailing_Stop_(v.2).mq5中向贸易服务器发出这样的请求时。

在代码编译过程中没有任何问题。现在,编译器产生了以下错误。

不能将0转换为枚举'ENUM_TRADE_REQUEST_ACTIONS'Trailing_Stop_(v.2).mq5 411 30

如果我在大括号中的请求 后面去掉一个零。

那么我就没有得到一个错误。请帮助我,这是什么原因?

问候,弗拉基米尔。

是的,现在不要写零,以备归零。

ENUM_TRADE_REQUEST_ACTIONS,这个枚举缺乏值 "0"。

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'


正确的方法应该是。

MqlTradeRequest request={};

 
Vladimir Karputov:

是的,现在不要为归零而写0。

谢谢你,Vladimir!

你活了很久,也学了很久!如果MQL5参考文献 的开发者能到处纠正这个问题,那就再好不过了。

真诚的,弗拉基米尔。

 

大家早上好!

我正在继续自学MQL5编程语言。我决定写一个函数,从ZigZag指标中获取信号。我开始彻底研究它,它立即引起了一些问题。我在它的输入参数 里有它。

input int Depth      = 12;  // Depth
input int Deviation  = 5;   // Deviation
input int Backstep   = 3;   // Backstep

我的英语并不流利,所以我必须使用谷歌翻译器。什么是纯粹的翻译。

Depth - глубина
Deviation - отклонение
Backstep - шаг назад

问题。

  1. 如果是深度,什么的深度?
  2. 如果偏离,偏离什么,偏离什么参数或数值?
  3. 如果是退步,为什么要退步?它不是在往前走吗?

亲爱的专家,请帮助我理解

真诚的,弗拉基米尔。

 
MrBrooklin:

大家早上好!

我正在继续自学MQL5编程语言。我决定写一个函数,从ZigZag指标中获取信号。我开始彻底研究它,它立即引起了一些问题。我在它的输入参数 里有它。

我的英语并不流利,所以我必须使用谷歌翻译器。什么是纯粹的翻译。

问题。

  1. 如果是深度,什么的深度?
  2. 如果偏离,偏离什么,偏离什么参数或数值?
  3. 如果是退步,为什么要退步?它不是在往前走吗?

亲爱的专家,请帮助我理解

真诚的,弗拉基米尔。

小学-- 搜索帮助," 难道它不前进吗"--整个故事在这里向后移动!!!!:-)

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


深度是指不会出现第二个高点(低点)少于(多于)前一个高点(低点)的最小条数,即ZigZag总是可以发散,但收敛(或整体转移)多于偏差,ZigZag只能在深度条后。后退是指高点(低点)之间的最小条数。


在搜索框中输入:如人字形参数,https://www.mql5.com/ru/search#!keyword=%D0%B7%D0%B8%D0%B3%20%D0%B7%D0%B0%D0%B3%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B&amp;page=2</b></p>

PS初级的东西...

ZigZag
ZigZag
  • www.mql5.com
ZigZag отслеживает и соединяет между собой крайние точки графика отстоящие друг от друга не менее чем на заданный процент по шкале цены.
 
Roman Shiredchenko:

小学-- 搜索帮助," 不是在往前走吗"--整个故事在这里往后走!!!!:-)

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


深度是指没有第二个最大值(最小值)小于(大于)前一个偏差点的最小条数,即ZigZag总是可以发散,但它可以收敛(或整体转移)超过偏差,ZigZag只能在深度条后。后退是指高点(低点)之间的最小条数。


在搜索框中输入:如人字形参数,https://www.mql5.com/ru/search#!keyword=%D0%B7%D0%B8%D0%B3%20%D0%B7%D0%B0%D0%B3%20%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B&amp;page=2</b></p>

PS初级的东西...

非常感谢你,罗曼!你给出了最简明,但同时也是最容易理解的解释。

尊敬的弗拉基米尔。

 
MrBrooklin:

非常感谢你,罗曼!你已经给出了最简洁,但同时也是最容易理解的解释。

尊敬的弗拉基米尔。

谢谢你的检查,我是友好的,没有恶意的。它是带着微笑的!
 

大家好!

在测试一个专家顾问时,我遇到了一个问题。它的EA初始化函数的代码如下。

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- достаточно ли количество баров для работы
   if(Bars(_Symbol,_Period)<60) // общее количество баров на графике меньше 60?
     {
      Alert("На графике меньше 60 баров, советник не будет работать!!");
      return(-1);
     }
//--- получить хэндл индикатора Bollinger Bands и DEMA
   BolBandsHandle=iBands(NULL,PERIOD_M30,bands_period,bands_shift,deviation,PRICE_CLOSE);
   demaHandle=iDEMA(NULL,PERIOD_D1,dema_period,0,PRICE_CLOSE);
//--- Нужно проверить, не были ли возвращены значения Invalid Handle
   if((BolBandsHandle<0) || (demaHandle<0))
     {
      Alert("Ошибка при создании индикаторов - номер ошибки: ",GetLastError(),"!!");
      return(-1);
     }

   return(0);
  }

测试EA的 过程中,我在日志中得到了信息。

2021.10.31 13:19:25.752 Core 2  genetic pass (0, 288) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:26.835 Core 2  genetic pass (0, 298) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:26.921 Core 1  genetic pass (0, 42) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:27.847 Core 2  genetic pass (0, 318) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:27.848 Core 2  genetic pass (0, 326) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:29.907 Core 2  genetic pass (0, 359) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:29.907 Core 2  genetic pass (0, 371) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:30.009 Core 1  genetic pass (0, 102) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:30.009 Core 1  genetic pass (0, 105) tested with error "OnInit returned non-zero code -1" in 0:00:00.000
2021.10.31 13:19:31.044 Core 1  genetic pass (0, 122) tested with error "OnInit returned non-zero code -1" in 0:00:00.000

и т.д.

我发现问题出在检查布林线DEMA 指标手柄上。我已经检查了布林线和DEMA指标柄,所以我有一个问题:我应该在我的代码中改变什么来纠正这些错误?

问候,弗拉基米尔。