以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请帮忙指导下后台版套利策略的问题,谢谢了!  (http://weistock.com/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


图片点击可在新窗口打开查看此主题相关图片如下:temp.png
图片点击可在新窗口打开查看


3.模拟账号相关的也能监控到的,这个不区分实盘还是模拟的平。你这个感觉像是账号断开了?



--  作者:xiechenpwl6
--  发布时间:2019/9/19 17:33:41
--  
好的 我今晚试试,万分感谢!