以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://www.weistock.com/bbs/index.asp) -- 金字塔软件问题提交 (http://www.weistock.com/bbs/list.asp?boardid=2) ---- [求助]百分比开仓记录了手数,但是平仓时数量不正确 (http://www.weistock.com/bbs/dispbbs.asp?boardid=2&id=158670) |
-- 作者:wonggoo -- 发布时间:2017/10/16 14:04:31 -- [求助]百分比开仓记录了手数,但是平仓时数量不正确 同一框架下有两个窗口,分别运行两个策略,交易标的是相同的; 用资金百分比进行了开仓,并且记录了开仓手数,代码如下:LastLots:=GETINIFILE( \'D:\\Weisoft Stock(x64)\\开仓.ini\',FORMULANAME ,\'最近开仓手数\'); Lots:=IF(开仓百分数=0,手数,if(LastLots>0,LastLots,INTPART(INTPART(vAsset/(MULTIPLIER*Close*TACCOUNT(41)))*开仓百分数/100))); ……………… ………… …… if ISLASTBAR then
begin
平多:SELL(平多条件,NUMLOTS,marketR);
平空:SELLSHORT(平空条件 ,NUMLOTS,marketR);
end Lots:=IF(开仓百分数=0,手数,INTPART(INTPART(vAsset/(MULTIPLIER*Close*TACCOUNT(41)))*开仓百分数/100)); if islastbar then begin
开多:BUY(开多条件 ,Lots,MARKETR);
开空:BUYSHORT(开空条件,Lots,MARKETR);
if 开多 then
begin
NumLots:=Abs(holding);
WRITEINIFILE( \'D:\\Weisoft Stock(x64)\\开仓.ini\',FORMULANAME ,\'最近开仓手数\' ,NumLots);
end
end 总持仓6手,其中一个策略触发平仓条件,且记录上一单的开仓数量为4手,因此,平仓应该只平4手(另外的2手是另一个策略开的单),交易日志显示,平仓手数也是4手,但检测到实际持仓为6手,结果发出了平6手的指令。最终的实际结果是6手全部平了。 交易日志内容如下: -------------------------------------------------------------- 09:30:01.862 2017.10.16 09:30:01【图表】框架:Frame 触发下单 SELL 品种 RB00 下单K线 2017.10.16 13:35:00 公式:2.AMA.R.Update 窗格ID:3 代码行:203 2017-10-16 09:30:01.863 【图表】模型下单 4 -----------------------【这里手数为4】 2017-10-16 09:30:01.864 【图表】下单系数调整后 手数:4 ----------------【这里手数也是4】 2017-10-16 09:30:01.865 【图表】实际持仓 6 -----------------------【但这里却调整成了账户实际总的持仓】 2017-10-16 09:30:01.866 【图表】直接下单 2017-10-16 09:30:01.868 2017.10.16 09:30:01【图表】框架:Frame 触发下单 BUYSHORT 品种 RB00 下单K线 2017.10.16 13:35:00 公式:2.R.Update 窗格ID:3 代码行:207 2017-10-16 09:30:01.869 【图表】模型下单 3 2017-10-16 09:30:01.870 【图表】下单系数调整后 手数:3 2017-10-16 09:30:01.872 【图表】直接下单 2017-10-16 09:30:01.875 【图表】RB00 运行完毕 2017-10-16 09:30:01.875 【图表】RB00 运行完毕 2017-10-16 09:30:01.875 【图表】I00 运行完毕 2017-10-16 09:30:01.876 【图表】RB01 运行完毕 2017-10-16 09:30:01.876 【下单】已经调整为 实际持仓为 6 2017-10-16 09:30:01.877 【下单】RB01 价0.000000 量6 买卖1 类型1 开平1 账户30001670 Formula 1 2017-10-16 09:30:01.878 【下单】确认报单已发送 ID=-32820017 RefID = 6720 2017-10-16 09:30:01.879 【下单】RB01 价0.000000 量3 买卖1 类型1 开平0 账户30001670 Formula 1 2017-10-16 09:30:01.880 【下单】确认报单已发送 ID=-32820007 RefID = 6730 2017-10-16 09:30:01.910 【指令】收到回报指令 ID = -32820017 RefID = 6720 2017-10-16 09:30:01.937 【指令】收到回报指令 ID = -32820017 RefID = 6720 2017-10-16 09:30:01.938 【回报】30001670 : rb1801 - 已报单 6 价格:3773 平 卖 2017-10-16 09:30:02.012 【指令】收到回报指令 ID = -32820017 RefID = 6720 2017-10-16 09:30:02.016 【指令】收到成交回报指令 REFID = 6720 vol = 6 2017-10-16 09:30:02.032 【指令】收到回报指令 ID = -32820007 RefID = 6730 2017-10-16 09:30:02.049 【指令】收到回报指令 ID = -32820007 RefID = 6730 2017-10-16 09:30:02.050 【指令】收到回报指令 ID = -32820007 RefID = 6730 2017-10-16 09:30:02.053 【指令】收到成交回报指令 REFID = 6730 vol = 3 2017-10-16 09:30:02.085 【回报】30001670 : rb1801 - 已成交 6 价格:3776 平 卖 2017-10-16 09:30:02.086 【回报】30001670 : rb1801 - 已报单 3 价格:3773 开 卖 2017-10-16 09:30:02.087 【回报】30001670 : rb1801 - 已成交 3 价格:3776 开 卖 2017-10-16 09:30:02.302 【图表】RB00 运行完毕 -------------------------------------------------------------- ![]() ![]() 请教,应该如何修改代码 |
-- 作者:gxx978 -- 发布时间:2017/10/16 15:03:42 -- 可以输出下NUMLOTS的值是多少,如果这个为0,那表示全平,实际交易中会检测下实际账户中的持仓是多少,再全部平仓的。 |
-- 作者:wonggoo -- 发布时间:2017/11/6 21:23:55 -- 谢谢,明白了 |