威力外汇

 找回密码
 注册

QQ登录

只需一步,快速开始

开启左侧

[Oanda]程式交易_可以让MT4中的所有部位更加快速结算的方法

[复制链接]
莫等闲 发表于 2023-5-9 16:04:58 | 显示全部楼层 |阅读模式
让MT4中的所有部位更加快速结算的方法说明与外汇自动程式交易编码教学
MT4不能把所有部位同时平仓。
如果想尽快把所有部位都结算的话,使用EA或脚本是一个更快的方法。


使用OnTimer
当市场价格急剧变动时,因为tick的速度太快,OnTick()函数有时会跟不上MT4的变动。
有时也不想浪费时间去等待tick。
使用OnTimer()函数的话,会按照一定规律变动,所以,开始速度会加快。
OnTimer()的动作时间可以在EventSetTimer()函数和EventSetMillisecondTimer()函数中设置。
EventSetTimer()函数可以按秒单位来设置,而EventSetMillisecondTimer()函数可以按毫秒单位来设置。
如果把EventSetMillisecondTimer()函数设置为7以下的话,会因为Windows的计时器事件而产生10ms的延迟。
所以,设置8以获得最快动作。
如果在结算处理中加入if的话速度将会变慢,所以,不会确认订单结算的成功与失败。
等一系列部位结算后,如果还有未平仓部位的话,结算处理将会在8ms以内再次启动。
源码)
  1. int i,R;
  2. input int Slippage=5;
  3. void OnInit(void){EventSetMillisecondTimer(8);}
  4. void OnDeinit(const int reason){EventKillTimer();}
  5. void OnTimer(){
  6. for(i=OrdersTotal()-1;i>=0;i–)
  7. {
  8. R=OrderSelect(i,0);
  9. R=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage);
  10. }
  11. }
复制代码
虽然源码较短,但是为了快速处理,加入了以下3种技术。
  • EventSetMilliseconfTimer(8) 是最快动作
  • OnTimer()函数比OnTick()函数有更大机率提前启动
  • 因为加入if会费时,透过重复动作来避免
部位结算的开始时间与使用OnTick()函数时相比,平均要快30ms左右。


问:EventSetMillisecondTimer()函数设置多少可以最快结算?
答:设置8以获得最快动作。

原文转自:OANDA官网
游客,本帖隐藏的内容需要积分高于 10000000 才可浏览,您当前积分为 0

上一篇:[Oanda]EA程式交易_可以确认全部货币对的RSI工具与MT4的外汇自动程式交易编码教学
下一篇:[Oanda]程式交易_移动平均线HMA的设定方法说明与MT4的外汇自动程式交易编码教学
一个绝顶高手,绝不仅仅是拥有绝世剑法,还要有绝顶聪明的思维。
武功再高 只是十人敌 百人敌,但有了顶尖的思维才可以成为万人敌。
回复

使用道具 举报

关闭

站长推荐上一条 /10 下一条

“能力平平的人有时会取得非凡的成功,因为他们不知道何时该放弃。”——乔治艾伦

小黑屋|威力社区

GMT+8, 2024-5-12 06:17 , Processed in 0.108967 second(s), 37 queries .

Powered by Discuz! X3.4

© 2017-2020 Comsenz Inc.

本网站仅在国家法律允许时提供学习交流。本网站不代理经纪商(broker),不参与经纪商经营活动,不对经纪商提供担保或承担任何责任。

高风险提示:外汇黄金、差价合约等杠杆类交易包含重大亏损风险,阁下可能会于交易时蒙受损失超过存入的资金!!! 因此未必适合每一位投资者。 阁下必须充分理解所涉及的风险并在必要时寻求独立财务顾问建议。

任何在本网站内发表的评论、新闻、研究、分析、价格、其他资料或第三方网站的链接只能视作一般市场资讯。本网站信息不构成或导致(1) 提供或出售任何金融服务或产品的要约邀请;(2)采取任何金融产品相关行动的推荐(明示或暗示);或(3)任何投资建议或市场预测。 市场意见并非按照旨在促进投资研究独立性的法律要求而拟备,因此并非受到发放此等资料前禁止交易的约束。本网站不会为直接或间接使用或 依赖此等资料而可能引致的任何亏损或损失(包括但不限于任何盈利的损失)负责。