以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 公式模型编写问题提交 (http://222.73.7.161/bbs/list.asp?boardid=4) ---- 多策略的时候,如何避免持仓读取相互影响 (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=181692) |
-- 作者:NH -- 发布时间:2020/8/13 9:06:00 -- 多策略的时候,如何避免持仓读取相互影响 后台交易。多策略对一个账户交易,单策略里 会有加仓。加仓的时候会读取是否已有持仓。 那么多策略的时候 怎么避免其他策略的持仓 被当下的策略读取呢? |
-- 作者:FireScript -- 发布时间:2020/8/13 9:31:12 -- 避免不了。你就一个账号,持仓都是汇总的。直接读取持仓情况下是没办法区分开到底是哪个策略下单的仓位。 |
-- 作者:NH -- 发布时间:2020/8/13 10:11:51 -- 那么那些 有几十组 上百组策略的 交易是如何实现的呢? 准备几百个账户吗? |
-- 作者:FireScript -- 发布时间:2020/8/13 10:43:38 -- 你可以考虑采用全局变量记录的方式去记录,每次开仓和平仓时候维护下这个全局变量。开仓+1,平仓-1. 开仓和平仓之前也需要读取下这个全局变量,来作为开仓和平仓的判断依据。 如果真的要每个策略完全独立开操作,其实除了多账户没有其他办法。全局变量记录的方式,实现起来是很麻烦的。
|
-- 作者:NH -- 发布时间:2020/8/14 11:15:12 -- //固定时间间隔,有信号就下单,信号闪烁情况下造成HOLDING值不稳定,故不能调用图表的HOLDING来控制仓位,必须使用后台程序化交易, 总体思路是用BARPOS和全局变量结合起来,控制是否开仓。 //序列模式运行 //t1_flag 0表示没有仓位,1表示持有多头,-1表示持有空头 //bar控制一根K线只能有一次开平仓 ss:=1; //手数 ma5:ema(c,5); buycond:=h>ma5; sellcond:=l<ma5; //平多 if extgbdata(\'t1_flag\')>0 and sellcond and barpos>extgbdata(\'bar\') then begin tsell(1,ss,mkt); extgbdataset(\'t1_flag\',0); end //平空 if extgbdata(\'t1_flag\')<0 and buycond and barpos>extgbdata(\'bar\') then begin tsellshort(1,ss,mkt); extgbdataset(\'t1_flag\',0); end |
-- 作者:NH -- 发布时间:2020/8/14 11:15:47 -- //固定时间间隔,有信号就下单,信号闪烁情况下造成HOLDING值不稳定,故不能调用图表的HOLDING来控制仓位,必须使用后台程序化交易, 总体思路是用BARPOS和全局变量结合起来,控制是否开仓。 //序列模式运行 //t1_flag 0表示没有仓位,1表示持有多头,-1表示持有空头 //bar控制一根K线只能有一次开平仓 ss:=1; //手数 ma5:ema(c,5); buycond:=h>ma5; sellcond:=l<ma5; //平多 if extgbdata(\'t1_flag\')>0 and sellcond and barpos>extgbdata(\'bar\') then begin tsell(1,ss,mkt); extgbdataset(\'t1_flag\',0); end //平空 if extgbdata(\'t1_flag\')<0 and buycond and barpos>extgbdata(\'bar\') then begin tsellshort(1,ss,mkt); extgbdataset(\'t1_flag\',0); end |
-- 作者:NH -- 发布时间:2020/8/14 12:04:53 -- 是否可以用这个办法限制 开仓次数? |
-- 作者:wenarm -- 发布时间:2020/8/14 12:13:41 -- 你可以考虑用这种方式记录自己开仓手数。但是不能百分比达到控制。其中牵扯的因素很多。包括未成交因素、高速开平触发情景等情况的影响。
|