以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (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=172108) |
-- 作者:xiechenpwl6 -- 发布时间:2019/9/19 16:58:00 -- 请帮忙指导下后台版套利策略的问题,谢谢了! 代码如下: 套利品种1:\'DP2001\';// 套利品种2:\'DP2005\'; // 账户:\'629795\'; //账号 JC:dynainfo2(7,套利品种1)-dynainfo2(7,套利品种2);//最新价差 DEBUGFILE(\'c:\\record.txt\',\'套利空品种1=%.2f\',套利品种1); DEBUGFILE(\'c:\\record.txt\',\'套利多品种2=%.2f\',套利品种2); DEBUGFILE(\'c:\\record.txt\',\'价差=%.2f\',jc); ////////////////////////////////////////////////////////////////////// a:STKINDI(\'dp00\',\'单位乘数.a\',0,6,0);//单位乘数引用 //监控持仓和资金状况 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\',ZJ); /////////////////////////////////////////////////////////////////////开仓控制 if jc>=100*MINDIFF and KC=0 AND DC=0 and zj=1 then //价差大于上限值100时 begin TBUYSHORT(1,ss,MKT ,0,0,账户,套利品种1); TBUY(1,ss,MKT ,0,0,账户,套利品种2); end if jc<=50*MINDIFF AND KC=SS AND DC=SS then //价差小于下限值50时 begin TsellSHORT(1,ss,MKT ,0,0,账户,套利品种1); Tsell(1,ss,MKT ,0,0,账户,套利品种2); end ///////////////////////////////////////////////////////开仓挂单处理 //如果品种2和品种1都未成交超过4S if (TGLOBALSUBMITEX(3,账户,套利品种1,1)>=4 and TGLOBALSUBMITEX(1,账户,套利品种2,1)>=5) then begin TCANCELEX(1,3,账户,套利品种1 ); TCANCELEX(1,1,账户,套利品种2 ); end //如果品种2的挂单时间超过4s,并且品种1成交了 if (TGLOBALSUBMITEX(3,账户,套利品种1,1)>=4 and TGLOBALSUBMITEX(1,账户,套利品种2,0)=0) then begin TCANCELEX(1,3,账户,套利品种1); TBUYSHORT(1,TREMAINQTY(3,账户,套利品种1),LMT,DYNAINFO2( 7,套利品种1)-3*MINDIFF,0,账户,套利品种1); end if (TGLOBALSUBMITEX(1,账户,套利品种2,1)>=4 and TGLOBALSUBMITEX(3,账户,套利品种1,0)=0) then begin TCANCELEX(1,1,账户,套利品种2); TBUY(1,TREMAINQTY(1,账户,套利品种2),LMT, DYNAINFO2( 7,套利品种2)+3*MINDIFF,0,账户,套利品种2); end ///////////////////////////////////////////////////////平仓挂单处理 //如果品种2和品种1都未成交超过4S if (TGLOBALSUBMITEX(4,账户,套利品种1,1)>=4 and TGLOBALSUBMITEX(2,账户,套利品种2,1)>=4) then begin TCANCELEX(1,4,账户,套利品种1 ); TCANCELEX(1,2,账户,套利品种2 ); end //如果品种2的挂单时间超过4s,并且品种1成交了 if (TGLOBALSUBMITEX(4,账户,套利品种1,1)>=4 and TGLOBALSUBMITEX(2,账户,套利品种2,0)=0) then begin TCANCELEX(1,4,账户,套利品种1); Tsellshort(1,TREMAINQTY(4,账户,套利品种1),LMT,DYNAINFO2( 7,套利品种1)+3*MINDIFF,0,账户,套利品种1); end if (TGLOBALSUBMITEX(2,账户,套利品种2,1)>=4 and TGLOBALSUBMITEX(4,账户,套利品种1,0)=0) then begin TCANCELEX(1,2,账户,套利品种2); Tsell(1,TREMAINQTY(2,账户,套利品种2),LMT, DYNAINFO2( 7,套利品种2)-3*MINDIFF,0,账户,套利品种2); end 这是后台输出的结果: 2019-09-18 22:52:37.493 套利空品种1=0.00 2019-09-18 22:52:37.493 套利多品种2=1.00 2019-09-18 22:52:37.493 价差=0.00 2019-09-18 22:52:37.493 单位乘数=-1.#R 2019-09-18 22:52:37.493 空头持仓=0.00 2019-09-18 22:52:37.493 多头持仓=0.00 2019-09-18 22:52:37.493 资金是否够用=0.00 2019-09-18 22:52:37.493 套利空品种1=0.00 2019-09-18 22:52:37.493 套利多品种2=1.00 2019-09-18 22:52:37.493 价差=0.00 2019-09-18 22:52:37.493 单位乘数=-1.#R 2019-09-18 22:52:37.493 空头持仓=0.00 2019-09-18 22:52:37.493 多头持仓=0.00 2019-09-18 22:52:37.493 资金是否够用=0.00 请问:1,我是同时监控的豆粕2001和豆粕2005两个品种,为什么输出的值是0和1,价差是0? 2,模拟仓的持仓情况不能监控到吗?(准备现在模拟,后续上实盘用)? 3,麻烦帮忙解决一下,万分感谢! |
-- 作者:FireScript -- 发布时间:2019/9/19 17:13:57 -- 1.输出方式有误: 字符串直接拼接下即可,数值才需要按照范例里面的操作。 DEBUGFILE(\'c:\\record.txt\',\'套利空品种1=\'+套利品种1,0); DEBUGFILE(\'c:\\record.txt\',\'套利多品种2=\'+套利品种2,0); DEBUGFILE(\'c:\\record.txt\',\'价差=%.2f\',jc); 2.品种代码错了。 豆粕是:M01 MO5 3.模拟账号相关的也能监控到的,这个不区分实盘还是模拟的平。你这个感觉像是账号断开了? |
-- 作者:xiechenpwl6 -- 发布时间:2019/9/19 17:33:41 -- 好的 我今晚试试,万分感谢! |