-- 作者:wang550099
-- 发布时间:2014/1/4 20:45:46
-- [原创]轮询交易,信号反复,导致多次开平。我参考了个程序,看看能否行?
WARNING_DISABLE:4; ss:=1; //手数 extgbdataset(\'t1_position\',0); //0表示没有仓位,1表示持有多头, -1表示持有空头 extgbdataset(\'t1_holding\',0); //0表示没有仓位,>0表示持有多头, <0表示持有空头 extgbdataset(\'t1_enterbarpos\',0);//记录其开仓的K线
maa:ema(c,10); bpk:=cross(c,maa); spk:=cross(maa ,c); //非最后一根K线退出 if not(islastbar) or workmode<>1 then exit;
//如果当是最后一根k线,执行 IF islastbar and time<151000 then begin
// 如果最后一根k线发生过开仓信号,则那一根k线不再交易 if extgbdata(\'t1_enterbarpos\') = barpos then begin goto continueline ; end //没有持仓状态 if extgbdata(\'t1_position\')=0 and extgbdata(\'t1_holding\')=0 then begin if bpk then begin buy(1,ss,c); extgbdataset(\'t1_position\',1); extgbdataset(\'t1_holding\',ss); extgbdataset(\'t1_enterbarpos\',barpos); goto continueline ; end
if spk then begin buyshort(1,ss,c); extgbdataset(\'t1_position\',-1);//程序化交易 www.cxh99.com extgbdataset(\'t1_holding\',-ss); extgbdataset(\'t1_enterbarpos\',barpos); goto continueline ; end end//没有持仓状态 //持有仓位状态 //持有空头 if bpk and extgbdata(\'t1_position\')=-1 and extgbdata(\'t1_holding\')<0 then begin
sellshort(1,ss,c); buy(1,ss,c); extgbdataset(\'t1_position\',1); extgbdataset(\'t1_holding\',ss); extgbdataset(\'t1_enterbarpos\',barpos); goto continueline ; end //持有多头 if spk and extgbdata(\'t1_position\')=1 and extgbdata(\'t1_holding\')>0 then begin
sell(1,ss,c); buyshort(1,ss,c); extgbdataset(\'t1_position\',-1); extgbdataset(\'t1_holding\',-ss); extgbdataset(\'t1_enterbarpos\',barpos); goto continueline ; end END//if ISLASTBAR
if time>=151300 then begin
sell(extgbdata(\'t1_holding\')>0,ss,c); sellshort(extgbdata(\'t1_holding\')<0,ss,c); extgbdataset(\'t1_position\',0); extgbdataset(\'t1_holding\',0); end
continueline@ 资产:tasset,linethick0; position:=extgbdata(\'t1_position\'); t1holding:=extgbdata(\'t1_holding\'); debugfile(\'d:\\debug\\803555.txt\',\'position=%.0f\' ,position) ; debugfile(\'d:\\debug\\803555.txt\',\'t1holding=%.0f\' ,t1holding) ;
以上代码能在金子塔里测试吗?我用了,不能出信号。
|