设为首页收藏本站

 找回密码
 注册
楼主: 飞鸟
打印 上一主题 下一主题

中国程序化交易的发展需要更多分享和合作。希望大家支持 [复制链接]

Rank: 1

精华
0
UID
115187
积分
36
帖子
32
主题
4
阅读权限
10
注册时间
2013-1-28
最后登录
2013-2-27
1#
发表于 2013-1-28 19:11:34 |显示全部楼层
Params

Numeric K1(1.22);

Numeric K2(2.21);//突破幅度

Numeric Mday(6);

Numeric Nday(1);//统计的时间,单位,天

Numeric lots(1);

Numeric offset(25);//滑点设置




Vars

Numeric BuyRange(0);

Numeric SellRange(0);

Numeric BuyTrig(0);

Numeric SellTrig(0);

Numeric HH;

Numeric LL;

Numeric HC;

Numeric LC;

Numeric i_offset;
Numeric BuyPosition;
Numeric SellPosition;


Numeric MinPoint;           // 一个最小变动单位,也就是一跳
    Numeric MyEntryPrice;       // 开仓价格,本例是开仓均价,也可根据需要设置为某次入场的价格
    Numeric TakeProfitSet(92);  // 止赢设置
    Numeric StopLossSet(16);    // 止损设置
    Numeric MyExitPrice;        // 平仓价格





Begin



  ...
    MinPoint = MinMove*PriceScale;
    MyEntryPrice = AvgEntryPrice;
    If(MarketPosition==1) // 有多仓的情况
    {
        If(High >= MyEntryPrice + TakeProfitSet*MinPoint)   // 止赢条件表达式
        {
            MyExitPrice = MyEntryPrice + TakeProfitSet*MinPoint;
            If(Open > MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            Sell(0,MyExitPrice);
        }else if(Low <= MyEntryPrice - StopLossSet*MinPoint)// 止损条件表达式
        {
            MyExitPrice = MyEntryPrice - StopLossSet*MinPoint;
            If(Open < MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            Sell(0,MyExitPrice);
        }
    }else if(MarketPosition==-1) // 有空仓的情况
    {
        If(Low <= MyEntryPrice - TakeProfitSet*MinPoint)    // 止赢条件表达式
        {
            MyExitPrice = MyEntryPrice - TakeProfitSet*MinPoint;
            If(Open < MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            BuyToCover(0,MyExitPrice);
        }else if(High >= MyEntryPrice + StopLossSet*MinPoint)// 止损条件表达式
        {
            MyExitPrice = MyEntryPrice + StopLossSet*MinPoint;
            If(Open > MyExitPrice) MyExitPrice = Open;      // 如果该Bar开盘价有跳空触发,则用开盘价代替
            BuyToCover(0,MyExitPrice);
        }
    }
    ...


  



        if ((close==Q_LowerLimit) or (close==Q_UpperLimit))
          
           {
             return;
           }
//当最新价等于涨停或者跌停价时,不往下执行公式。       

  







               
                  
If(CurrentBar > 45*Max(Mday,Nday)&&(date!=date[1]))//使用的是5分钟周期,其它的周期自己做相应修改
//当前公式应用商品在当前Bar的时间乘以100》=9点或者小于14.55分
{

        i_offset = offset*MinMove*PriceScale;//MinMove当前公式应用商品的最小变动量
                                             //PriceScale当前公式应用商品的计数单位。
        HH = Highest(HighD(1),Mday);//Highest求最高值.  HighD求N天前的最高价  Mday统计的时间,单位,天

        HC = Highest(CloseD(1),Mday);

        LL =Lowest(LowD(1),Mday);//Lowest求最低值.  LowD求N天前的最低价

        LC = Lowest(CloseD(1),Mday);



        If((HH - LC) >= (HC - LL))//如果昨天的最高价-昨天的最低收盘价》=昨天的最高价-昨天的最低收盘价

        {

                SellRange = HH - LC;//昨天的最高价-昨天的最低收盘价

        }

        Else//否则执行

        {

                SellRange = HC - LL;//昨天的最高收盘价-昨天的最低价

        }


        HH = Highest(HighD(1),Nday);

        HC = Highest(CloseD(1),Nday);

        LL = Lowest(LowD(1),Nday);

        LC = Lowest(CloseD(1),Nday);



        If((HH - LC) >= (HC - LL))

        {

                BuyRange = HH - LC;//昨天的最高价-昨天的最低收盘价

        }

        Else

        {

                BuyRange = HC - LL;//昨天的最高收盘价-昨天的最低价

        }




        BuyTrig = K1*BuyRange;//突破幅度乘以BuyRange

        SellTrig = K2*SellRange;

        

        BuyPosition = OpenD(0)+BuyTrig;//OpenD求N天前的开盘价 [daysAgo 最近N天,0为当天,1为昨天,依次类推。]

        SellPosition = OpenD(0)-SellTrig;

        
        

                If(MarketPosition == 0)//1 当前位置为持空仓
                               //0 当前位置为持平
                                                           //1 当前位置为持多仓

        {
                  
                If(High>=BuyPosition)//如果当前k线最高价》=当前k线的开盘价

                {

                        buy(lots,Max(Open,BuyPosition)-i_offset);//Max求最大值

                        Return;

                }

               

                If(Low<=SellPosition)

                {

                        SellShort(lots,Min(Open,SellPosition)+i_offset);//Min求最小值, -i_offset滑点

                        Return;//返回

                }

        }
}




End

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

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

GMT+8, 2024-5-3 13:54

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部