错误、漏洞、问题 - 页 1190 1...118311841185118611871188118911901191119211931194119511961197...3184 新评论 Дмитрий 2014.08.19 13:52 #11891 对不起,这是在MT4中 Stanislav Korotky 2014.08.19 13:55 #11892 Luckhuman: 对不起,这是在MT4中。 试着添加#property strict指令。也许一些错误会被写在日志中。 Automated-Trading 2014.08.19 14:02 #11893 Luckhuman: 对不起,这是在MT4中 不幸的是MetaTrader 4不支持CopySpread()函数(在帮助中出现了错误)。 Дмитрий 2014.08.19 14:10 #11894 Automated-Trading: 不幸的是MetaTrader 4不支持CopySpread()函数(在帮助中出现了错误)。 MT4支持多少个指标缓冲区?我只绑定了17个缓冲区 Дмитрий 2014.08.19 14:25 #11895 #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #property strict #property indicator_separate_window #include <Object.mqh> class CDoubleDynArray : public CObject { public: double Buffer[]; CDoubleDynArray(void){} ~CDoubleDynArray(void){} }; CDoubleDynArray *buffers[]; int OnInit() { //--- indicator buffers mapping ArrayResize(buffers,24); int i; for(i=0;i<ArraySize(buffers);i++) buffers[i]=new CDoubleDynArray; IndicatorBuffers(ArraySize(buffers)); SetIndexBuffer(0,buffers[0].Buffer); for(i=1;i<ArraySize(buffers);i++) { if(!SetIndexBuffer(i,buffers[i].Buffer,INDICATOR_CALCULATIONS)) Print(i," ",GetLastError()); else Print(i," ",ArraySize(buffers[i].Buffer)); } //--- return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { IndicatorBuffers(1); for(int i=1;i<ArraySize(buffers);i++) { delete buffers[i]; buffers[i]=NULL; } delete buffers[0]; ArrayResize(buffers,0); } 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[]) { //--- //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ --- 2014.08.19 14:32 #11896 Luckhuman: 你在代码中哪里可以看到只有17个? 你在创造24个,不是吗?让我看看日志上写的是什么。 Automated-Trading 2014.08.19 14:34 #11897 Luckhuman: MT4支持多少个指标缓冲区?我只绑定了17个缓冲区在MT4中,有512个缓冲区可用。缓冲区的数量不能超过512,并且要小于 indicator_buffers 属性中指定的值。 如果你的自定义指标需要额外的缓冲区进行计数,你应该使用这个函数来指定缓冲区的总数。在这个例子中,你需要添加一行。#property indicator_buffers 24 IndicatorBuffers - Документация на MQL4 docs.mql4.com IndicatorBuffers - Документация на MQL4 --- 2014.08.19 14:37 #11898 Automated-Trading:在这个例子中,你需要添加一行。 我们能不能像MT5那样,对缺失的属性地块发出警告? Дмитрий 2014.08.19 14:40 #11899 Automated-Trading:在MT4中,有512个缓冲区可用。在这个例子中,我们需要添加一行。在这一行,我指定了缓冲区的数量IndicatorBuffers(ArraySize(buffers));下面是一个结果的屏幕截图 Дмитрий 2014.08.19 14:46 #11900 Automated-Trading:在MT4中,有512个缓冲区可用。应该在例子中添加一行。#property indicator_buffers 24有了这句话,就可以了。但随后IndicatorBuffers()函数就不起作用了,因为它是代码中使用的数值为24的那一个。请原谅我。我已将代码削减为一个测试实例,从一个模板指标开始。在指标中,有以下一行#property indicator_buffers 1 #property indicator_plots 1 1...118311841185118611871188118911901191119211931194119511961197...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
对不起,这是在MT4中。
对不起,这是在MT4中
不幸的是MetaTrader 4不支持CopySpread()函数(在帮助中出现了错误)。
你在代码中哪里可以看到只有17个? 你在创造24个,不是吗?
让我看看日志上写的是什么。
MT4支持多少个指标缓冲区?我只绑定了17个缓冲区
在MT4中,有512个缓冲区可用。
缓冲区的数量不能超过512,并且要小于 indicator_buffers 属性中指定的值。 如果你的自定义指标需要额外的缓冲区进行计数,你应该使用这个函数来指定缓冲区的总数。
在这个例子中,你需要添加一行。
在这个例子中,你需要添加一行。
在MT4中,有512个缓冲区可用。
在这个例子中,我们需要添加一行。
在这一行,我指定了缓冲区的数量
IndicatorBuffers(ArraySize(buffers));
下面是一个结果的屏幕截图
在MT4中,有512个缓冲区可用。
应该在例子中添加一行。
有了这句话,就可以了。但随后IndicatorBuffers()函数就不起作用了,因为它是代码中使用的数值为24的那一个。
请原谅我。我已将代码削减为一个测试实例,从一个模板指标开始。在指标中,有以下一行