请教马丁格尔策略加仓方法
初始仓位为
N1手*1,只要任何一次盈利则下次开始还是以N1手*1进场,
如果止损了下一次开仓就N1*1*2进场,如果还是止损了下一次开仓就N1*1*2*2仓位进场,依此类推
VARIABLE:ss=n1,m=0;//ss是手数
variable:bj=0;
//中间变量
INPUT:N(1,1,100,1),K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),YLDS(95,1,100,1),HCBFB(0.9,0.5,1,0.1);
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
HH:=HHV(昨高,N);//N日HIGH的最高价
HC:=HHV(昨收,N);//N日CLOSE的最高价
LC:=LLV(昨收,N);//N日CLOSE的最低价
LL:=LLV(昨低,N);//N日LOW的最低价
浮动区间:=MAX(HH-LC,HC-LL);//RANGE
上轨:开盘价+K1*浮动区间;
下轨:开盘价-K2*浮动区间;
T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=TIME>=CLOSETIME(0)-NMIN*100;
//交易条件
开多条件:=C>上轨 AND HOLDING=0;
开空条件:=C<下轨 AND HOLDING=0;
开多:BUY(开多条件 AND T1 AND CYC>1 and bj=0,ss,MARKET);
开空:BUYSHORT(开空条件 AND T1 AND CYC>1 and bj=0,ss,MARKET);
收盘平多:SELL(T2,0,MARKET);
收盘平空:SELLSHORT(T2,0,MARKET);
//盈利;
盈利点数:=C-AVGENTERPRICE;
盈利大于N点:=C-AVGENTERPRICE>YLDS;
if 盈利点数<=hhv(盈利点数,enterbars+1)*HCBFB and enterbars>0 and hhv(盈利点数,enterbars+1)>0 and holding<>0 and 盈利大于N点 then begin
sell(1,0,MARKET);
sellshort(1,0,MARKET);
bj:=1;
ss:=n1;
end
//止损
IF AVGENTERPRICE-C>DTZS*MINDIFF THEN BEGIN
SELL(1,0,MARKETR);
m:=m+1;
ss:=POW(2 ,m)*n1;
END
//止损
IF C-AVGENTERPRICE>KTZS*MINDIFF THEN BEGIN
SELLSHORT(1,0,MARKETR);
m:=m+1;
ss:=POW(2 ,m)*n1;
END
if time=closetime(0) then bj:=0;
老师我的哪里有问题,我的弄出来是随时都是满仓的
1, n1和n不对照,不知道你编译怎么通过的。
2,提前10分钟平仓时间写的不对,要转换成秒数再转换成时间,例如收盘前提前5分钟的写法
m5:=(t0totime(timetot0(closetime(0))-60*5));
if time>=m5 and holding>0 then Sell(1,1,market);
3,还有其他未定义的变量,直接用你的代码编译不通过
VARIABLE:ss=n1,m=0;//ss是手数
variable:bj=0;
//中间变量
INPUT:N(1,1,100,1),K1(0.7,0.1,1,0.1),K2(0.7,0.1,1,0.1),NMIN(10,1,100,1),YLDS(95,1,100,1),HCBFB(0.9,0.5,1,0.1),N1(1,1,10000,1);
CYC:=BARSLAST(DATE<>REF(DATE,1))+1;
昨高:=CALLSTOCK(STKLABEL,VTHIGH,6,-1);
昨低:=CALLSTOCK(STKLABEL,VTLOW,6,-1);
昨收:=CALLSTOCK(STKLABEL,VTCLOSE,6,-1);
开盘价:=VALUEWHEN(CYC=1,OPEN);
HH:=HHV(昨高,N);//N日HIGH的最高价
HC:=HHV(昨收,N);//N日CLOSE的最高价
LC:=LLV(昨收,N);//N日CLOSE的最低价
LL:=LLV(昨低,N);//N日LOW的最低价
浮动区间:=MAX(HH-LC,HC-LL);//RANGE
上轨:开盘价+K1*浮动区间;
下轨:开盘价-K2*浮动区间;
T1:=TIME>OPENTIME(1) AND TIME<CLOSETIME(0)-NMIN*100;
T2:=TIME>=CLOSETIME(0)-NMIN*100;
//交易条件
开多条件:=C>上轨 AND HOLDING=0;
开空条件:=C<下轨 AND HOLDING=0;
开多:BUY(开多条件 AND T1 AND CYC>1 and bj=0,ss,MARKET);
开空:BUYSHORT(开空条件 AND T1 AND CYC>1 and bj=0,ss,MARKET);
收盘平多:SELL(T2,0,MARKET);
收盘平空:SELLSHORT(T2,0,MARKET);
//盈利;
盈利点数:=C-AVGENTERPRICE;
盈利大于N点:=C-AVGENTERPRICE>YLDS;
if 盈利点数<=hhv(盈利点数,enterbars+1)*HCBFB and enterbars>0 and hhv(盈利点数,enterbars+1)>0 and holding<>0 and 盈利大于N点 then begin
sell(1,0,MARKET);
sellshort(1,0,MARKET);
bj:=1;
ss:=n1;
end
//止损
IF AVGENTERPRICE-C>20*MINDIFF THEN BEGIN
SELL(1,0,MARKETR);
m:=m+1;
ss:=POW(2 ,m)*n1;
END
//止损
IF C-AVGENTERPRICE>20*MINDIFF THEN BEGIN
SELLSHORT(1,0,MARKETR);
m:=m+1;
ss:=POW(2 ,m)*n1;
END
if time=closetime(0) then bj:=0;