以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 请教马丁策略 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=154939) |
-- 作者:期货菜鸟 -- 发布时间:2017/6/10 0:19:11 -- 请教马丁策略 请教马丁格尔策略加仓方法 初始仓位为 N1手*1,只要任何一次盈利则下次开始还是以N1手*1进场, 如果止损了下一次开仓就N1*1*2进场,如果还是止损了下一次开仓就N1*1*2*2仓位进场,依此类推 |
-- 作者:haoofz01 -- 发布时间:2017/6/11 10:28:11 -- 间距是多少?其是动态还是静态? |
-- 作者:pyd -- 发布时间:2017/6/12 8:37:03 -- 编写中请稍等 |
-- 作者:pyd -- 发布时间:2017/6/12 9:01:53 -- VARIABLE:ss=n1,m=0;//ss是手数 if 开仓条件 then begin buy(1,ss,marketr); end if 盈利 then begin ss:=n1; end if 止损 then begin m:=m+1; ss:=POW(2 ,m)*n1; end |
-- 作者:期货菜鸟 -- 发布时间:2017/6/12 11:40:09 -- 实际使用为什么会计算出来仓位随时都是满仓 |
-- 作者:期货菜鸟 -- 发布时间:2017/6/12 12:01:29 -- 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; 老师我的哪里有问题,我的弄出来是随时都是满仓的
|
-- 作者:pyd -- 发布时间:2017/6/12 12:39:56 -- 1, n1和n不对照,不知道你编译怎么通过的。 2,提前10分钟平仓时间写的不对,要转换成秒数再转换成时间,例如收盘前提前5分钟的写法 m5:=(t0totime(timetot0(closetime(0))-60*5)); 3,还有其他未定义的变量,直接用你的代码编译不通过 |
-- 作者:期货菜鸟 -- 发布时间:2017/6/12 13:03:41 -- 有N1的,只是没写在这里 N1 =1 |
-- 作者:期货菜鸟 -- 发布时间:2017/6/12 13:05:03 -- 刚才没注意,我贴个完整的 |
-- 作者:期货菜鸟 -- 发布时间:2017/6/12 13:08:51 -- 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; |