新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 838 1...831832833834835836837838839840841842843844845...1953 新评论 Alexandr Sokolov 2019.05.08 05:18 #8371 如何清空指标的高值和低值?例如,如果我设置一个最大值为100,最小值为0,然后我需要指标将所有内容可视化,我如何组织?问题是,我写了一个有几种模式的指标,其中一个使用最大和最小,但在输入参数中切换模式后,最大仍是100,最小也是0。 MQL5 Alexander Layzerevich 2019.05.08 05:48 #8372 Alekseu Fedotov:你已经调用并传递了偏差(Kanal)返回的值给Envelopes(........) 函数。 而在Envelopes(........) 函数本身中,你声明了最后一个参数,它将采用这个值 像这样 谢谢你,现在更有意义了。 Alexander Layzerevich 2019.05.08 07:36 #8373 根据你的建议,对MT5的代码稍作修改,结果是这样的。 input string Parametrs_Indicator = "Настройки Индикатора";// Настройки Индикатора input ENUM_TIMEFRAMES Time_Frames = PERIOD_M5; // Временной период int Ma_Period = 120; // Период int Ma_Shift = 0; // Cдвиг средней ENUM_MA_METHOD Ma_Method = MODE_SMMA; // Mетод усреднения ENUM_APPLIED_PRICE Applied_Price = PRICE_CLOSE; // Tип цены //************************************************************************************************/ void OnTick() { //--------------------------------------------------- double Signal_Sell = Envelopes(0, Deviation(1)); // Сигнал на Продажу Print ("Signal_Sell = ", Signal_Sell); if (Signal_Sell < 0) { Print("Signal_Sell error #",GetLastError()); } double Signal_Buy = Envelopes(1, Deviation(1)); // Сигнал на Покупку Print ("Signal_Buy = ", Signal_Sell); if (Signal_Buy < 0) { Print("Signal_Buy error #",GetLastError()); } //--------------------------------------------------- double Signal_Sell_2 = Envelopes(0, Deviation(2)); Print ("Signal_Sell_2 = ", Signal_Sell); if (Signal_Sell_2 < 0) { Print("Signal_Sell_2 error #",GetLastError()); } double Signal_Buy_2 = Envelopes(1, Deviation(2)); Print ("Signal_Buy_2 = ", Signal_Sell); if (Signal_Buy_2 < 0) { Print("Signal_Buy_2 error #",GetLastError()); } //--------------------------------------------------- } //************************************************************************************************/ double Envelopes(int buff, double _Deviation) { double buf[1]; int handle=iEnvelopes(Symbol(), TimeFrames, Ma_Period, Ma_Shift, Ma_Method, Applied_Price, _Deviation); if(handle<0) { Print("Failed to create handle iEnvelopes, Error: ",GetLastError()); return(WRONG_VALUE); } else { if(CopyBuffer(handle,buff,0,1,buf)<0) { Print("Failed to copy data from the indicator iEnvelopes, Error: ",GetLastError()); return(WRONG_VALUE); } } return(buf[0]); } //************************************************************************************************/ 只是现在我不明白,为什么在每一个刻度 上,第一个计算值都被写在各个地方。 你能告诉我如何修复它吗? Artyom Trishkin 2019.05.08 07:44 #8374 Alexander Layzerevich:根据你的建议,对MT5的代码稍作修改,结果是这样的。 只是现在我不明白为什么在每一个刻度 处都有一个计算值被写入。 //--------------------------------------------------- double Signal_Sell = Envelopes(0, Deviation(1)); // Сигнал на Продажу Print ("Signal_Sell = ", Signal_Sell); if (Signal_Sell < 0) { Print("Signal_Sell error #",GetLastError()); } double Signal_Buy = Envelopes(1, Deviation(1)); // Сигнал на Покупку Print ("Signal_Buy = ", Signal_Sell); if (Signal_Buy < 0) { Print("Signal_Buy error #",GetLastError()); } //--------------------------------------------------- double Signal_Sell_2 = Envelopes(0, Deviation(2)); Print ("Signal_Sell_2 = ", Signal_Sell); if (Signal_Sell_2 < 0) { Print("Signal_Sell_2 error #",GetLastError()); } double Signal_Buy_2 = Envelopes(1, Deviation(2)); Print ("Signal_Buy_2 = ", Signal_Sell); if (Signal_Buy_2 < 0) { Print("Signal_Buy_2 error #",GetLastError()); } //---------------------------------------------------这是很明显的。即使没有被强调。 Alexander Layzerevich 2019.05.08 09:20 #8375 Artyom Trishkin:它立即吸引了人们的目光。即使没有高亮显示。谢谢你。 WinProject 2019.05.08 12:51 #8376 Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий 新手对MQL4的任何问题,对算法和代码的帮助和讨论 WinProject, 2019.05.07 18:38 你能告诉我为什么同样的代码在MT4中可以工作,但在MT5中却不能工作?在MT5中,strNum变量总是=1,但在MT4中,++计数器正常工作,strNum=文件中的行数。 int strNum; void OnStart() { FileNum(); Alert1(); } void FileNum() { int handle=FileOpen("File.csv",FILE_CSV|FILE_READ,';'); strNum=0; while(!FileIsEnding(handle)) { FileReadString(handle); strNum++; if(FileIsEnding(handle)==true) break; } FileClose(handle); } void Alert1() { Alert (strNum); } 我在回答自己的问题,对于那些在MT5中打开或读取文件到数组或结构中时没有循环的人来说,这可能是有用的。在MT5中,与MT4不同的是,在读取.csv文件时,你应该额外设置文件打开标志 FILE_ANSI。也就是说,在MT5中,这一行应该是这样的。int handle=FileOpen("File.csv",FILE_READ|FILE_ANSI|FILE_CSV,";");为什么,我不知道,也许有人知道? Seric29 2019.05.08 18:54 #8377 如果EA日志显示这种格式的通知-uninit reason 3(通知是由于TM被切换),但机器人并没有从图表中删除,那么变量的值和所有已经收到的计算结果是否保留? ukrop1203 2019.05.08 22:50 #8378 我得到 "OrderSend error 130",原因不明,该程序在模拟账户的策略测试器中运行,所以据我所知,不可能有来自经纪商的任何限制,止损水平=30。在测试过程中,我每隔一段时间就会出现这个错误,所有交易的止损都是以ATR的百分比固定的,但是有些订单成功下达,而有些则没有。 Print("!!!long level = ", level, ", stop = ", NormalizeDouble(level - stop, Digits)); if(Bid < level) { tickets[orders] = OrderSend(symbol, OP_BUYSTOP, volume, level, 5, NormalizeDouble(level - stop, Digits), NormalizeDouble(level + take, Digits), NULL, magicNum, TimeLocal() - TimeLocal() % 1800 + 7200, clrBlue); orderLevels[orders] = level; directions[orders] = true; orderIsTheLast[orders] = lastOrder; firstTouchTimes[orders] = firstTouchTime; orders++; } else { tickets[orders] = OrderSend(symbol, OP_BUYLIMIT, volume, level, 5, NormalizeDouble(level - stop, Digits), NormalizeDouble(level + take, Digits), NULL, magicNum, TimeLocal() - TimeLocal() % 1800 + 7200, clrBlue); orderLevels[orders] = level; directions[orders] = true; orderIsTheLast[orders] = lastOrder; firstTouchTimes[orders] = firstTouchTime; orders++; } 有的时候,一个订单被拒绝了几次,然后通过了... Alexandr Sokolov 2019.05.10 00:47 #8379 如何在CodeBase中为不同语言的受众发布相同的代码(例如,如何在市场中填写相应语言的表格)? 我已经在CodeBase中看到了这一点,这里有一个例子 我怎样才能做到这一点呢? Konstantin Lebedev 2019.05.10 06:52 #8380 例如,当你用鼠标将蜡烛图的比例减少到极限时,指标读数会发生变化,但指标代码中的数千个蜡烛图都没有说明蜡烛图尺寸的变化。 1...831832833834835836837838839840841842843844845...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
如何清空指标的高值和低值?例如,如果我设置一个最大值为100,最小值为0,然后我需要指标将所有内容可视化,我如何组织?问题是,我写了一个有几种模式的指标,其中一个使用最大和最小,但在输入参数中切换模式后,最大仍是100,最小也是0。
MQL5
你已经调用并传递了偏差(Kanal)返回的值给Envelopes(........) 函数。
而在Envelopes(........) 函数本身中,你声明了最后一个参数,它将采用这个值
像这样
谢谢你,现在更有意义了。
根据你的建议,对MT5的代码稍作修改,结果是这样的。
只是现在我不明白,为什么在每一个刻度 上,第一个计算值都被写在各个地方。

