以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=172165) |
-- 作者:xiechenpwl6 -- 发布时间:2019/9/23 16:24:15 -- 套利合约的开仓问题,谢谢解答! 后台代码如下: input:SX(90,1,1000,1),XX(10,1,1000,1),SS(5,1,1000,1);
套利品种1:\'M01\'; 套利品种2:\'M05\'; 账户:\'629795\'; //账号自行定义下 JC:dynainfo2(7,套利品种1)-dynainfo2(7,套利品种2);//最新价差 DEBUGFILE(\'c:\\record.txt\',\'套利空品种1=\'+套利品种1,0); DEBUGFILE(\'c:\\record.txt\',\'套利多品种2=\'+套利品种2,0); DEBUGFILE(\'c:\\record.txt\',\'价差=%.2f\',jc); ////////////////////////////////////////////////////////////////////// //a:STKINDI(\'M00\',\'单位乘数.a\',0,6);//单位乘数引用 a:DYNAINFO2(209 , \'M00\');//单位乘数引用 //监控持仓和资金状况 KC:=TSELLHOLDINGEX(账户,套利品种1,1);//当前持仓量空头 DC:=TBUYHOLDINGEX(账户,套利品种2,1);//当前持仓量多头 当前可用资金:=TACCOUNT(19); ZJ:当前可用资金>dynainfo2(7,套利品种1)*a; DEBUGFILE(\'c:\\record.txt\',\'单位乘数=%.2f\',a); DEBUGFILE(\'c:\\record.txt\',\'空头持仓=%.2f\',kc); DEBUGFILE(\'c:\\record.txt\',\'多头持仓=%.2f\',dc); DEBUGFILE(\'c:\\record.txt\',\'当前可用资金=%.2f\',当前可用资金); DEBUGFILE(\'c:\\record.txt\',\'资金是否够用=%.2f\',ZJ); b:DYNAINFO2(208 , \'M00\'); kctj:JC >SX ; kctjq: KC=0 AND DC=0 and zj=1; DEBUGFILE(\'c:\\record.txt\',\'kctj=%.2f\',kctj); DEBUGFILE(\'c:\\record.txt\',\'kctjq=%.2f\',kctjq); ///////////////////////////////////////////////////////////////////// if JC>SX and KC=0 AND DC=0 and zj=1 then //价差大于上限值时 begin TBUYSHORT(1,SS,MKT ,0,0,账户,套利品种1); TBUY(1,SS,MKT ,0,0,账户,套利品种2); end if JC<XX AND KC=SS AND DC=SS then //价差小于下限值时 begin TsellSHORT(1,SS,MKT ,0,0,账户,套利品种1); Tsell(1,SS,MKT ,0,0,账户,套利品种2); end 输出结果: 2019-09-23 14:59:56.852 套利空品种1=M01 2019-09-23 14:59:56.852 套利多品种2=M05 2019-09-23 14:59:56.852 价差=103.00 2019-09-23 14:59:56.852 单位乘数=10.00 2019-09-23 14:59:56.852 空头持仓=0.00 2019-09-23 14:59:56.852 多头持仓=0.00 2019-09-23 14:59:56.852 当前可用资金=11188641.98 2019-09-23 14:59:56.852 资金是否够用=1.00 2019-09-23 14:59:56.852 kctj=1.00 2019-09-23 14:59:56.852 kctjq=1.00 问题:我是后台监控的,同时监控了豆粕2001和豆粕2005两个品种,在开程序前补充了K线数据,也开好了账户; 1,为什么这个开仓条件都成立的情况下,账户并没有开仓? 2,因为我这规定是双向只开SS=5手,之前出现过连续开两次5手的情况,这种情况是不是因为委托和成交的间隙,再次进行了委托造成的? [此贴子已经被作者于2019/9/23 16:26:06编辑过]
|
-- 作者:FireScript -- 发布时间:2019/9/23 16:40:48 -- 1.连续开2次五手。这个你确定下你监控的是不是2个品种。套利的话,只需要监控一个品种。否则会重复下单。因为数据都是指定品种调用的,监控2个品种会导致重复下单的。 除此之外的确是有可能是因为没来及成交导致的。没来及成交的话,你代码现在的情况是判断不出来的。 2.条件都满足没有开仓这个。你是走完K的的还是固定轮询的呢?是不是可能刚好卡在轮询间隙或者是走完K模式?
[此贴子已经被作者于2019/9/23 16:40:58编辑过]
|
-- 作者:xiechenpwl6 -- 发布时间:2019/9/23 16:56:52 -- 1,我做套利只要监控豆粕2001 或者监控豆粕2005 他们俩中的一个品种就行了是吗? 2,我是采用固定轮训1秒中的。我的条件就m01和m05价差在90以上就做空套利。今天一整天的价差都在100以上的。所以应该可以开采对呢。
|
-- 作者:FireScript -- 发布时间:2019/9/23 17:11:21 -- 1.是的。监控一个品种即可。因为数据都是直接调用过来的,只需要一个品种作为运算的驱动即可。 2.明天我盘中直接测试下。 请告知你的周期设置是多少。
[此贴子已经被作者于2019/9/23 17:11:38编辑过]
|
-- 作者:xiechenpwl6 -- 发布时间:2019/9/23 17:18:57 -- 1,好的谢谢!我明天减少一个看看; 2,因为是套利价差,所以不太在乎周期的设置,我就用的默认的日线周期,这个是不是太大了,会有影响?
|
-- 作者:FireScript -- 发布时间:2019/9/23 17:21:19 -- 日线 今天是不是下过一次单了?如果下过一次的话,后续不会再重复下的。因为一个K 相同的下单代码是不会重复下单的了。 你可以看下监控记录里的情况,即使当时没成交之类的,下单语句也不会重复触发。 |
-- 作者:xiechenpwl6 -- 发布时间:2019/9/23 17:38:41 -- 好的!可能是这个问题,我把周期改小一点,今晚再监控一下,非常感谢! |
-- 作者:xiechenpwl6 -- 发布时间:2019/9/24 15:50:45 -- 版主你好,我今天试验了一下。重复开仓问题是因为监控双品种造成的。目前已经解决,非常感谢; 对于不开仓的问题,我发现是这句判断出现了问题: if JC>SX and KC=0 AND DC=0 and zj=1 then //价差大于上限值时 代码的开始,我把SX参数化,判断条件kctj:JC >SX ;就是无效的(测试时价差JC是90,SX是80); 今天我把SX直接改成数字,就开仓了,代码如下: if JC> 89 and KC=0 AND DC=0 and zj=1 then //价差大于上限值时 begin TBUYSHORT(1,SS,MKT ,0,0,账户,套利品种1); TBUY(1,SS,MKT ,0,0,账户,套利品种2); end 这是为什么呢?不会以后我每次开套利合约,我都要打开代码更改吧?
|
-- 作者:FireScript -- 发布时间:2019/9/24 16:05:05 -- 你的意思是如果SX是参数传递进去的值 就无法判断是吗? |
-- 作者:FireScript -- 发布时间:2019/9/24 16:08:05 -- 是在这里进行的设置的吗?
|