--
考虑基差风险
myaccount:=\'623450\';手数:=1;MINDIFF1:=10;
//全合约:=\'CU06\',\'CU07\',\'CU08\',\'CU09\',\'CU10\',\'CU11\',\'CU12\',\'CU01\',\'CU02\',\'CU03\',\'CU04\';
//非主力合约:=\'CU01\',\'CU02\',\'CU03\',\'CU04\',\'CU05\',\'CU06\',\'CU08\',\'CU09\',\'CU10\',\'CU11\',\'CU12\';
//合约01:=\'CU01\';合约02:=\'CU02\';合约03:=\'CU03\';合约04:=\'CU04\';合约05:=\'CU05\';合约06:=\'CU06\';
//合约07:=\'CU07\';合约08:=\'CU08\';合约09:=\'CU09\';合约10:=\'CU10\';合约11:=\'CU11\';合约12:=\'CU12\';
//合约06:=\'CU11\';合约08:=\'CU12\';合约09:=\'CU01\';
主力合约:=\'CU07\';
多头均价主力合约:=TAVGENTERPRICEEX2(myaccount ,主力合约 ,0);空头均价主力合约:=TAVGENTERPRICEEX2(myaccount ,主力合约 ,1);
买一价主力合约:=DYNAINFO2( 20,主力合约);卖一价主力合约:=DYNAINFO2( 21,主力合约);盘口差价主力合约:=卖一价主力合约-买一价主力合约;
//合约06
合约06:=\'CU06\';input:基差合约06(-190,-250,-150,10);
多头均价合约06:=TAVGENTERPRICEEX2(myaccount ,合约06 ,0);空头均价合约06:=TAVGENTERPRICEEX2(myaccount ,合约06 ,1);
买一价合约06:=DYNAINFO2( 20,合约06);卖一价合约06:=DYNAINFO2( 21,合约06);盘口差价合约06:=卖一价合约06-买一价合约06;
多持合约06:=tbuyholdingex (myaccount,合约06,2);空持合约06:=tsellholdingex(myaccount,合约06,2) ;持合约06:=多持合约06+空持合约06;//绝对持仓
//开仓条件//基差有一跳利润//盘口有一跳利润
if 持合约06=0 then begin
买开仓基差差值合约06:买一价合约06-买一价主力合约-基差合约06,NODRAW;卖开仓基差差值合约06:卖一价合约06-卖一价主力合约-基差合约06,NODRAW;
DEBUGFILE(\'C:\\TEST.TXT\',\'买开仓基差差值合约06小于10 %.0f\', 买开仓基差差值合约06);DEBUGFILE(\'C:\\TEST.TXT\',\'卖开仓基差差值合约06大于10 %.0f\', 卖开仓基差差值合约06);
买开仓条件合约06:=买开仓基差差值合约06<MINDIFF1 and 盘口差价合约06>MINDIFF1;卖开仓条件合约06:=卖开仓基差差值合约06>MINDIFF1 and 盘口差价合约06>MINDIFF1;
tcancelex(买开仓条件合约06=0 and tisremainex(1,myaccount,合约06)>0 ,1,myaccount,合约06); //买一卖一变动后,不满足条件就撤单
tcancelex(卖开仓条件合约06=0 and tisremainex(3,myaccount,合约06)>0 ,3,myaccount,合约06);
//开仓//无仓和无挂单时买1价开多//无仓和无挂单时卖1价开空//盘口差价大于1
tbuy (买开仓条件合约06 and tisremainex(1,myaccount,合约06)=0,手数,lmt,买一价合约06,0,myaccount,合约06);
tbuyshort(卖开仓条件合约06 and tisremainex(3,myaccount,合约06)=0,手数,lmt,卖一价合约06,0,myaccount,合约06);
end
//空头持仓撤开多单//多头持仓撤开空单
tcancelex(空持合约06>0,1,myaccount,合约06);tcancelex(多持合约06>0,3,myaccount,合约06);
//平仓//平仓条件//基差有一跳利润//盘口有一跳利润
if 多持合约06>0 then begin
多头基差均价合约06:=多头均价合约06-空头均价主力合约;//实际持仓基差价格
平多仓基差差值合约06:卖一价合约06-卖一价主力合约-多头基差均价合约06,NODRAW;DEBUGFILE(\'C:\\TEST.TXT\',\'平多仓基差差值合约06大于10 %.0f\', 平多仓基差差值合约06);
平多仓条件合约06:=平多仓基差差值合约06>MINDIFF1;//平仓//有多仓和无挂平多单时卖1价平多//有空仓和无挂平空单时买1价平空
tcancelex(tisremainex(2,myaccount,合约06)>0 and 平多仓条件合约06=0,2,myaccount,合约06);//买一卖一变动后,不满足条件就撤单
tsell(平多仓条件合约06 and tisremainex(2,myaccount,合约06)=0,多持合约06,lmt,卖一价合约06,0,myaccount,合约06);
end
if 空持合约06>0 then begin
空头基差均价合约06:=空头均价合约06-多头均价主力合约;
平空仓基差差值合约06:买一价合约06-买一价主力合约-空头基差均价合约06,NODRAW;DEBUGFILE(\'C:\\TEST.TXT\',\'平空仓基差差值合约06大于10 %.0f\', 平空仓基差差值合约06);
平空仓条件合约06:=平空仓基差差值合约06>MINDIFF1;
tcancelex(tisremainex(4,myaccount,合约06)>0 and 平空仓条件合约06=0,4,myaccount,合约06);
tsellshort(平空仓条件合约06 and tisremainex(4,myaccount,合约06)=0,空持合约06,lmt,买一价合约06,0,myaccount,合约06);
end
//合约08
合约08:=\'CU08\';input:基差合约08(180,150,200,10);
多头均价合约08:=TAVGENTERPRICEEX2(myaccount ,合约08 ,0);空头均价合约08:=TAVGENTERPRICEEX2(myaccount ,合约08 ,1);
买一价合约08:=DYNAINFO2( 20,合约08);卖一价合约08:=DYNAINFO2( 21,合约08);盘口差价合约08:=卖一价合约08-买一价合约08;
多持合约08:=tbuyholdingex (myaccount,合约08,2);空持合约08:=tsellholdingex(myaccount,合约08,2) ;持合约08:=多持合约08+空持合约08;//绝对持仓
//开仓条件//基差有一跳利润//盘口有一跳利润
if 持合约08=0 then begin
买开仓基差差值合约08:买一价合约08-买一价主力合约-基差合约08,NODRAW;卖开仓基差差值合约08:卖一价合约08-卖一价主力合约-基差合约08,NODRAW;
DEBUGFILE(\'C:\\TEST.TXT\',\'买开仓基差差值合约08小于10 %.0f\', 买开仓基差差值合约08);DEBUGFILE(\'C:\\TEST.TXT\',\'卖开仓基差差值合约08大于10 %.0f\', 卖开仓基差差值合约08);
买开仓条件合约08:=买开仓基差差值合约08<MINDIFF1 and 盘口差价合约08>MINDIFF1;卖开仓条件合约08:=卖开仓基差差值合约08>MINDIFF1 and 盘口差价合约08>MINDIFF1;
tcancelex(买开仓条件合约08=0 and tisremainex(1,myaccount,合约08)>0 ,1,myaccount,合约08); //买一卖一变动后,不满足条件就撤单
tcancelex(卖开仓条件合约08=0 and tisremainex(3,myaccount,合约08)>0 ,3,myaccount,合约08);
//开仓//无仓和无挂单时买1价开多//无仓和无挂单时卖1价开空//盘口差价大于1
tbuy (买开仓条件合约08 and tisremainex(1,myaccount,合约08)=0,手数,lmt,买一价合约08,0,myaccount,合约08);
tbuyshort(卖开仓条件合约08 and tisremainex(3,myaccount,合约08)=0,手数,lmt,卖一价合约08,0,myaccount,合约08);
end
//空头持仓撤开多单//多头持仓撤开空单
tcancelex(空持合约08>0,1,myaccount,合约08);tcancelex(多持合约08>0,3,myaccount,合约08);
//平仓//平仓条件//基差有一跳利润//盘口有一跳利润
if 多持合约08>0 then begin
多头基差均价合约08:=多头均价合约08-空头均价主力合约;//实际持仓基差价格
平多仓基差差值合约08:卖一价合约08-卖一价主力合约-多头基差均价合约08,NODRAW;DEBUGFILE(\'C:\\TEST.TXT\',\'平多仓基差差值合约08大于10 %.0f\', 平多仓基差差值合约08);
平多仓条件合约08:=平多仓基差差值合约08>MINDIFF1;//平仓//有多仓和无挂平多单时卖1价平多//有空仓和无挂平空单时买1价平空
tcancelex(tisremainex(2,myaccount,合约08)>0 and 平多仓条件合约08=0,2,myaccount,合约08);//买一卖一变动后,不满足条件就撤单
tsell(平多仓条件合约08 and tisremainex(2,myaccount,合约08)=0,多持合约08,lmt,卖一价合约08,0,myaccount,合约08);
end
if 空持合约08>0 then begin
空头基差均价合约08:=空头均价合约08-多头均价主力合约;
平空仓基差差值合约08:买一价合约08-买一价主力合约-空头基差均价合约08,NODRAW;DEBUGFILE(\'C:\\TEST.TXT\',\'平空仓基差差值合约08大于10 %.0f\', 平空仓基差差值合约08);
平空仓条件合约08:=平空仓基差差值合约08>MINDIFF1;
tcancelex(tisremainex(4,myaccount,合约08)>0 and 平空仓条件合约08=0,4,myaccount,合约08);
tsellshort(平空仓条件合约08 and tisremainex(4,myaccount,合约08)=0,空持合约08,lmt,买一价合约08,0,myaccount,合约08);
end
//合约09
合约09:=\'CU09\';input:基差合约09(350,300,400,10);
多头均价合约09:=TAVGENTERPRICEEX2(myaccount ,合约09 ,0);空头均价合约09:=TAVGENTERPRICEEX2(myaccount ,合约09 ,1);
买一价合约09:=DYNAINFO2( 20,合约09);卖一价合约09:=DYNAINFO2( 21,合约09);盘口差价合约09:=卖一价合约09-买一价合约09;
多持合约09:=tbuyholdingex (myaccount,合约09,2);空持合约09:=tsellholdingex(myaccount,合约09,2) ;持合约09:=多持合约09+空持合约09;//绝对持仓
//开仓条件//基差有一跳利润//盘口有一跳利润
if 持合约09=0 then begin
买开仓基差差值合约09:买一价合约09-买一价主力合约-基差合约09,NODRAW;卖开仓基差差值合约09:卖一价合约09-卖一价主力合约-基差合约09,NODRAW;
DEBUGFILE(\'C:\\TEST.TXT\',\'买开仓基差差值合约09小于10 %.0f\', 买开仓基差差值合约09);DEBUGFILE(\'C:\\TEST.TXT\',\'卖开仓基差差值合约09大于10 %.0f\', 卖开仓基差差值合约09);
买开仓条件合约09:=买开仓基差差值合约09<MINDIFF1 and 盘口差价合约09>MINDIFF1;卖开仓条件合约09:=卖开仓基差差值合约09>MINDIFF1 and 盘口差价合约09>MINDIFF1;
tcancelex(买开仓条件合约09=0 and tisremainex(1,myaccount,合约09)>0 ,1,myaccount,合约09); //买一卖一变动后,不满足条件就撤单
tcancelex(卖开仓条件合约09=0 and tisremainex(3,myaccount,合约09)>0 ,3,myaccount,合约09);
//开仓//无仓和无挂单时买1价开多//无仓和无挂单时卖1价开空//盘口差价大于1
tbuy (买开仓条件合约09 and tisremainex(1,myaccount,合约09)=0,手数,lmt,买一价合约09,0,myaccount,合约09);
tbuyshort(卖开仓条件合约09 and tisremainex(3,myaccount,合约09)=0,手数,lmt,卖一价合约09,0,myaccount,合约09);
end
//空头持仓撤开多单//多头持仓撤开空单
tcancelex(空持合约09>0,1,myaccount,合约09);tcancelex(多持合约09>0,3,myaccount,合约09);
//平仓//平仓条件//基差有一跳利润//盘口有一跳利润
if 多持合约09>0 then begin
多头基差均价合约09:=多头均价合约09-空头均价主力合约;//实际持仓基差价格
平多仓基差差值合约09:卖一价合约09-卖一价主力合约-多头基差均价合约09,NODRAW;DEBUGFILE(\'C:\\TEST.TXT\',\'平多仓基差差值合约09大于10 %.0f\', 平多仓基差差值合约09);
平多仓条件合约09:=平多仓基差差值合约09>MINDIFF1;//平仓//有多仓和无挂平多单时卖1价平多//有空仓和无挂平空单时买1价平空
tcancelex(tisremainex(2,myaccount,合约09)>0 and 平多仓条件合约09=0,2,myaccount,合约09);//买一卖一变动后,不满足条件就撤单
tsell(平多仓条件合约09 and tisremainex(2,myaccount,合约09)=0,多持合约09,lmt,卖一价合约09,0,myaccount,合约09);
end
if 空持合约09>0 then begin
空头基差均价合约09:=空头均价合约09-多头均价主力合约;
平空仓基差差值合约09:买一价合约09-买一价主力合约-空头基差均价合约09,NODRAW;DEBUGFILE(\'C:\\TEST.TXT\',\'平空仓基差差值合约09大于10 %.0f\', 平空仓基差差值合约09);
平空仓条件合约09:=平多仓基差差值合约09>MINDIFF1;
tcancelex(tisremainex(4,myaccount,合约09)>0 and 平空仓条件合约09=0,4,myaccount,合约09);
tsellshort(平空仓条件合约09 and tisremainex(4,myaccount,合约09)=0,空持合约09,lmt,买一价合约09,0,myaccount,合约09);
end
//合约10
合约10:=\'CU10\';input:基差合约10(530,400,600,10);
多头均价合约10:=TAVGENTERPRICEEX2(myaccount ,合约10 ,0);空头均价合约10:=TAVGENTERPRICEEX2(myaccount ,合约10 ,1);
买一价合约10:=DYNAINFO2( 20,合约10);卖一价合约10:=DYNAINFO2( 21,合约10);盘口差价合约10:=卖一价合约10-买一价合约10;
多持合约10:=tbuyholdingex (myaccount,合约10,2);空持合约10:=tsellholdingex(myaccount,合约10,2) ;持合约10:=多持合约10+空持合约10;//绝对持仓
//开仓条件//基差有一跳利润//盘口有一跳利润
if 持合约10=0 then begin
买开仓基差差值合约10:买一价合约10-买一价主力合约-基差合约10,NODRAW;卖开仓基差差值合约10:卖一价合约10-卖一价主力合约-基差合约10,NODRAW;
DEBUGFILE(\'C:\\TEST.TXT\',\'买开仓基差差值合约10小于10 %.0f\', 买开仓基差差值合约10);DEBUGFILE(\'C:\\TEST.TXT\',\'卖开仓基差差值合约10大于10 %.0f\', 卖开仓基差差值合约10);
买开仓条件合约10:=买开仓基差差值合约10<MINDIFF1 and 盘口差价合约10>MINDIFF1;卖开仓条件合约10:=卖开仓基差差值合约10>MINDIFF1 and 盘口差价合约10>MINDIFF1;
tcancelex(买开仓条件合约10=0 and tisremainex(1,myaccount,合约10)>0 ,1,myaccount,合约10); //买一卖一变动后,不满足条件就撤单
tcancelex(卖开仓条件合约10=0 and tisremainex(3,myaccount,合约10)>0 ,3,myaccount,合约10);
//开仓//无仓和无挂单时买1价开多//无仓和无挂单时卖1价开空//盘口差价大于1
tbuy (买开仓条件合约10 and tisremainex(1,myaccount,合约10)=0,手数,lmt,买一价合约10,0,myaccount,合约10);
tbuyshort(卖开仓条件合约10 and tisremainex(3,myaccount,合约10)=0,手数,lmt,卖一价合约10,0,myaccount,合约10);
end
//空头持仓撤开多单//多头持仓撤开空单
tcancelex(空持合约10>0,1,myaccount,合约10);tcancelex(多持合约10>0,3,myaccount,合约10);
//平仓//平仓条件//基差有一跳利润//盘口有一跳利润
if 多持合约10>0 then begin
多头基差均价合约10:=多头均价合约10-空头均价主力合约;//实际持仓基差价格
平多仓基差差值合约10:卖一价合约10-卖一价主力合约-多头基差均价合约10,NODRAW;DEBUGFILE(\'C:\\TEST.TXT\',\'平多仓基差差值合约10大于10 %.0f\', 平多仓基差差值合约10);
平多仓条件合约10:=平多仓基差差值合约10>MINDIFF1;//平仓//有多仓和无挂平多单时卖1价平多//有空仓和无挂平空单时买1价平空
tcancelex(tisremainex(2,myaccount,合约10)>0 and 平多仓条件合约10=0,2,myaccount,合约10);//买一卖一变动后,不满足条件就撤单
tsell(平多仓条件合约10 and tisremainex(2,myaccount,合约10)=0,多持合约10,lmt,卖一价合约10,0,myaccount,合约10);
end
if 空持合约10>0 then begin
空头基差均价合约10:=空头均价合约10-多头均价主力合约;
平空仓基差差值合约10:买一价合约10-买一价主力合约-空头基差均价合约10,NODRAW;DEBUGFILE(\'C:\\TEST.TXT\',\'平空仓基差差值合约10大于10 %.0f\', 平空仓基差差值合约10);
平空仓条件合约10:=平多仓基差差值合约10>MINDIFF1;
tcancelex(tisremainex(4,myaccount,合约10)>0 and 平空仓条件合约10=0,4,myaccount,合约10);
tsellshort(平空仓条件合约10 and tisremainex(4,myaccount,合约10)=0,空持合约10,lmt,买一价合约10,0,myaccount,合约10);
end
//主力合约//主力合约填补多空缺口//对手价开平仓
//有持仓变动就改变主力持仓,
多持非主力合约:=多持合约06+多持合约08+多持合约09+多持合约10;空持非主力合约:=空持合约06+空持合约08+空持合约09+空持合约10;//
非主仓差:=多持非主力合约-空持非主力合约;
多持主力合约:=tbuyholdingex (myaccount,主力合约,2);空持主力合约:=tsellholdingex (myaccount,主力合约,2);
主仓差:=多持主力合约-空持主力合约;平衡仓差:=主仓差+非主仓差;
if 平衡仓差<0 then begin
tcancelex( tisremainex(1,myaccount,主力合约)>0 ,1,myaccount,主力合约);tcancelex( tisremainex(4,myaccount,主力合约)>0 ,4,myaccount,主力合约);
tbuy(空持主力合约=0 and tisremainex(1,myaccount,主力合约)=0,1,lmt,卖一价主力合约,0,myaccount,主力合约);//卖1价开多
tsellshort(空持主力合约>0 and tisremainex(4,myaccount,主力合约)=0,1,lmt,卖一价主力合约,0,myaccount,主力合约);//卖1价平空
end
if 平衡仓差>0 then begin
tcancelex( tisremainex(3,myaccount,主力合约)>0 ,3,myaccount,主力合约);tcancelex( tisremainex(2,myaccount,主力合约)>0 ,2,myaccount,主力合约);
tbuyshort(多持主力合约=0 and tisremainex(3,myaccount,主力合约)=0,1,lmt,买一价主力合约,0,myaccount,主力合约);//买1价开空
tsell(多持主力合约>0 and tisremainex(2,myaccount,主力合约)=0,1,lmt,买一价主力合约,0,myaccount,主力合约);//买1价平多
end