- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于重复开仓(平仓)问题的较完美解决方案
关于重复开仓(平仓)问题的较完美解决方案接触TB没多久,就遇到了这个比较麻烦的问题,而我在MT4平台写EA(自动交易系统)的时候从来没有遇到过这样的问题。经过反复的测试和思考,我觉得这个问题可能是由于国内交易所对委托单的处理方式以及TB相关函数的返回方式造成的。我先讲一下MT4平台委托单:在MT4平台中,有两种委托方式:即时成交与挂单交易,这是两种截然不同的方式。即时方式按市场当时的卖出或买入价下单,如果由于网络延迟等问题造成无法成交,在手动操作的界面会弹出询问是否按新的价格成交的对话框供交易者选择;挂单方式则严格按交易者的下单价格成交,并且需要提供有效期,一旦无法成交则在有效期内一直挂在市场中。在即时成交委托方式下,MT4平台OrderSend函数,其返回值为-1或成交定单的编号,这个返回值是由交易服务器返回的,而非客户端自身返回的。因此,如果返回值0,则在账户持仓中马上就会出现相关定单,而返回值为-1的话,则不会产生持仓。这样就非常容易解决重复开仓的问题。而国内的期货(包括股票)交易所,只有一种委托方式,那就是挂单交易,一旦不能成交则会产生一个委托挂单。而且TB平台的A_SendOrder以及Buy、Sell等函数是针对当前公式应用的帐户、商品发送委托单,发送成功返回True,发送失败返回False。这里的返回值是客户端自身返回的,我们无法根据这个返回值来判断是否成交。因此,我们如果使用以下代码,则非常容易出现重复开平仓的问题。Begin? ? ? ? If ( MarketPosition==0??)? ? ? ? {??? ? ? ? ? ? ? ? //开仓条件检查;? ?? ? ? ? ? ? ? ? //相关开仓指令(A_SendOrder以及Buy、SellShort等);? ? ? ? }??? ? ? ? If ( MarketPosition==1 平多仓条件 ) Sell(0,Price);? ??? ? ? ? If ( MarketPosition==-1 平空仓条件 ) BuyToCover(0,Price);End复制代码这是因为开仓指令并不从服务器取返回值,只要客户端发送成功就返回true值。而这时如果由于网络延迟等原因造成委托价格与当前价格偏离无法成交,或者已成交但是还未传回客户端,都会导致MarketPosition函数返回0值,从而造成重复发单。关于交易助手,我仔细观察了一下,似乎交易助手也是根据MarketPosition函数的返回值来判断是否成交的。在网络延迟的情况下,经常会出现类似于“委托单已成交,无法撤单”的提示。因此,交易助手对因价格偏离而导致的挂单可以成功撤单,但是对由于网络延迟导致的成交信息滞后无法处理。还是会出现重复发单的情况。既然MarketPosition函数无法判断持仓,那么如果使用GolbalVar来解决会怎么样呢?代码如下:Params? ? ? ? Numeric SetPos(0);Begin? ? ? ? If ( GetGlobalVar(0)==InvalidNumric )? ? ? ? SetGlobalVar(0,SetPos);? ? ? ??? ? ? ??? ? ? ? If ( GetGlobalVar(0)==0??)? ? ? ? {??? ? ? ? ? ? ? ? If ( 开多仓条件满足 )? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? A_SendOrder(...);? ? ? ? ? ? ? ? ? ? ? ? SetGlobalVar(0,1);? ? ? ? ? ? ? ? }??? ? ? ? ? ? ? ? If ( 开空仓条件满足 )? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? ? ? A_SendOrder(...);? ? ? ? ? ? ? ? ? ? ? ? SetGlobalVar(0,-1);? ? ? ? ? ? ? ? }? ? ? ? }??? ? ? ? If ( GetGlobalVar(0)==1 平多仓条件满足 )?? ? ? ? {? ? ? ? ? ? ? ? A_SendOrder(...);? ? ? ? ? ? ? ? SetGlobalVar(0,0);? ? ? ? }? ??? ? ? ? If ( GetGlobalVar(0)==-1 平空仓条件满足 )?? ? ? ? {? ? ? ? ? ? ? ? A_SendOrder(...);? ? ? ? ? ? ? ? SetGlobalVar(0,0);? ? ? ? }End复制代码以上代码中的SetPos参数是为了手动调整GlobalVar的初
您可能关注的文档
- 《行风热线》招商方案.doc
- 丁大糖尿病医院糖尿病医院糖尿病基本知识.docx
- 三亚南山港沉船打捞方案.doc
- 万科轻质隔墙施工方案.doc
- 七氟丙烷灭火系统施工方案.docx
- 三元期权微商运行方案.doc
- 【股权期权顾问协议】律师.docx
- 三角形的内切圆说课稿.doc
- 三轴桩施工方案.doc
- 上饶学生高考后美国留学方案.doc
- 小学奥数题库《行程问题》-典型行程-接送问题基本知识-5星题(含详解)全国通用版.docx
- 小学奥数题库《计算》公式类完全平方公式-1星题(含详解)全国通用版.docx
- 小学奥数题库《计算》计算中的相关定律法则-四则运算法则-0星题(含详解)全国通用版.docx
- 河南省2023_2024学年高二物理上学期10月月考试题.doc
- 辽宁省沈阳市2023_2024学年高二物理上学期阶段测试试题含解析.doc
- 辽宁省沈阳市2024届高三物理上学期二模试题.doc
- 江苏省扬州市高邮市2023_2024学年高三物理上学期10月学情调研测试试题扫描版.doc
- 湖南省长沙市2023_2024学年高二物理上学期第一次月考测试题含解析.doc
- 广西钦州市2023_2024学年高一物理上学期10月月考试题含解析.doc
- 广西来宾市2023_2024学年高三物理上学期10月月考试题含解析.doc
文档评论(0)