-- 作者:eric917
-- 发布时间:2013/2/25 16:28:18
-- 改写一下,实现立即下单
ss:=1; //手数 maa:ema(c,10); tt1:=H>maa; tt2:=L<maa; //当开始没有持仓 if holding=0 then begin if tt1 then begin buy(1,ss,market) end
if tt2 then begin buyshort(1,ss,market); end end
//持仓状态
if tt1 and holding<0 and enterbars>=0 then begin sellshort(1,ss,market); buy(1,ss,market); end
if tt2 and holding>0 and enterbars>=0 then begin sell(1,ss,market); buyshort(1,ss,market); end
aa-TT:if(TT1,1,if(TT2,-1,0)),NODRAW; bb-holding:holding,NODRAW; cc-Enterbars:enterbars,nodraw;
上面的代码,我想实现下面要求
一根K线只出现一次同方向的平开(上面的代码实盘运行过,是会两边一起开仓的),这个和金字塔限制说明的有所不同
请问怎么实现
|
-- 作者:eric917
-- 发布时间:2013/2/25 22:20:41
--
请问这样可以不?
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);
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 tbuy(1,ss,mkt); extgbdataset(\'t1_position\',1); extgbdataset(\'t1_holding\',ss); extgbdataset(\'t1_enterbarpos\',barpos); end
if spk then begin tbuyshort(1,ss,mkt); extgbdataset(\'t1_position\',-1); extgbdataset(\'t1_holding\',-ss); extgbdataset(\'t1_enterbarpos\',barpos); end goto continueline ; end//没有持仓状态 //持有仓位状态 //持空头 if bpk and extgbdata(\'t1_position\')=-1 and extgbdata(\'t1_holding\')<0 then begin
tsellshort(1,ss,mkt); tbuy(1,ss,mkt); 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
tsell(1,ss,mkt); tbuyshort(1,ss,mkt); extgbdataset(\'t1_position\',-1); extgbdataset(\'t1_holding\',-ss); extgbdataset(\'t1_enterbarpos\',barpos); goto continueline ; end
end//if 如果是最后K线 ISLASTBAR
if time>=151300 then begin
tsell(extgbdata(\'t1_holding\')>0,ss,mkt); tsellshort(extgbdata(\'t1_holding\')>0,ss,mkt); 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) ;
[此贴子已经被作者于2013-2-25 22:21:59编辑过]
|
-- 作者:eric917
-- 发布时间:2013/2/25 22:50:18
--
上面有些不合理的地方,修改了一下:
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 tbuy(1,ss,mkt); extgbdataset(\'t1_position\',1); extgbdataset(\'t1_holding\',ss); extgbdataset(\'t1_enterbarpos\',barpos); goto continueline ; end
if spk then begin tbuyshort(1,ss,mkt); extgbdataset(\'t1_position\',-1); 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
tsellshort(1,ss,mkt); tbuy(1,ss,mkt); 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
tsell(1,ss,mkt); tbuyshort(1,ss,mkt); extgbdataset(\'t1_position\',-1); extgbdataset(\'t1_holding\',-ss); extgbdataset(\'t1_enterbarpos\',barpos); goto continueline ; end END//if ISLASTBAR
if time>=151300 then begin
tsell(extgbdata(\'t1_holding\')>0,ss,mkt); tsellshort(extgbdata(\'t1_holding\')<0,ss,mkt); 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) ;
|