以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  策略编写求助区  (http://weistock.com/bbs/list.asp?boardid=11)
----  帮忙写个简单的后台套利程序  (http://weistock.com/bbs/dispbbs.asp?boardid=11&id=70011)

--  作者:meteor528528
--  发布时间:2014/9/16 9:50:10
--  帮忙写个简单的后台套利程序
求编写下,一个后台套利交易模型。要求如下:
1、玉米01、05合约套利;
2、9点整差值大于昨天15点收盘差值开空单;
3、9点整差值小于昨天15点收盘差值开多单;
4、开仓后,当天下午14点59分平仓;
5、能有单腿砍仓功能更好。
谢谢大师了

--  作者:pyd
--  发布时间:2014/9/16 13:50:19
--  
软件自带有套利交易范例,您可以学习参考
图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

--  作者:meteor528528
--  发布时间:2014/9/16 14:00:05
--  
个人水平比较低,弄不好哦。那个大师帮下忙。
--  作者:pyd
--  发布时间:2014/9/16 16:22:57
--  

账户:\'1000\';//换成自己的交易账号
品种1:\'c01\';
品种2:\'c05\';

C1:"c01$CLOSE";
C2:"c05$CLOSE";
tt:DYNAINFO(207)>=090000;
A:C1-C2;//开盘差价

c01:CALLSTOCK(\'c01\',vtclose,6,-1);
c05:CALLSTOCK(\'c05\',vtclose,6,-1);
b:c01-c05;//昨收盘差价

if tt and a>b then TBUYSHORT(1,1,MKT ,0,0,账户,品种1 );
if tt and a<b then TBUY(1,1,MKT ,0,0,账户,品种2 );

//单腿砍仓
IF TSELLHOLDINGEX(账户,品种1,0 )=1 AND TBUYHOLDINGEX(账户,品种2,0 )=0 AND TREMAINQTY( 1,账户,品种2)=1 THEN BEGIN
TSELLSHORT(1,1,MKT ,0,0,账户,品种1);
END

IF TBUYHOLDINGEX(账户,品种2,0)=1 AND TSELLHOLDINGEX(账户,品种1,0)=0 AND TREMAINQTY( 1,账户,品种1)=1 THEN BEGIN
TSELL(1,1,MKT ,0,0,账户,品种1 );
END

//14:59平仓
if DYNAINFO(207)>=145900 then tsellshort(1,1,MKT ,0,0,账户,品种1);
if DYNAINFO(207)>=145900 then tsell(1,1,MKT ,0,0,账户,品种2);


--  作者:pyd
--  发布时间:2014/9/17 11:03:55
--  
套利交易要用专业版的后台程序化交易。
今天用上边代码测试了下,一直只开玉米01的仓。还有几点需要你说明的

 

问题1,是取当天开盘价的差值和昨天收盘价的差值比较?
2,当天只开一次仓?

3,你给的条件2,3 条件满足时分别是谁开多单谁开空单?

 

[此贴子已经被作者于2014/9/17 11:13:20编辑过]

--  作者:meteor528528
--  发布时间:2014/9/18 13:00:04
--  

问题1,是取当天开盘价的差值和昨天收盘价的差值比较?

是的
2,当天只开一次仓?

当天只开一次仓

3,你给的条件2,3 条件满足时分别是谁开多单谁开空单?

9点整差值大于昨天15点收盘差值开空单,即01合约空,05合约多;
9点整差值小于昨天15点收盘差值开多单,即01合约多,05合约空;

--  作者:pyd
--  发布时间:2014/9/18 16:36:08
--  

代码供参考

 

账户:\'1000\';//换成自己的交易账号
品种1:\'c01\';
品种2:\'c05\';

C1:CALLSTOCK(\'c01\',vtopen,6,0);
C2:CALLSTOCK(\'c05\',vtopen,6,0);
A:C1-C2;//开盘差价
c01:CALLSTOCK(\'c01\',vtclose,6,-1);
c05:CALLSTOCK(\'c05\',vtclose,6,-1);
b:c01-c05;//昨收盘差价

if a>b then begin
 TBUYSHORT(TSELLHOLDINGEX(账户,品种1,0)=0,1,MKT ,0,0,账户,品种1 );
 tbuy(TBUYHOLDINGEX(账户,品种2,0)=0,1,MKT ,0,0,账户,品种2 );
 end
 
if a<b then begin
 TBUY(TBUYHOLDINGEX(账户,品种1,0)=0,1,MKT ,0,0,账户,品种1 );
 tbuyshort(TSELLHOLDINGEX(账户,品种2,0)=0,1,MKT ,0,0,账户,品种2 );
 end
 
//单腿砍仓
IF TSELLHOLDINGEX(账户,品种1,0 )=1 AND TBUYHOLDINGEX(账户,品种2,0 )=0 AND TREMAINQTY( 1,账户,品种2)=1 THEN BEGIN
TSELLSHORT(1,1,MKT ,0,0,账户,品种1);
END

IF TBUYHOLDINGEX(账户,品种2,0)=1 AND TSELLHOLDINGEX(账户,品种1,0)=0 AND TREMAINQTY( 1,账户,品种1)=1 THEN BEGIN
TSELL(1,1,MKT ,0,0,账户,品种2 );
END

IF TSELLHOLDINGEX(账户,品种2,0)=1 AND TBUYHOLDINGEX(账户,品种1,0)=0 AND TREMAINQTY( 1,账户,品种1)=1 THEN BEGIN
TSELLSHORT(1,1,MKT ,0,0,账户,品种2);
END

IF TBUYHOLDINGEX(账户,品种1,0)=1 AND TSELLHOLDINGEX(账户,品种2,0)=0 AND TREMAINQTY( 1,账户,品种2)=1 THEN BEGIN
TSELL(1,1,MKT ,0,0,账户,品种1);
END

//14:59平仓
if DYNAINFO(207)>=145900 then begin
tsellshort(1,1,MKT ,0,0,账户,品种1);
tsellshort(1,1,MKT ,0,0,账户,品种2);
tsell(1,1,MKT ,0,0,账户,品种1);
tsell(1,1,MKT ,0,0,账户,品种2);
end