你能告诉我如何修复它吗?根据你的建议,对MT5的代码稍作修改,结果是这样的。
只是现在我不明白为什么在每一个刻度 处都有一个计算值被写入。
这是很明显的。即使没有被强调。
它立即吸引了人们的目光。即使没有高亮显示。
谢谢你。
新手对MQL4的任何问题,对算法和代码的帮助和讨论
WinProject, 2019.05.07 18:38
你能告诉我为什么同样的代码在MT4中可以工作,但在MT5中却不能工作?在MT5中,strNum变量总是=1,但在MT4中,++计数器正常工作,strNum=文件中的行数。
我在回答自己的问题,对于那些在MT5中打开或读取文件到数组或结构中时没有循环的人来说,这可能是有用的。在MT5中,与MT4不同的是,在读取.csv文件时,你应该额外设置文件打开标志 FILE_ANSI。
也就是说,在MT5中,这一行应该是这样的。
为什么,我不知道,也许有人知道?
我得到 "OrderSend error 130",原因不明,该程序在模拟账户的策略测试器中运行,所以据我所知,不可能有来自经纪商的任何限制,止损水平=30。在测试过程中,我每隔一段时间就会出现这个错误,所有交易的止损都是以ATR的百分比固定的,但是有些订单成功下达,而有些则没有。
有的时候,一个订单被拒绝了几次,然后通过了...
如何在CodeBase中为不同语言的受众发布相同的代码(例如,如何在市场中填写相应语言的表格)?
我已经在CodeBase中看到了这一点,这里有一个例子
我怎样才能做到这一点呢?
例如,当你用鼠标将蜡烛图的比例减少到极限时,指标读数会发生变化,但指标代码中的数千个蜡烛图都没有说明蜡烛图尺寸的变化。