初学者的问题 MQL5 MT5 MetaTrader 5 - 页 140

 
DC2008:

1.如果你省略检查,你可以这样做。

2.是

3.这个问题并不清楚。

1.这些支票是用来做什么的?如果没有他们,就会有更多的资源被浪费掉?

2.例如,在mql4中,有一些变量名称。

int start()
  {
   int
   Total,                           // Количество ордеров в окне 
   Tip=-1,                          // Тип выбран. ордера (B=0,S=1)
   Ticket;                          // Номер ордера
   double
   MA_1_t,                          // Значен. МА_1 текущее
   MA_2_t,                          // Значен. МА_2 текущее 
   One_Lot,                         // Стоимость одного лота
   Price,                           // Цена выбранного ордера
   SL,                              // SL выбранного ордера 
   TP;                              // TP выбранного ордера
   bool 
   Ans  =false,                     // Ответ сервера после закрытия
   Cls_B=false,                     // Критерий для закрытия  Buy
   Cls_S=false,                     // Критерий для закрытия  Sell

在mql5的哪个部分列出这些变量,这些变量在上面的代码中是在mql4中的int start?

全局变量在int启动前被设置。所有的EA代码都取自这里的教程https://с.mql4.com/book

 
forexman77:

1.这些支票是用来做什么的?如果没有他们,就会有更多的资源被浪费掉?

2.在mql4中,有一些变量名称,比如说。

在mql5的哪个部分列出这些变量,这些变量在上面的代码中是在mql4中的int start?

全局变量在int启动前被设置。专家顾问的全部代码取自这里的教程https://с.mql4.com/book。

1.对于专家顾问的可靠的真实交易。

这些都是局部变量,你可以把它们复制到OnTick 函数中,它取代了4的start()。

然而,我想提醒你:交易功能不应该被一一转置!你可以在你的交易中使用这些功能。

 
DC2008:

1.为了在真实的环境中进行可靠的EA操作。

2.这些都是局部变量,你可以把它们复制到OnTick 函数中,该函数从四个方面取代了start()。

但是,我想提醒你,交易功能不应该被复制到另一个地方去!你必须要有足够的耐心和毅力。

你的意思是,有些变量在五中的计算方式不同吗?对不起,我对mql5还不了解,所以我不能完全理解你。你能举个例子说明为什么你不能把函数从mql4转移到另一个?是否有一个论坛的傻瓜分支?)

我正在尝试插入代码。

datetime iTimeMQL4(string symbol,int tf,int index)
{
   if(index < 0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[];
   if(CopyTime(symbol, timeframe, index, 1, Arr)>0)
        return(Arr[0]);
   else return(-1);
}

我在void OnTick()中看到错误。

TFMigrate' - 未定义函数

隐式枚举转换

我在int OnInit()中尝试了同样的错误。我做错了什么?

在mql5中,我们将标志、票据、止损和盈利手数等放入全局变量,这些变量需要存储在主代码之外,也就是说,原理与mql4相同。

 
forexman77:

你的意思是,有些变量在5中的计算方式不同吗?对不起,我对mql5一窍不通,我不太明白你的意思。你能举个例子说明为什么mql4函数不能相互转移吗?在这个论坛上有一个完全是傻瓜的分支吗?)

你应该放弃mql4,不要 "愚蠢地 "逐行翻译,而应该开始 "从炉子上跳舞"!在kodobase和标准的MQ交付中,有很多例子和现成的Expert Advisors,用于五种。如果这对你来说是 "高等数学",那么就在 "工作 "部分订购一个EA。

现在是你问题的答案。

  1. 复制文章中的TFMigrate函数,它在开头。
  2. 至于变量,其原理是一样的。
 
DC2008:

你不能就这样开始 "在炉灶上跳舞",而不是 "呆呆地 "一行一行地翻译!"。在kodobase和标准的MQ软件包中,有很多例子和现成的EA,供五人使用。如果这对你来说是 "高等数学",那么就在 "工作 "部分订购一个EA。

现在是你问题的答案。

  1. 复制文章中的TFMigrate函数,它在开头。
  2. 至于变量,其原理是一样的。
我想把你的函数
int HourMQL4(){MqlDateTime tm;TimeCurrent(tm);return(tm.hour);};
进入void OnTick(),它要求把它放到全局的'HourMQL4'中--该函数 只能在全局范围内声明。真的有必要把它放在那里吗?如果我这样做,就不会有错误。大括号后的分号是否有必要?
 
如何从一天的开始确定当前的 时间(分钟)?

我曾这样想过。

datetime  vrema=TimeCurrent(MqlDateTime{int hour;});
int tek_vrema= vrema*60;
我不确定第一行的代码是否正确。
 
forexman77:
我试着把你的函数放到void OnTick()中,它要求把它放到全局的'HourMQL4'中 - 函数只能在全局范围内声明。真的有必要把它放在那里吗?如果我这样做,就不会有错误。大括号后的分号是否有必要?

该函数不能被包含在一个函数中。

 
forexman77:
如何从一天的开始确定当前的 时间(分钟)?

我是这样想的。

我不确定第一行的代码是否正确。

这是正确的。

   MqlDateTime tm;
   TimeCurrent(tm);
   int tek_vrema=tm.hour*60;
 
下午好,请告诉我在形成图片中那样的烛台形态后发出提示音的指标或专家顾问。 即提示音是在7根相反的蜡烛之后,或6根蜡烛之后,所以这个数字可以改变。谢谢你。
 
DC2008:

就是这样做的。

非常感谢您!它是有效的。

解释mql5的逻辑。在mql4中,int Hour()被用来确定以小时为单位的时间。 在mql5中,没有这样的常数,据我所知。

1.程序如何识别我们要求的是以小时为单位的时间?我想是来自MqlDateTime

2.要将当前时间(分钟)与当前时间(小时)相加,即找出当前时间(分钟),其结构是这样的

 MqlDateTime tm;
 TimeCurrent(tm);
 int tek_vrema=tm.hour*60+tm.min;

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура даты
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура даты - Документация по MQL5