老师请修改文化8可用 (文华财经)

投资者咨询:老师请修改文化8可用 (文华财经)
来源:文华财经  日期:2020-10-14 10:43
 Params
   Numeric AvgLen(27); //高低点均线计算周期
   Numeric AbsDisp(15); //高低点均线前移周期
   Numeric ExitBar(4); //止损周期参数,该周期以前中轨止损,以后外轨止损
Vars
   NumericSeries UpperAvg; //通道上轨
   NumericSeries LowerAvg; //通道下轨
   NumericSeries ExitAvg; //通道中轨
   NumericSeries RangeLeadB;
   NumericSeries RangeLeadS;
   NumericSeries MedianPrice; //K线中点
   NumericSeries Range1; //K线振幅
   Numeric N; //下单手数
   Numeric T; //时间间隔
   Numeric SH; //平仓参数
   Numeric NOW; //当前时间
   Numeric BIDP,ASKP; //买卖一价
   Numeric BRP,SRP; //多空头可用持仓
   Numeric OPFLG; //模型处理标志
   Numeric BKDFLG; //买开处理标志
   Numeric SKDFLG; //卖开处理标志
   Numeric BPDFLG; //买平处理标志
   Numeric SPDFLG; //卖平处理标志
   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; //平仓委托价格
   Global_Numeric BKT,SKT; //开仓委托时间
   Global_Numeric BPT,SPT; //平仓委托时间
