设为首页收藏本站

 找回密码
 注册
查看: 8923|回复: 0
打印 上一主题 下一主题

Dual Thrust模型的TB代码 [复制链接]

Rank: 1

精华
0
UID
193025
积分
8
帖子
3
主题
3
阅读权限
10
注册时间
2014-8-28
最后登录
2015-2-21
跳转到指定楼层
1#
发表于 2015-1-13 21:40:08 |显示全部楼层 |倒序浏览
参考了论坛中的多人的代码,经过了自己的一些优化。供大家参考。

//------------------------------------------------------------------------
// 简称: AA_DualThrust
// 名称: DualThrust
// 类别: 公式应用
// 类型: 用户应用
// 输出:YAQ
//------------------------------------------------------------------------

Params
        Numeric KUp(0.50); //上轨系数
        Numeric KDown(0.50); //下轨系数
        Numeric DayUp(1); //上轨观察天数
        Numeric DayDown(1); //下轨观察天数
        Numeric Lots(1); //合约手数
        Numeric Offset(0); //委托偏移跳数

Vars
        Numeric RangeUp(0); //上轨幅度
        Numeric RangeDown(0); //下轨幅度
        //Numeric BuyTrig(0);
        //Numeric SellTrig(0);
        Numeric HH;
        Numeric LL;
        Numeric HC;
        Numeric LC;
        Numeric i_Offset; //委托偏移价格
        Numeric BuyPosition; //买入价格
        Numeric SellPosition; //卖出价格
        Numeric i; //记次容器

Begin

        //--- 判断图表中是否有足够天数的数据 Begin ---
        If(BarStatus == 0)
                {
                        SetGlobalVar(0,0); //第一个全局变量记录当前BAR的DAY值
                        SetGlobalVar(1,0); //第二个全局变量记录从第一根BAR到当前BAR经历过的天数
                }
        If(Day()<>GetGlobalVar(0)) //如果当前BAR的DAY值不等于前一根BAR的DAY值,则表明又增加一天
                {
                        SetGlobalVar(0,Day()); //记录下当前BAR的DAY值
                        SetGlobalVar(1,GetGlobalVar(1)+1);// 将经历过的天数加1并保存
                }
       
        Commentary(text(GetGlobalVar(1))); // 测试语句,可删除
        If(GetGlobalVar(1) < 1 + Max(DayUp,DayDown)) Return; // 如果全部数据天数不够,则返回
        //致此,图表数据至少跨越两天
        //--- 判断图表中是否有足够天数的数据 End -----
       
       
        i_offset = Offset*MinMove*PriceScale; //根据委托偏移跳数取委托偏移价格       
       
        //--- 取上轨幅度 Begin ---
        HH = HighD(1);
        HC = CloseD(1);
        LL = LowD(1);
        LC = HC;//CloseD(1);
        For i = 2 to DayUp
                {
                        HH = Max(HH,HighD(i));
                        HC = Max(HC,CloseD(i));
                        LL = Min(LL,LowD(i));
                        LC = Min(LC,CloseD(i));
                }
        RangeUp = KUp * Max(HH-LC,HC-LL);
        //--- 取上轨幅度 End ---
       
        //--- 取下轨幅度 Begin ---
        HH = HighD(1);
        HC = CloseD(1);
        LL = LowD(1);
        LC = HC;//CloseD(1);
        For i = 2 to DayDown
                {
                        HH = Max(HH,HighD(i));
                        HC = Max(HC,CloseD(i));
                        LL = Min(LL,LowD(i));
                        LC = Min(LC,CloseD(i));
                }
        RangeDown = KDown * Max(HH-LC,HC-LL);
        //--- 取下轨幅度 End ---       
       

        BuyPosition = OpenD(0) + RangeUp;
        SellPosition = OpenD(0) - RangeDown;
        PlotNumeric("BuyPosition",BuyPosition);
        PlotNumeric("SellPosition",SellPosition);
       

        If(MarketPosition == 0)
        {
                If(High >= BuyPosition)
                {
                        Buy(lots,Max(Open,BuyPosition) + i_offset);
                        Return;
                }
                       
                If(Low <= SellPosition)
                {
                        SellShort(lots,Min(Open,SellPosition) - i_offset);
                        Return;
                }
        }

        If(MarketPosition == -1)
        {
                If(High >= BuyPosition)
                {
                        Buy(lots,Max(Open,BuyPosition) + i_offset);
                        Return;
                }
        }

        If(MarketPosition == 1)
        {
                If(Low <= SellPosition)
                {
                        SellShort(lots,Min(Open,SellPosition) - i_offset);
                        Return;
                }
        }       
       
       
End

//------------------------------------------------------------------------
// 编译版本        GS2010.12.08
// 用户版本        2015-01-13 00:29:44
// 版权所有        yaq2012
// 更改声明        TradeBlazer Software保留对TradeBlazer平台
//                        每一版本的TrabeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-21 22:41

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部