向各位老师请教:关于iCustom()调用第三方指标的使用细节问题 新评论 Gui Lei Han 2022.12.12 11:34 各位老师好! 我的EA稍微庞大了一点,多处多次使用了 iCustom(NULL, 0, "指标名称", 1000, "参数1", "参数2", "参数3", 0, i) 函数来调用第三方指标,并且是把它放在循环里调用的,每个循环至少有50次以上。 指标的第4个参数“1000”,是载入过往1000个蜡烛的意思。 比如: for(int i=0; i<=1000; i++) { 我需要的数据 = iCustom(NULL, 0, "指标名称", 1000, "参数1", "参数2", "参数3", 0, i); if( 我需要的数据 > 0) { ………… } } 如果我打开超过4个品种窗口,全部都载入EA之后,电脑的CPU和内存很快就被吃光了。按说不应该这样,我记得从哪里看到的材料是如果有大量计算,MQL4会进行缓存还是什么以避免反复对历史蜡烛进行重复运算。 目前来看,我还没有受到这种优待。 所以我想,是不是我的逻辑出现了问题?还是代码顺序出现了问题?就在刚才我突然想到是不是应该把iCustom放在循环之上才是对的,才能避免反复大量计算? 可是当我打开编辑器的时候,却无从下手。 各位老师,我上面的代码逻辑正确吗? 如果正确,要如何才能优化它,让他更节省资源呢? 如果错误,正确的使用方法是什么呢? 谢谢各位大咖 Hung Wen Lin 2022.12.12 12:02 #1 我沒這樣操作過 但是我猜如果單純使用自帶的指標 我猜"應該"也不會有太大問題 主要是看第三方指標的編輯 對硬件的負載有多大 有很多第三方的指標 無效循環過多 光一個指標就可以讓CPU滿載 我建議你要優化你的指標調用頻率 還有第三方指標的代碼 至於該如何優化 也需要知道代碼的結構 才能給出建議 你可以試試使用自帶的指標調用1000次的結果跟使用第三方指標調用1000次的結果來比較對硬件的負載 就可以知道是不是第三方指標的問題 Gui Lei Han 2022.12.13 04:57 #2 Hung Wen Lin #: 我沒這樣操作過 但是我猜如果單純使用自帶的指標 我猜"應該"也不會有太大問題 主要是看第三方指標的編輯 對硬件的負載有多大 有很多第三方的指標 無效循環過多 光一個指標就可以讓CPU滿載 我建議你要優化你的指標調用頻率 還有第三方指標的代碼 至於該如何優化 也需要知道代碼的結構 才能給出建議 你可以試試使用自帶的指標調用1000次的結果跟使用第三方指標調用1000次的結果來比較對硬件的負載 就可以知道是不是第三方指標的問題 谢谢老师。如您所说, 确实是该指标内部逻辑混乱,资源占用太高。今天我找了一个替代指标,完美解决。谢谢您的帮助! Hung Wen Lin 2022.12.13 05:06 #3 Gui Lei Han #: 谢谢老师。如您所说, 确实是该指标内部逻辑混乱,资源占用太高。今天我找了一个替代指标,完美解决。谢谢您的帮助! 不客氣 祝你早日完成屬於自己的交易EA Xueqiang Duan 2023.01.04 04:06 #4 使用数组可能对资源占用能优化一点 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
各位老师好!
我的EA稍微庞大了一点,多处多次使用了 iCustom(NULL, 0, "指标名称", 1000, "参数1", "参数2", "参数3", 0, i) 函数来调用第三方指标,并且是把它放在循环里调用的,每个循环至少有50次以上。
指标的第4个参数“1000”,是载入过往1000个蜡烛的意思。
比如:
如果我打开超过4个品种窗口,全部都载入EA之后,电脑的CPU和内存很快就被吃光了。按说不应该这样,我记得从哪里看到的材料是如果有大量计算,MQL4会进行缓存还是什么以避免反复对历史蜡烛进行重复运算。
目前来看,我还没有受到这种优待。
所以我想,是不是我的逻辑出现了问题?还是代码顺序出现了问题?就在刚才我突然想到是不是应该把iCustom放在循环之上才是对的,才能避免反复大量计算?
可是当我打开编辑器的时候,却无从下手。
各位老师,我上面的代码逻辑正确吗?
如果正确,要如何才能优化它,让他更节省资源呢?
如果错误,正确的使用方法是什么呢?
谢谢各位大咖