每天盈利一点点,世界依然如故

    wh9 根据盘口价格和持仓价格的实时监测执行跟踪止盈策略 [复制链接]

    autojiaoyi.com 发表于 ・2093 次阅读 库安 wh9 查看全部 使用道具 举报 回复

    wh9 根据盘口价格和持仓价格的实时监测执行跟踪止盈策略

    wh9 软件中会提供几种默认止盈止损策略,但有时无法完全满足您的多样性需要,算法交易模型的函数可取到盘口价格和持仓合约的信息(持仓价格、数量、和盈亏等),通过编写算法交易模型可定制属于您自己的止盈止损策略。比如:跟踪止盈是软件默认提供的策略,但如果希望在盈利达到一定值时再启动跟踪止盈策略,就无法实现了。如何在开仓后,根据算法交易模型取盘口价格和持仓价格实时监测,满足了条件时,自动发平仓委托?

    源码如下:
    //止盈止损
    Data
        data0:"m1709";
    Vars
        Global_Numeric N;//下单手数
        Global_Numeric M1; //价位倍数1
        Global_Numeric M2; //价位倍数2
        Global_Numeric M3; //价位倍数3
        Global_Numeric BID; //买一价
        Global_Numeric ASK; //卖一价
        Global_Numeric NEWP; //最新价
        Global_Numeric MINP; //最小变动价位
        Global_Numeric BKC; //做多条件
        Global_Numeric BKID; //买开委托
        Global_Numeric BKFLG; //买开标志
        Global_Numeric BKAP; //买开委托成交均价
        Global_Numeric BHP; //多头最高价
        Global_Numeric SPID; //卖平委托
        Global_Numeric SPFLG; //卖平标志
        Global_Numeric BRP; //多头可用持仓
        Global_Numeric BZYFLG; //多头止盈标志
    Begin
        N = 2; //下单手数
        M1 = 3; //价位倍数1
        M2 = 1; //价位倍数2
        M3 = 3; //价位倍数3
        BKC = 1; //做多条件
        BID = Price("Bid1"); //买一价
        ASK = Price("Ask1"); //卖一价
        NEWP = Price("New"); //最新价
        MINP = Price("MinPrice");//最小变动价位
        BRP = F_BuyRemainPosition(); //多头可用持仓
    
       if(A_IsExchangeOpen() == 1) //如果当前状态是开盘
        {
           //----------------------成交判断--------------------//
          if(BKFLG == 1) //如果有买开委托
           {
              if(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交
              {
                 Commentary("【多头开仓:买开委托成交!】");
                 BKAP = F_OrderFilledPrice(BKID); //买开委托成交均价
                 BKFLG = 2; //买开委托已成交
              }
           }
    
          if(SPFLG > 0) //如果有卖平委托
           {
              if(F_OrderStatus(SPID) == Enum_Filled) //如果卖平委托成交
              {
                 if(SPFLG == 1) //如果是多头止盈卖平委托
                 {
                    Commentary("【多头止盈:卖平委托成交!】");
                 }
                 else if(SPFLG == 2) //如果是多头止损卖平委托
                 {
                    Commentary("【多头止损:卖平委托成交!】");
                 }
                 BKFLG = 0; //买开标志归0
                 SPFLG = 0; //卖平标志归0
                 BZYFLG = 0; //多头止盈标志归0
              }
           }
    
          //----------------------委托处理--------------------//
    
          if(BKFLG == 0) //如果没有买开委托
           {
              if(BKC == 1) //如果满足做多条件
              {
                 Commentary("【多头开仓:买开委托发出!】");
                 BKID = A_SendOrder(Enum_Buy,Enum_Entry,N,ASK); //以对价发出N手的买开委托
                 BKFLG = 1; //已发出买开委托
              }
           }
    
          if(BKFLG == 2 && SPFLG == 0) //如果买开委托已成交,且没有卖平委托
           {
              if(BZYFLG == 0) //如果多头止盈未开启
              {
                 if(NEWP >= BKAP + M1 * MINP) //如果最新价大于等于买开委托成交均价加M1个价位
                 {
                    Commentary("【多头止盈:多头止盈开启!】");
                    BHP = NEWP; //多头最高价设为最新价
                    BZYFLG = 1; //多头止盈开启
                 }
              }
              else if(BZYFLG == 1) //如果多头止盈已开启
              {
                 BHP = max(NEWP,BHP); //多头最高价
                 if(NEWP <= BHP - M2 * MINP) //如果最新价小于等于多头最高价减M2个价位
                 {
                    if(BRP > 0) //如果有多头可用持仓
                    {
                       Commentary("【多头止盈:卖平委托发出!】");
                       SPID = A_SendOrder(Enum_Sell,Enum_Exit,BRP,BID); //以对价发出多头可用持仓手数的卖平委托
                       SPFLG = 1; //已发出多头止盈卖平委托
                       BZYFLG = 2; //多头止盈已卖平
                    }
                 }
              }
              if(BZYFLG != 2) //如果多头止盈未卖平
              {
                 if(NEWP <= BKAP - M3 * MINP) //如果最新价小于等于买开委托成交均价减M3个价位
                 {
                    Commentary("【多头止损:卖平委托发出!】");
                    SPID = A_SendOrder(Enum_Sell,Enum_Exit,BRP,BID); //以对价发出多头可用持仓手数的卖平委托
                    SPFLG = 2; //已发出多头止损卖平委托
                 }
              }
           }
        }
    End
    算法交易模型执行效果如下图所示,开仓之后满足止损平仓条件,会自动发出平仓委托:

    全部评论/0 条

    本版积分规则

    发布新内容
    加入收藏 我要分享
    分享到论坛或者博客

    复制
    热门指标策略
    快速回复 返回顶部 返回列表