Begin
   //------------------------信号发出------------------------//
   If(1) //信号发出
   {
      Range1 = High - Low; //K线振幅
      UpperAvg = Ma(High[AbsDisp],AvgLen); //计算AvgLen周期内,AbsDisp周期前高点的均值
      LowerAvg = Ma(Low[AbsDisp],AvgLen); //计算AvgLen周期内,AbsDisp周期前低点的均值
      MedianPrice = (High + Low) * 0.5; //计算K线中点
      ExitAvg = Ma(MedianPrice[AbsDisp],AvgLen); //计算AvgLen周期内,AbsDisp周期前K线中点的均值
      RangeLeadB = MedianPrice > High[1] && Range1 > Range1[1]; //当根K线满足中点大于前一根K线高点且振幅大于上一根振幅
      RangeLeadS = MedianPrice < Low[1] && Range1 > Range1[1]; //当根K线满足中点小于前一根K线低点且振幅大于上一根振幅
      PlotNumeric("Lineu",UpperAvg); //输出通道上轨
      PlotNumeric("LineM",ExitAvg); //输出通道中轨
      PlotNumeric("Lingd",LowerAvg); //输出通道下轨
      //系统入场
      If(MarketPosition == 0) //无持仓
      {
         If(RangeLeadB[1] == 1 && Close[1] > UpperAvg[1]) //上根K线满足RangeLeadB条件,且上一根收盘价大于上一根通道上轨
         {
            BK(DefaultVol,Open); //以开盘价开多仓
         }
         If(RangeLeadS[1] == 1 && Close[1] < LowerAvg[1]) //上根K线满足RangeLeadS条件,且上一根收盘价小于上一根通道下轨
         {
            SK(DefaultVol,Open); //以开盘价开空仓
         }
      }
      //系统出场
      If(MarketPosition == 1 && BarsSinceEntry > 0) //持有多仓且开仓后一根K线以后
      {
         If(BarsSinceEntry <= ExitBar) //开仓后ExitBar根K线内
         {
            If(Low <= ExitAvg) //最低价小于等于中轨
            {
               SP(DefaultVol,Min(Open,ExitAvg)); //以开盘价和中轨的较小价平多仓
            }
         }
         Else If(BarsSinceEntry > ExitBar) //否则开仓后ExitBar根K线以后
         {
            If(Low <= UpperAvg - MinPrice) //最低价小于等于上轨减最小变动价位
            {
               SP(DefaultVol,Min(Open,UpperAvg - MinPrice)); //以开盘价与上轨减最小变动价位的较小价平多仓
            }
         }
      }
      If(MarketPosition == -1 && BarsSinceEntry > 0) //持有空仓且开仓后一根K线以后
      {
         If(BarsSinceEntry <= ExitBar) //开仓后ExitBar根K线内
         {
            If(High >= ExitAvg) //最高价大于等于中轨
            {
               BP(DefaultVol,Max(Open,ExitAvg)); //以开盘价和中轨的较大价平空仓
            }
         }
         Else If(BarsSinceEntry > ExitBar) //否则开仓后ExitBar根K线以后
         {
            If(High >= LowerAvg + MinPrice) //最高价大于等于下轨加最小变动价位
            {
               BP(DefaultVol,Max(Open,LowerAvg + MinPrice)); //以开盘价与下轨加最小变动价位的较大价平空仓
            }
         }
      }
   }
   //------------------------处理开启------------------------//
   If(A_IsExchangeOpen() == 1) //如果是开盘状态
   {
      If(BarStatus() == 2) //如果不带入历史值
      {
         If(RunStart() == 1) //如果已初始化成功
         {
            OPFLG = 1; //开启模型处理
         }
      }
   }
   //------------------------变量赋值------------------------//
   If(OPFLG == 1) //变量赋值
   {
      N = 1; //下单手数
      T = 3; //时间间隔
      NOW = CurrentTime(); //当前时间
      BIDP = Price("Bid1"); //买一价
      ASKP = Price("Ask1"); //卖一价
      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_BK) //如果信号类型为BK
            {
               Commentary("【BK信号!】");
               BKDFLG = 1; //开启买开处理
            }
            Else If(F_Sig() == Sig_SP) //如果信号类型为SP
            {
               Commentary("【SP信号!】");
               SPDFLG = 1; //开启卖平处理
            }
            Else If(F_Sig() == Sig_SK) //如果信号类型为SK
            {
               Commentary("【SK信号!】");
               SKDFLG = 1; //开启卖开处理
            }
            Else If(F_Sig() == Sig_BP) //如果信号类型为BP
            {
               Commentary("【BP信号!】");
               BPDFLG = 1; //开启买平处理
技术人员回复
日期:2020-10-14 10:44
 请稍等
投资者咨询:老师请修改文化8可用 (文华财经)
来源:文华财经  日期:2020-10-14 10:43

 谢谢

 

技术人员回复
日期:2020-10-14 11:06
 参考;

AVGLEN:=27;
//高低点均线计算周期
ABSDISP:=15;
 //高低点均线前移周期
EXITBAR:=4;
//止损周期参数,该周期以前中轨止损,以后外轨止损

 
RANGE1 := HIGH - LOW; //K线振幅
UPPERAVG : MA(REF(HIGH,15),AVGLEN); //计算AVGLEN周期内,ABSDISP周期前高点的均值
LOWERAVG :MA(REF(LOW,15),AVGLEN); //计算AVGLEN周期内,ABSDISP周期前低点的均值
MEDIANPRICE := (HIGH + LOW) * 0.5; //计算K线中点
EXITAVG : MA(REF(MEDIANPRICE,15),AVGLEN); //计算AVGLEN周期内,ABSDISP周期前K线中点的均值
RANGELEADB := MEDIANPRICE > REF(HIGH,1) && RANGE1 >REF( RANGE1,1); //当根K线满足中点大于前一根K线高点且振幅大于上一根振幅
RANGELEADS := MEDIANPRICE < REF(LOW,1) && RANGE1 > REF(RANGE1,1); //当根K线满足中点小于前一根K线低点且振幅大于上一根振幅
   
    
RANGELEADB=1&&C>UPPERAVG,BK;
RANGELEADS=1&&C<LOWERAVG,SK;
       
BARSBK>0&&BARSSK<=EXITBAR&&L<EXITAVG,SP;
BARSBK>EXITBAR&&L< UPPERAVG - MINPRICE,SP;

CHECKSIG(SP,'A',0,'C',0,0);

BARSSK>0&&BARSSK<=EXITBAR&&H>=EXITAVG,BP;
BARSSK>EXITBAR&&H>LOWERAVG + MINPRICE,BP;
CHECKSIG(BP,'A',0,'C',0,0);

AUTOFILTER;

投资者咨询:老师请修改文化8可用 (文华财经)
来源:文华财经  日期:2020-10-14 10:43
老师,帮我加一个动态止盈,开仓后盈利达到100个变动价位,最低点回撤50个变动价位止盈,固定止损!
技术人员回复
日期:2020-10-16 15:46
参考:

AVGLEN:=27;
//高低点均线计算周期
ABSDISP:=15;
 //高低点均线前移周期
EXITBAR:=4;
//止损周期参数,该周期以前中轨止损,以后外轨止损

 
RANGE1 := HIGH - LOW; //K线振幅
UPPERAVG : MA(REF(HIGH,15),AVGLEN); //计算AVGLEN周期内,ABSDISP周期前高点的均值
LOWERAVG :MA(REF(LOW,15),AVGLEN); //计算AVGLEN周期内,ABSDISP周期前低点的均值
MEDIANPRICE := (HIGH + LOW) * 0.5; //计算K线中点
EXITAVG : MA(REF(MEDIANPRICE,15),AVGLEN); //计算AVGLEN周期内,ABSDISP周期前K线中点的均值
RANGELEADB := MEDIANPRICE > REF(HIGH,1) && RANGE1 >REF( RANGE1,1); //当根K线满足中点大于前一根K线高点且振幅大于上一根振幅
RANGELEADS := MEDIANPRICE < REF(LOW,1) && RANGE1 > REF(RANGE1,1); //当根K线满足中点小于前一根K线低点且振幅大于上一根振幅
   
    
RANGELEADB=1&&C>UPPERAVG,BK;
RANGELEADS=1&&C<LOWERAVG,SK;
       
BARSBK>0&&BARSSK<=EXITBAR&&L<EXITAVG,SP;
BARSBK>EXITBAR&&L< UPPERAVG - MINPRICE,SP;

CHECKSIG(SP,'A',0,'C',0,0);

BARSSK>0&&BARSSK<=EXITBAR&&H>=EXITAVG,BP;
BARSSK>EXITBAR&&H>LOWERAVG + MINPRICE,BP;
CHECKSIG(BP,'A',0,'C',0,0);


BKHIGH>BKPRICE+100*MINPRICE&&C<BKHIGH-50*MINPRICE||C<BKPRICE-50*MINPRICE,SP;
SKLOW<SKPRICE-100*MINPRICE&&C>SKLOW+50*MINPRICE||C>SKPRICE+50*MINPRICE,BP;
AUTOFILTER;
投资者咨询:老师请修改文化8可用 (文华财经)
来源:文华财经  日期:2020-10-14 10:43
老师帮忙看看,指标止损和开仓有些地方不对

图片点击可在新窗口打开查看
图片点击可在新窗口打开查看 文件名:mmexport1602864295311.png
投资者咨询:老师请修改文化8可用 (文华财经)
来源:文华财经  日期:2020-10-14 10:43
破中规应该止损,突破上下轨就应该开仓,
投资者咨询:老师请修改文化8可用 (文华财经)
来源:文华财经  日期:2020-10-14 10:43
破中规应该止损,突破上下轨就应该开仓,
投资者咨询:老师请修改文化8可用 (文华财经)
来源:文华财经  日期:2020-10-14 10:43
后面这几个信号都正确

图片点击可在新窗口打开查看
图片点击可在新窗口打开查看 文件名:mmexport1602864577931.png