欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → cash和asset函数的非一致性?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有8335人关注过本帖平板打印复制链接

主题:cash和asset函数的非一致性?

帅哥哟,离线,有人找我吗?
choir2001
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:67 积分:363 威望:0 精华:0 注册:2010/5/14 10:39:11
  发帖心情 Post By:2010/6/10 22:15:29    Post IP:61.171.35.192[只看该作者]

稍微修改了一下bhwhui写的海龟交易法,用Asset来计算开仓量。

费率设置,保证金率margin 10%,合约单位10,交易费用0.02%,初始资金100万。运行到白糖1007的5MIN结果如图..(图传不来)

 

1、图中直观看出未开仓时,asset=cash*margin的关系,是否此点设计有误?应该asset=cash

2、在5MIN图上只有在4月22日之前能产生信号,而15MIN图上所有日期都有信号,这点十分不理解。

 

======================================

input:trn(20,5,30),hn(20,5,30),lown(10,5,20);

VARIABLE:dayCount=1,PositionCount=1,SellSign=0,dK=0;//加多空标志,1:多,-1:空 0:空仓
VARIABLE:EntAndExitSign=1,EntPoint=0,ExitPoint=0;
VARIABLE:N=0;

margin:=0.1;//保证金率
value:=10;//合约单位

//现金:CASH(0)/1000*margin;//若输出此行,cash和asset相等
现金:CASH(0)/1000;//若输出此行,asset=cash*margin。处以1000是为了坐标比例与K线适应
资产:ASSET/1000;

N:=MA(TR,trn);
BUYHHV:=HHV(H,hn);
SELLLLV:=LLV(L,lown);

sellshortllv:=llv(l,hn);
buyshorthhv:=hhv(h,lown);

IF BARPOS>=hn THEN
BEGIN
 IF BARPOS=hn THEN
 IF DayCount=hn/2 OR BARPOS=hn  THEN
  BEGIN{hn/2天调整N值}
      N:=((hn-1)*N+TR)/hn;{计算N值}
      DayCount:=2;
  END
 
 DayCount:=DayCount+1;
 EntPoint:=ENTERBARS+1;
 
 IF EntPoint=EntAndExitSign THEN
     BEGIN{说明STOP指令买进头寸成功}
  PositionCount:=PositionCount+1;{头寸计数}
  SellSign:=True;{可以平仓信号,如果达到指定的价格}
   END
  
 IF PositionCount=1 THEN BEGIN{第一头寸}
  HOW:=ASSET*0.01/N/value;{波动性百分比决定头寸规模}
  if high=buyhhv then
   BEGIN
   dk:=1;
   多开1:BUY(1,HOW,STOP,BUYHHV);{在20日新高STOP指令买进}
   END;
  
  if low=sellshortllv then
   begin
   dk:=-1;
   空开1:buyshort(1,HOW,STOP,sellshortllv);{在20日新低STOP指令空开}
   end;
 END

 IF PositionCount=2 THEN BEGIN{如到第二头寸}
  HOW:=ASSET*0.01/N/value;{波动性百分比决定头寸规模}
  if dk=1 then 多开2:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第一头寸)+0.5个N以STOP指令买进}
  if dk=-1 then 空开2:buyshort(1,HOW,STOP,ENTERPRICE-0.5*N);
 END

 IF PositionCount=3 THEN BEGIN{如到第三头寸}
  HOW:=ASSET*0.01/N/value;
  if dk=1 then 多开3:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);{在上头寸(即第二头寸)+0.5个N以STOP指令买进}
  if dk=-1 then 空开3:buyshort(1,HOW,STOP,ENTERPRICE-0.5*N);
 END

 IF PositionCount=4 THEN BEGIN
  HOW:=ASSET*0.01/N/value;
  if dk=1 then 多开4:BUY(1,HOW,STOP,ENTERPRICE+0.5*N);
  if dk=-1 then 空开4:buyshort(1,HOW,STOP,ENTERPRICE-0.5*N); 
 END

 IF SellSign=True THEN
  BEGIN
      ExitPoint:=EXITBARS+1;
      if dk=1 then
       begin
        IF ExitPoint=EntAndExitSign THEN
        BEGIN {说明卖出成功}
           PositionCount:=1;{头寸计算复原}
           SellSign:=False;
           dk:=0;
        END
    
        IF ENTERPRICE-2*N then
         SELL(1,100%,STOP,SELLLLV);{退出离盈利头寸}
        ELSE
         SELL(1,100%,STOP,ENTERPRICE-2*N);{退出亏损头寸}
       end;
      
      if dk=-1 then
        begin
       IF ExitPoint=EntAndExitSign THEN
        BEGIN
           PositionCount:=1;
           SellSign:=False;
           dk:=0;
        END
    
       IF ENTERPRICE+2*N then
        sellSHORT(1,100%,STOP,BUYSHORTHHV);
       ELSE
        sellSHORT(1,100%,STOP,ENTERPRICE+2*N);
      
       END;
     END
END;


 回到顶部