打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
TB编程常见错误(四) 交易限制

交易限制 

 

 

    这里继续给大家讲解一下重复下单的问题。上一篇主要介绍了TB的下单设置,但实际中,更严重的错误可能是自身代码的问题。处理交易的模块要注意以下两点:

 

(一)交易条件

    交易条件重合可能是开平仓条件重合会导致开平仓刷单,也可能是多空方向开单条件重合导致对冲。前者会损失大量的手续费,后者会错过开仓的时机。这里提供一个常见的反面例子,请大家引以为鉴,切勿模仿:

 

    如果上一根Bar最高价大于布林上轨则开多单

    如果上一根Bar最低价小于布林下轨则平多单(或者改为开空单)

 

 

    虽然这里规避了信号闪现的问题,但细心一点就会发现,这两个交易相反的条件可能会同时满足。例如昨天的螺纹钢1401的行情,5分钟K线最后第二根,就同时满足了最高价大于上轨和最低价小于下轨。这样就会既开多单又平多单,不停交易,直到这根Bar结束。

    或许你会认为符合某某重叠条件是一种极端行情,发生概率很小,甚至地球爆炸了的可能性都比这极端行情出现的概率高。但是,只要存在发生的可能性,这市场就是会用一切办法来证明你是错的,你肯定会遇到极端行情的那一天。我们编写程序或设计策略的时候要把这可能性给扼杀掉。

    解决这个问题的办法是:判断条件互斥。例如上面的反面例子可以直接改成互斥条件:

    如果上一根Bar收盘价大于布林上轨则开多单;

    如果上一根Bar收盘价小于布林下轨则平多单(或者改为开空单)。

   

    也可以增加一对互斥条件:

    如果上一根Bar最高价大于布林上轨 并且 阳线 则开多单;

    如果上一根Bar最低价小于布林下轨 并且 阴线 则平多单(或者改为开空单)。

 

(二)交易指令

    首先给大家讲解一下程序交易的简易流程:

    1、委托下单;

    2、委托信息反馈:失败则返回第1步,成功则继续

    3、成交信息反馈:成功则交易结束,失败则继续

    4、撤销委托

    5、撤销信息反馈:成功则返回第1步,失败则返回第4步

    注意:成交失败时,一定要撤单之后才重新下单。如果为了提高交易速度,成交信息反馈成交失败时,没有等到撤单成功就马上再次下达交易指令,虽然这样可以节约很多交易时间,但没有及时撤单的委托还有成交的机会。TB开拓者的交易助手可以进行详细的设置。文华财经的下单组件已经有现成的功能,里面的代码你也可以学习。外汇的MT4JForex则要自己编写。
   

    目前TB的交易助手可以帮助我们处理好第25步,我们要做的只是委托下单的控制。从易到难,我提供四种办法限制发送交易指令,由于这系列文章是入门级,所以后面三种高阶一点的处理我只是介绍一下。

 

 

    简易:交易之前,用MarketPosition函数来确认当前K图显示的仓位。如果是空仓,函数会返回0,如果是多头则返回正数,空头返回负数。这个函数简单易用很适合初学者,但由于这是基于图表显示的仓位,所以潜在的问题会比较多。例如上图,黄色的代表多单,紫色代表空单,如果什么都没有,就代表空仓。MarketPosition不会读取账户的信息,只会依据图表返回结果。因此,遇上信号闪现的问题就可能会重复下单。 

    一般:使用A函数的A_BuyPosition和A_SellPosition,这两个函数直接返回账户持仓信息而不是图表信息,所以更能准确反映交易状况。但遗憾的是,A函数都无法用于测试,只能用在实盘或模拟盘上。

    较好:流程的第1步到第2步隐含一个BUG,若系统在委托信息反馈之前再发送委托,就会重复委托。这可以用全局变量SetGlobalVar和GetGlobalVar进行限制,保证每次信号只发一个委托。但这全局变量只写进内存,程序重启后会无效。

    高阶:替代全局变量函数,使用SetTBProfileString和GetTBProfileString,直接记录和读取文本,即便程序重启,数据仍会保留。 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
交易开拓者TB夜盘编程技术集
TB交易开拓者模型公式编写策略常见问题
TB与文华 比较
如何用 JavaScript 语言实现期货程序化交易
论隔夜委托的重要性!使用条件单,把握更多交易机会
《程序化交易实战》连载7:策略编写陷阱
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服