//************************************************************************************************/double Envelopes(string symb, ENUM_TIMEFRAMES TF_1, int period, int method, int shift, int price,double Deviation(ENUM_TIMEFRAMES TF_2, int kanal), int buff, int index)
{
double buf[1];
int handle=iEnvelopes(Symbol(), TF_1, period, method, shift, price, Deviation(TF_2, kanal), buff);
if(handle<0)
{
Print("Failed to create handle ATR, Error: ",GetLastError());
return(WRONG_VALUE);
} else
{
if(CopyBuffer(handle,0,index,1,buf)<0)
{
Print("Failed to copy data from the indicator ATR, Error: ",GetLastError());
return(WRONG_VALUE);
}
}
return(buf[0]);
}
//************************************************************************************************/
甚至在第一种情况下,编译器会强调 "必须检查OrderSelect的结果";-)
如果你为第一项改变,如果(!OrderSelect(...))继续;那么选项是相同的。
在第一个案例中,代码在视觉上是线性的,在第二个案例中,它看起来像一个楼梯。我更喜欢第一个,它更容易阅读,而且一般来说,深层逻辑标签的出现{{{{ }}}},暗示着是时候改变一些东西了 :-)
谢谢。用阶梯式写法是否影响代码速度?对我来说,更容易理解交错式写作。
谢谢你。阶梯式记录是否影响代码执行的速度?对我来说,理解阶梯式写作比较容易。
首先影响执行 速度的是算法。而你在代码中如何表示它其实并不重要。
这不是你所想的。
你写代码是为了以后能用它工作。所以你无论如何都要写,不要用现实中没有遇到的问题来困扰你的头脑。
好吧,你没有任何速度问题,你需要用编码的技巧和特殊性来避免。简单地保证,你不知道。
当(这不太可能)它们出现时,那么你就会优化性能。
执行的速度主要受算法的影响。而你如何在代码中表示它,并不那么重要。
这不是你想的那样。
你写代码是为了以后自己能用它工作。所以你无论如何都要写,不要用现实中没有遇到的问题来困扰你的头脑。
好吧,你没有任何速度问题,你需要用编码的技巧和特殊性来避免。只是保证,你不知道。
当(这不太可能发生)你会优化你的代码。
非常感谢您!非常可以理解。
请帮助我解决这个问题:https://www.mql5.com/ru/forum/160683/page833#comment_11585085
我怀疑这对你有帮助,但也就这样了。
- 你从MT5中提取了一些代码,并试图将其 "栓 "在MT4上,这不是MT4中的指标调用方式。
- 你没有正确声明函数头
- MT4没有内置的CopyBuffer()函数
这在一般情况下是行不通的,寻找其他选项来增加一些代码部分--MQL4和MQL5的语法有95%是相似的,但你不能在平台之间肆无忌惮地复制代码部分。
我怀疑这对你有帮助,但也就这样了。
- 你从MT5中提取了一些代码,并试图将其 "栓 "在MT4上,这不是MT4中的指标调用方式。
- 你没有正确声明函数头
- MT4没有内置的CopyBuffer()函数
MQL4和MQL5的语法有95%是相似的,但你不能在平台之间肆意复制代码部分。
对不起,我忘了说明MT5的代码
它只是没有调用 Deviation(int kanal)函数。
我想问的是,如何正确地做到这一点?
执行一对一的例子,来自文章https://www.mql5.com/ru/articles/18
作为一种选择,你已经为64位的dll编译了一个项目,MT4终端是32位的,你需要为32位的.dll配置和编译项目。
我也在那里提问,我在那里尝试了建议的例子,事实上我已经贴出了有实验的图片。嗯,是的,这些版本有一些东西,通常这一切都应该在帮助中,如何连接什么细微差别。有人给了我一些带代码的链接,我打开了这些课,又关闭了它们,在一般的信息嘲弄中,没有你想要的和做的。好吧,对不起,我将在20年的编程经验后回到这个话题。我怎么知道是64的编译,我怎么知道?
我怎么知道该dll是为64版本编译的?
在Visual Studio 中查看项目属性,应该有一个编译dll的平台选项 - MT4需要32位代码。
PS:谷歌找到VS的设置
我怀疑这对你有帮助,但也就这样了。
- 你从MT5中提取了一些代码,并试图将其 "栓 "在MT4上,这不是MT4中的指标调用方式。
- 你没有正确声明函数头
- MT4没有内置的CopyBuffer()函数
MQL4和MQL5的语法有95%是相似的,但你不能在平台之间肆意复制代码部分。
你有以下代码片段吗?
关于交易、自动交易系统和策略测试的论坛。
任何关于MQL4初学者的问题,帮助和讨论算法和代码
Alexander Layzerevich, 2019.05.06 17:21
我试图用 这个函数 在MT5中 接收指标数据。
我收到错误。
请告知如何纠正MT5的 代码