以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  公式模型编写问题提交  (http://weistock.com/bbs/list.asp?boardid=4)
----  请老师修改策略  (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=77694)

--  作者:liyuanhao
--  发布时间:2015/4/17 8:04:03
--  请老师修改策略
下面源码是海龟系统的,请老师修改一下:开仓的总数量是总资金的30%以内,我在做测试此源码是老是说资金不足,已经在费用里调资金很大了。谢谢!

VARIABLE:dayCount=1,PositionCount=1,SellSign=0; 
VARIABLE:EntAndExitSign=1,EntPoint=0,ExitPoint=0; 
VARIABLE:N=0;

MA1:MA(C,5);
MA3:MA(C,10);
M:=MA(TR,20); 

BUYHHV:=HHV(H,20);
SELLLLV:=LLV(L,10);
ss:n,linethick0;

IF BARPOS>=21 THEN BEGIN 
IF BARPOS=21 THEN 
N:=M;

IF DayCount=6 OR BARPOS=21 THEN BEGIN{5天调整N值} 
N:=(19*N+TR)/20;{计算N值} 
DayCount:=2;
END 

DayCount:=DayCount+1; 
EntPoint:=ENTERBARS+1; 
IF EntPoint=EntAndExitSign THEN BEGIN{说明STOP指令买进头寸成功} 
PositionCount:=PositionCount+1;{头寸计数} 
SellSign:=True;{开始以STOP卖出,如果达到指定的价格} 
END 

IF PositionCount=1 THEN BEGIN{第一头寸} 
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} 
开1:BUY(H>=BUYHHV,HOW,MARKET);{在20日新高STOP指令买进} 
END 

IF PositionCount=2 THEN BEGIN{如到第二头寸} 
HOW:=CASH(0)*0.01/N;{波动性百分比决定头寸规模} 
开2:BUY(H>=ENTERPRICE+0.5*N,HOW,MARKET);{在上头寸(即第一头寸)+0.5个N以STOP指令买进} 
END 



IF SellSign=True THEN BEGIN 
    ExitPoint:=EXITBARS+1; 
    IF ExitPoint=EntAndExitSign THEN BEGIN {说明卖出成功} 
       PositionCount:=1;{头寸计算复原} 
       SellSign:=False; 
END

    IF ENTERPRICE-2*N then SELL(L<=SELLLLV,100%,MARKET);{退出离盈利头寸} 
    ELSE 
    SELL(L<=ENTERPRICE-2*N,100%,MARKET);{退出亏损头寸} 
    END 
END;

--  作者:jinzhe
--  发布时间:2015/4/17 8:50:46
--  
把开仓手数写为30%即可