文华9帮我添加BOLL,同时不显示120均线和240均线。只显示BOLL,谢谢老师! (文华财经)

投资者咨询:文华9帮我添加BOLL,同时不显示120均线和240均线。只显示BOLL,谢谢老师! (文华财经)
来源:文华财经  日期:2020-10-20 22:35
以下公式:帮我添加BOLL,同时不显示120均线和240均线。只显示BOLL,谢谢老师!



 
Params
   Numeric FastLength(120); //快线周期
   Numeric SlowLength(240); //慢线周期
Vars
   NumericSeries AvgValue1; //快线周期均值
   NumericSeries AvgValue2; //慢线周期均值
   Numeric N; //下单手数
   Numeric SH; //平仓参数
   Numeric RLP,FLP; //涨跌停价
   Numeric BIDP,ASKP; //买卖一价
   Numeric BRP,SRP; //多空头可用持仓
   Numeric OPFLG; //模型处理标志
   Numeric BKDFLG; //买开处理标志
   Numeric SKDFLG; //卖开处理标志
   Numeric BPKDFLG; //买平开处理标志
   Numeric SPKDFLG; //卖平开处理标志
   Global_Numeric BKID,SKID; //开仓委托
   Global_Numeric BPID,SPID; //平仓委托
   Global_Numeric BKFLG,SKFLG; //开仓标志
   Global_Numeric BPFLG,SPFLG; //平仓标志
   Global_Numeric BKDEL,SKDEL; //开仓撤单标志
   Global_Numeric BPDEL,SPDEL; //平仓撤单标志
   Global_Numeric BKM,SKM; //开仓委托手数
   Global_Numeric BPM,SPM; //平仓委托手数
   Global_Numeric BKP,SKP; //开仓委托价格
   Global_Numeric BPP,SPP; //平仓委托价格

