指标学习与分享 : avg_open_breakout
// 简称 : avg_open_breakoutParams Numeric N1( 21 ) ; // 参数 N1 的取值范围 : 0 至 100 , 默认值为 21 Numeric N2( 7 ) ; // 参数 N2 的取值范围 : 0 至 100 , 默认值为 7Vars Series<Numeric> X1 ; // 近 N1 期 ( 包括 当前 K线 ) 最高的 开盘价 Series<Numeric> X2 ; // 近 N2 期 ( 包括 当前 K线 ) 最低的 开盘价 Series<Numeric> X3 ; Series<Numeric> TMP ; Plot plt_stick_pos ; Plot plt_stick_neg ; Plot plt_stick_zero ; Plot plt_rectangle_pos ; Plot plt_rectangle_neg ;Events OnInit() { plt_stick_pos.setOption( "stick_pos" , "color" , Blue() ) ; plt_stick_pos.setOption( "stick_pos" , "bar-width" , 0.1 ) ; plt_stick_neg.setOption( "stick_neg" , "color" , Yellow() ) ; plt_stick_neg.setOption( "stick_neg" , "bar-width" , 0.1 ) ; plt_stick_zero.setOption( "stick_zero" , "color" , White() ) ; plt_stick_zero.setOption( "stick_zero" , "bar-width" , 0.1 ) ; plt_rectangle_pos.setOption( "rectangle_pos" , "color" , Blue() ) ; plt_rectangle_pos.setOption( "rectangle_pos" , "bar-width" , 7 ) ; plt_rectangle_neg.setOption( "rectangle_neg" , "color" , Yellow() ) ; plt_rectangle_neg.setOption( "rectangle_neg" , "bar-width" , 7 ) ; } OnBar(ArrayRef<Integer> indexs) { // ---------- 指标计算 : 开始 ---------- // 计算 近 N1 期 ( 包括 当前 K线 ) 最高的 开盘价 X1 = HighestFC( Open , N1 ) ; // 计算 近 N2 期 ( 包括 当前 K线 ) 最低的 开盘价 X2 = LowestFC( Open , N2 ) ; Commentary( "Open = " + Text( Open ) ) ; Commentary( "Highest Open X1 = " + Text( X1 ) ) ; Commentary( "Lowest Open X2 = " + Text( X2 ) ) ; // 计算 近期开盘价 的 中轨 X3 = ( X1 + X2 ) / 2 ; // 计算 近期开盘价中轨 与 当前 K线 收盘价 的 差值 // 差值 为正 表示 收盘价 低于 中轨 // 差值 为负 表示 收盘价 高于 中轨 TMP = X3 - Close ; // ---------- 指标计算 : 结束 ---------- // ---------- 图表绘制 : 开始 ---------- // PlotNumeric : 在当前 Bar 输出一个数值 // void PlotNumeric( String Name , Numeric Number , Numeric Locator=0 , Integer Color=-1 , Integer BarsBack=0 ) // 其中 , 参数 Locator 可以填任何数值 , 对绘图无影响 ( 但是 不能漏填 ) PlotNumeric( "X3" , X3 , Close , Magenta() ) ; // 差值 为正 , 将 K线 的 高低范围 ( 中轴线段 ) 涂成 blue // DRAWLINE( TMP > 0.00001 , OPEN , TMP > 0.00001 , HIGH , COLORBLUE ) ; // DRAWLINE( TMP > 0.00001 , LOW , TMP > 0.00001 , CLOSE , COLORBLUE ) ; If( TMP > 0.00001 ) { plt_stick_pos.barv( "stick_pos" , Date + Time , Low , High ) ; } // 差值 为负 , 将 K线 的 高低范围 ( 中轴线段 ) 涂成 yellow // DRAWLINE( TMP < -0.00001 , HIGH , TMP < -0.00001 , CLOSE , COLORYELLOW ) ; // DRAWLINE( TMP < -0.00001 , LOW , TMP < -0.00001 , OPEN , COLORYELLOW ) ; If( TMP < -0.00001 ) { plt_stick_neg.barv( "stick_neg" , Date + Time , Low , High ) ; } // 差值 为零 , 将 K线 的 高低范围 ( 中轴线段 ) 涂成 white // DRAWLINE( ABS( TMP ) < 0.00001 , LOW , ABS( TMP ) < 0.00001 , OPEN , COLORWHITE ) ; // DRAWLINE( ABS( TMP ) < 0.00001 , HIGH , ABS( TMP ) < 0.00001 , OPEN , COLORWHITE ) ; If( Abs( TMP ) < 0.00001 ) { plt_stick_zero.barv( "stick_zero" , Date + Time , Low , High ) ; } // 差值 为正 , 将 K线 的 开收范围 ( 长方形边框 ) 涂成 blue // STICKLINE( TMP > 0.00001 , OPEN , CLOSE , COLORBLUE , 1 ) ; If( TMP > 0.00001 ) { plt_rectangle_pos.barv( "rectangle_pos" , Date + Time , Open , Close ) ; } // 差值 为负 , 将 K线 的 开收范围 ( 长方形边框 ) 涂成 yellow // STICKLINE( TMP < -0.00001 , OPEN , CLOSE , COLORYELLOW , 1 ) ; If( TMP < -0.00001 ) { plt_rectangle_neg.barv( "rectangle_neg" , Date + Time , Open , Close ) ; } // ---------- 图表绘制 : 结束 ---------- }