Begin
   //------------------------信号发出------------------------//
   If(1) //信号发出
   {
      AvgValue1 = AverageFC(Close,FastLength); //快线周期均值
      AvgValue2 = AverageFC(Close,SlowLength); //慢线周期均值
      PlotNumeric("MA1",AvgValue1);
      PlotNumeric("MA2",AvgValue2);
      //当前无多仓且快线周期的均线高于慢线周期的均线,开多单
      If(MarketPosition <> 1 && AvgValue1[1] > AvgValue2[1])
      {
         BPK(1,Open);
      }
      //当前无空仓且快线周期的均线低于慢线周期的均线,开空单
      If(MarketPosition <> -1 && AvgValue1[1] < AvgValue2[1])
      {
         SPK(1,Open);
      }
   }
   //------------------------处理开启------------------------//
   If(A_IsExchangeOpen() == 1) //如果是开盘状态
   {
      If(BarStatus() == 2) //如果不带入历史值
      {
         If(RunStart() == 1) //如果已初始化成功
         {
            OPFLG = 1; //开启模型处理
         }
      }
   }
   //------------------------变量赋值------------------------//
   If(OPFLG == 1) //变量赋值
   {
      N = 2; //下单手数
      BIDP = Price("Bid1"); //买一价
      ASKP = Price("Ask1"); //卖一价
      RLP = Price("RiseLimit"); //涨停价
      FLP = Price("FallLimit"); //跌停价
      BRP = F_BuyRemainPosition(); //多头可用持仓
      SRP = F_SellRemainPosition(); //空头可用持仓
      BRP = Min(BRP,A_BuyRemainPosition()); //多头可用持仓
      SRP = Min(SRP,A_SellRemainPosition()); //空头可用持仓
      If(A_IsSHCode() == 1) //如果是上期所合约
      {
         SH = Enum_ExitToday; //平仓参数
      }
      Else //如果非上期所合约
      {
         SH = Enum_Exit; //平仓参数
      }
   }
   //------------------------信号处理------------------------//
   If(OPFLG == 1) //信号处理
   {
      If(F_FreshSig() == 1) //如果当前信号是未处理过的信号
      {
         If(F_SigValid() == 1) //如果当前信号未消失
         {
            If(F_Sig() == Sig_BPK) //如果信号类型为BPK
            {
               Commentary("【BPK信号!】");
               BPKDFLG = 1; //开启买平开处理
            }
            Else If(F_Sig() == Sig_SPK) //如果信号类型为SPK
            {
               Commentary("【SPK信号!】");
               SPKDFLG = 1; //开启卖平开处理
            }
         }
      }
   }
   //------------------------成交判断------------------------//
   If(OPFLG == 1) //成交判断
   {
      If(BPFLG == 1) //如果有买平委托
      {
         If(F_OrderStatus(BPID) == Enum_Filled) //如果买平委托成交
         {
            Commentary("【BPK信号:买平委托成交!】");
            BKDFLG = 1; //开启买开处理
            BPFLG = 0; //买平标志归0
         }
      }
      If(BKFLG == 1) //如果有买开委托
      {
         If(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交
         {
            Commentary("【BPK信号:买开委托成交!】");
            If(BKDEL > 0) //如果是SPK信号撤单
            {
               SPKDFLG = 1; //开启卖平开处理
            }
            BKFLG = 0; //买开标志归0
            BKDEL = 0; //买开撤单标志归0
         }
         Else If(F_OrderStatus(BKID) == Enum_Canceled) //如果买开委托已撤
         {
            Commentary("【SPK信号:买开委托已撤!】");
            SPKDFLG = 1; //开启卖平开处理
            BKFLG = 0; //买开标志归0
            BKDEL = 0; //买开撤单标志归0
         }
         Else If(F_OrderStatus(BKID) == Enum_Declared || F_OrderStatus(BKID) == Enum_FillPart) //如果买开委托挂单
         {
            If(BKDEL == 2) //如果是SPK信号撤单
            {
               Commentary("【SPK信号:买开委托撤单!】");
               F_DeleteOrder(F_OrderContractNo(BKID)); //撤掉买开委托挂单
               BKDEL = 3; //SPK信号撤掉买开委托挂单
            }
         }
      }
      If(SPFLG == 1) //如果有卖平委托
      {
         If(F_OrderStatus(SPID) == Enum_Filled) //如果卖平委托成交
         {
            Commentary("【SPK信号:卖平委托成交!】");
            SKDFLG = 1; //开启卖开处理
            SPFLG = 0; //卖平标志归0
         }
      }
      If(SKFLG == 1) //如果有卖开委托
      {
         If(F_OrderStatus(SKID) == Enum_Filled) //如果卖开委托成交
         {
            Commentary("【SPK信号:卖开委托成交!】");
            If(SKDEL > 0) //如果是BPK信号撤单
            {
               BPKDFLG = 1; //开启买平开处理
            }
            SKFLG = 0; //卖开标志归0
            SKDEL = 0; //卖开撤单标志归0
         }
         Else If(F_OrderStatus(SKID) == Enum_Canceled) //如果卖开委托已撤
         {
            Commentary("【BPK信号:卖开委托已撤!】");
            BPKDFLG = 1; //开启买平开处理
            SKFLG = 0; //卖开标志归0
            SKDEL = 0; //卖开撤单标志归0
         }
         Else If(F_OrderStatus(SKID) == Enum_Declared || F_OrderStatus(SKID) == Enum_FillPart) //如果卖开委托挂单
         {
            If(SKDEL == 2) //如果是BPK信号撤单
            {
               Commentary("【BPK信号:卖开委托撤单!】");
               F_DeleteOrder(F_OrderContractNo(SKID)); //撤掉卖开委托挂单
               SKDEL = 3; //BPK信号撤掉卖开委托挂单
            }
         }
      }
   }
   //------------------------委托处理------------------------//
   If(OPFLG == 1) //委托处理
   {
      If(BPKDFLG == 1) //如果已开启买平开处理
      {
         If(SKFLG == 1) //如果有卖开委托
         {
            If(SKDEL == 0) //如果未撤单
            {
               If(F_OrderStatus(SKID) == Enum_Declared || F_OrderStatus(SKID) == Enum_FillPart) //如果卖开委托挂单
               {
                  Commentary("【BPK信号:卖开委托撤单!】");
                  F_DeleteOrder(F_OrderContractNo(SKID)); //撤掉卖开委托挂单
                  SKDEL = 1; //BPK信号撤掉卖开委托挂单
               }
               Else //如果卖开委托未挂单
               {
                  SKDEL = 2; //BPK信号撤掉卖开委托挂单
               }
            }
         }
         Else If(SKFLG == 0) //如果没有卖开委托
         {
            If(BPFLG == 0) //如果没有买平委托
            {
               If(SRP > 0) //如果有空头可用持仓
               {
                  BPM = SRP; //买平委托手数
                  BPP = RLP; //买平委托价格
                  Commentary("【BPK信号:买平委托发出!】");
                  BPID = A_SendOrder(Enum_Buy,SH,BPM,BPP); //发出买平委托
                  BPFLG = 1; //已发出买平委托
               }
               Else If(SRP == 0) //如果没有空头可用持仓
               {
                  BKDFLG = 1; //开启买开处理
               }
            }
         }
      }
      If(BKDFLG == 1) //如果已开启买开处理
      {
         If(BKFLG == 0) //如果没有买开委托
         {
            BKM = N; //买开委托手数
            BKP = ASKP; //买开委托价格
            Commentary("【BPK信号:买开委托发出!】");
            BKID = A_SendOrder(Enum_Buy,Enum_Entry,BKM,BKP); //发出买开委托
            BKFLG = 1; //已发出买开委托
         }
      }
      If(SPKDFLG == 1) //如果已开启卖平开处理
      {
         If(BKFLG == 1) //如果有买开委托
         {
            If(BKDEL == 0) //如果未撤单
            {
               If(F_OrderStatus(BKID) == Enum_Declared || F_OrderStatus(BKID) == Enum_FillPart) //如果买开委托挂单
               {
                  Commentary("【SPK信号:买开委托撤单!】");
                  F_DeleteOrder(F_OrderContractNo(BKID)); //撤掉买开委托挂单
                  BKDEL = 1; //SPK信号撤掉买开委托挂单
               }
               Else //如果买开委托未挂单
               {
                  BKDEL = 2; //SPK信号撤掉买开委托挂单
               }
            }
         }
         Else If(BKFLG == 0) //如果没有买开委托
         {
            If(SPFLG == 0) //如果没有卖平委托
            {
               If(BRP > 0) //如果有多头可用持仓
               {
                  SPM = BRP; //卖平委托手数
                  SPP = FLP; //卖平委托价格
                  Commentary("【SPK信号:卖平委托发出!】");
                  SPID = A_SendOrder(Enum_Sell,SH,SPM,SPP); //发出卖平委托
                  SPFLG = 1; //已发出卖平委托
               }
               Else If(BRP == 0) //如果没有多头可用持仓
               {
                  SKDFLG = 1; //开启卖开处理
               }
            }
         }
      }
      If(SKDFLG == 1) //如果已开启卖开处理
      {
         If(SKFLG == 0) //如果没有卖开委托
         {
            SKM = N; //卖开委托手数
            SKP = BIDP; //卖开委托价格
            Commentary("【SPK信号:卖开委托发出!】");
            SKID = A_SendOrder(Enum_Sell,Enum_Entry,SKM,SKP); //发出卖开委托
            SKFLG = 1; //已发出卖开委托
         }
      }
   }
DrawColorKLine(close>ma(close,120),red,1);
DrawColorKLine(close<ma(close,120),RGB(0,128,64),1);
DrawColorKLine(close==ma(close,120),RGB(192,192,192),1);
End
技术人员回复
日期:2020-10-20 22:38
 参考



 Params
Numeric Length(26);
Numeric Offset(26);  
   Numeric P(2);  
   Numeric FastLength(120); //快线周期
   Numeric SlowLength(240); //慢线周期
Vars
Numeric UpLine;          //上轨
Numeric DownLine;      //下轨 
NumericSeries MidLine; //中间线
NumericSeries TMP2;
   NumericSeries AvgValue1; //快线周期均值
   NumericSeries AvgValue2; //慢线周期均值
   Numeric N; //下单手数
   Numeric SH; //平仓参数
   Numeric RLP,FLP; //涨跌停价
   Numeric BIDP,ASKP; //买卖一价
   Numeric BRP,SRP; //多空头可用持仓
   Numeric OPFLG; //模型处理标志
   Numeric BKDFLG; //买开处理标志
   Numeric SKDFLG; //卖开处理标志
   Numeric BPKDFLG; //买平开处理标志
   Numeric SPKDFLG; //卖平开处理标志
   Global_Numeric BKID,SKID; //开仓委托
   Global_Numeric BPID,SPID; //平仓委托
   Global_Numeric BKFLG,SKFLG; //开仓标志
   Global_Numeric BPFLG,SPFLG; //平仓标志
   Global_Numeric BKDEL,SKDEL; //开仓撤单标志
   Global_Numeric BPDEL,SPDEL; //平仓撤单标志
   Global_Numeric BKM,SKM; //开仓委托手数
   Global_Numeric BPM,SPM; //平仓委托手数
   Global_Numeric BKP,SKP; //开仓委托价格
   Global_Numeric BPP,SPP; //平仓委托价格

Begin
   //------------------------信号发出------------------------//
   If(1) //信号发出
   {
      AvgValue1 = AverageFC(Close,FastLength); //快线周期均值
      AvgValue2 = AverageFC(Close,SlowLength); //慢线周期均值
MidLine = Ma(Close, Length);//求Length个周期的收盘价均线,称为布林通道中轨
TMP2 = Std(Close, Offset); //求Offset个周期内的收盘价的标准差
UpLine = MidLine + P * TMP2;//布林通道上轨
DownLine = MidLine - P * TMP2; //布林通道下轨
PlotNumeric("UpLine", UpLine);
PlotNumeric("DownLine", DownLine);
PlotNumeric("MidLine", MidLine);
      //当前无多仓且快线周期的均线高于慢线周期的均线,开多单
      If(MarketPosition <> 1 && AvgValue1[1] > AvgValue2[1])
      {
         BPK(1,Open);
      }
      //当前无空仓且快线周期的均线低于慢线周期的均线,开空单
      If(MarketPosition <> -1 && AvgValue1[1] < AvgValue2[1])
      {
         SPK(1,Open);
      }
   }
   //------------------------处理开启------------------------//
   If(A_IsExchangeOpen() == 1) //如果是开盘状态
   {
      If(BarStatus() == 2) //如果不带入历史值
      {
         If(RunStart() == 1) //如果已初始化成功
         {
            OPFLG = 1; //开启模型处理
         }
      }
   }
   //------------------------变量赋值------------------------//
   If(OPFLG == 1) //变量赋值
   {
      N = 2; //下单手数
      BIDP = Price("Bid1"); //买一价
      ASKP = Price("Ask1"); //卖一价
      RLP = Price("RiseLimit"); //涨停价
      FLP = Price("FallLimit"); //跌停价
      BRP = F_BuyRemainPosition(); //多头可用持仓
      SRP = F_SellRemainPosition(); //空头可用持仓
      BRP = Min(BRP,A_BuyRemainPosition()); //多头可用持仓
      SRP = Min(SRP,A_SellRemainPosition()); //空头可用持仓
      If(A_IsSHCode() == 1) //如果是上期所合约
      {
         SH = Enum_ExitToday; //平仓参数
      }
      Else //如果非上期所合约
      {
         SH = Enum_Exit; //平仓参数
      }
   }
   //------------------------信号处理------------------------//
   If(OPFLG == 1) //信号处理
   {
      If(F_FreshSig() == 1) //如果当前信号是未处理过的信号
      {
         If(F_SigValid() == 1) //如果当前信号未消失
         {
            If(F_Sig() == Sig_BPK) //如果信号类型为BPK
            {
               Commentary("【BPK信号!】");
               BPKDFLG = 1; //开启买平开处理
            }
            Else If(F_Sig() == Sig_SPK) //如果信号类型为SPK
            {
               Commentary("【SPK信号!】");
               SPKDFLG = 1; //开启卖平开处理
            }
         }
      }
   }
   //------------------------成交判断------------------------//
   If(OPFLG == 1) //成交判断
   {
      If(BPFLG == 1) //如果有买平委托
      {
         If(F_OrderStatus(BPID) == Enum_Filled) //如果买平委托成交
         {
            Commentary("【BPK信号:买平委托成交!】");
            BKDFLG = 1; //开启买开处理
            BPFLG = 0; //买平标志归0
         }
      }
      If(BKFLG == 1) //如果有买开委托
      {
         If(F_OrderStatus(BKID) == Enum_Filled) //如果买开委托成交
         {
            Commentary("【BPK信号:买开委托成交!】");
            If(BKDEL > 0) //如果是SPK信号撤单
            {
               SPKDFLG = 1; //开启卖平开处理
            }
            BKFLG = 0; //买开标志归0
            BKDEL = 0; //买开撤单标志归0
         }
         Else If(F_OrderStatus(BKID) == Enum_Canceled) //如果买开委托已撤
         {
            Commentary("【SPK信号:买开委托已撤!】");
            SPKDFLG = 1; //开启卖平开处理
            BKFLG = 0; //买开标志归0
            BKDEL = 0; //买开撤单标志归0
         }
         Else If(F_OrderStatus(BKID) == Enum_Declared || F_OrderStatus(BKID) == Enum_FillPart) //如果买开委托挂单
         {
            If(BKDEL == 2) //如果是SPK信号撤单
            {
               Commentary("【SPK信号:买开委托撤单!】");
               F_DeleteOrder(F_OrderContractNo(BKID)); //撤掉买开委托挂单
               BKDEL = 3; //SPK信号撤掉买开委托挂单
            }
         }
      }
      If(SPFLG == 1) //如果有卖平委托
      {
         If(F_OrderStatus(SPID) == Enum_Filled) //如果卖平委托成交
         {
            Commentary("【SPK信号:卖平委托成交!】");
            SKDFLG = 1; //开启卖开处理
            SPFLG = 0; //卖平标志归0
         }
      }
      If(SKFLG == 1) //如果有卖开委托
      {
         If(F_OrderStatus(SKID) == Enum_Filled) //如果卖开委托成交
         {
            Commentary("【SPK信号:卖开委托成交!】");
            If(SKDEL > 0) //如果是BPK信号撤单
            {
               BPKDFLG = 1; //开启买平开处理
            }
            SKFLG = 0; //卖开标志归0
            SKDEL = 0; //卖开撤单标志归0
         }
         Else If(F_OrderStatus(SKID) == Enum_Canceled) //如果卖开委托已撤
         {
            Commentary("【BPK信号:卖开委托已撤!】");
            BPKDFLG = 1; //开启买平开处理
            SKFLG = 0; //卖开标志归0
            SKDEL = 0; //卖开撤单标志归0
         }
         Else If(F_OrderStatus(SKID) == Enum_Declared || F_OrderStatus(SKID) == Enum_FillPart) //如果卖开委托挂单
         {
            If(SKDEL == 2) //如果是BPK信号撤单
            {
               Commentary("【BPK信号:卖开委托撤单!】");
               F_DeleteOrder(F_OrderContractNo(SKID)); //撤掉卖开委托挂单
               SKDEL = 3; //BPK信号撤掉卖开委托挂单
            }
         }
      }
   }
   //------------------------委托处理------------------------//
   If(OPFLG == 1) //委托处理
   {
      If(BPKDFLG == 1) //如果已开启买平开处理
      {
         If(SKFLG == 1) //如果有卖开委托
         {
            If(SKDEL == 0) //如果未撤单
            {
               If(F_OrderStatus(SKID) == Enum_Declared || F_OrderStatus(SKID) == Enum_FillPart) //如果卖开委托挂单
               {
                  Commentary("【BPK信号:卖开委托撤单!】");
                  F_DeleteOrder(F_OrderContractNo(SKID)); //撤掉卖开委托挂单
                  SKDEL = 1; //BPK信号撤掉卖开委托挂单
               }
               Else //如果卖开委托未挂单
               {
                  SKDEL = 2; //BPK信号撤掉卖开委托挂单
               }
            }
         }
         Else If(SKFLG == 0) //如果没有卖开委托
         {
            If(BPFLG == 0) //如果没有买平委托
            {
               If(SRP > 0) //如果有空头可用持仓
               {
                  BPM = SRP; //买平委托手数
                  BPP = RLP; //买平委托价格
                  Commentary("【BPK信号:买平委托发出!】");
                  BPID = A_SendOrder(Enum_Buy,SH,BPM,BPP); //发出买平委托
                  BPFLG = 1; //已发出买平委托
               }
               Else If(SRP == 0) //如果没有空头可用持仓
               {
                  BKDFLG = 1; //开启买开处理
               }
            }
         }
      }
      If(BKDFLG == 1) //如果已开启买开处理
      {
         If(BKFLG == 0) //如果没有买开委托
         {
            BKM = N; //买开委托手数
            BKP = ASKP; //买开委托价格
            Commentary("【BPK信号:买开委托发出!】");
            BKID = A_SendOrder(Enum_Buy,Enum_Entry,BKM,BKP); //发出买开委托
            BKFLG = 1; //已发出买开委托
         }
      }
      If(SPKDFLG == 1) //如果已开启卖平开处理
      {
         If(BKFLG == 1) //如果有买开委托
         {
            If(BKDEL == 0) //如果未撤单
            {
               If(F_OrderStatus(BKID) == Enum_Declared || F_OrderStatus(BKID) == Enum_FillPart) //如果买开委托挂单
               {
                  Commentary("【SPK信号:买开委托撤单!】");
                  F_DeleteOrder(F_OrderContractNo(BKID)); //撤掉买开委托挂单
                  BKDEL = 1; //SPK信号撤掉买开委托挂单
               }
               Else //如果买开委托未挂单
               {
                  BKDEL = 2; //SPK信号撤掉买开委托挂单
               }
            }
         }
         Else If(BKFLG == 0) //如果没有买开委托
         {
            If(SPFLG == 0) //如果没有卖平委托
            {
               If(BRP > 0) //如果有多头可用持仓
               {
                  SPM = BRP; //卖平委托手数
                  SPP = FLP; //卖平委托价格
                  Commentary("【SPK信号:卖平委托发出!】");
                  SPID = A_SendOrder(Enum_Sell,SH,SPM,SPP); //发出卖平委托
                  SPFLG = 1; //已发出卖平委托
               }
               Else If(BRP == 0) //如果没有多头可用持仓
               {
                  SKDFLG = 1; //开启卖开处理
               }
            }
         }
      }
      If(SKDFLG == 1) //如果已开启卖开处理
      {
         If(SKFLG == 0) //如果没有卖开委托
         {
            SKM = N; //卖开委托手数
            SKP = BIDP; //卖开委托价格
            Commentary("【SPK信号:卖开委托发出!】");
            SKID = A_SendOrder(Enum_Sell,Enum_Entry,SKM,SKP); //发出卖开委托
            SKFLG = 1; //已发出卖开委托
         }
      }
   }
DrawColorKLine(close>ma(close,120),red,1);
DrawColorKLine(close<ma(close,120),RGB(0,128,64),1);
DrawColorKLine(close==ma(close,120),RGB(192,192,192),1);
End