图表显示问题
想问下各位老师,各位大佬,我的这段代码跟图片中的第一张图的显示不一样,均线显示也不一样,也没有开平仓信号,不知道是那里错了。//------------------------------------------------------------------------ // 简称: ps_macd // 名称: 分时策略 // 类别: 公式应用 // 类型: 用户应用 // 输出: Void //------------------------------------------------------------------------ Params Numeric n(10); //前低偏移量 //MACD 参数 Numeric FastLength(12); Numeric SlowLength(26); Numeric MACDLength(9); Vars //此处添加变量 Numeric MACDDiff; Numeric AvgMACD; Series<Numeric> MACDValue; Series<Numeric> fs_ma; //分时均线 Series<Numeric> prelow; //前低价 Series<Bool> upcross(False); //上穿 Series<Bool> dncross(False); //下穿 Plot plt1; //画板1 Events OnInit() { plt1.figure(0); plt1.setOption("MACD","color",red); plt1.setOption("macd","color",Green); } OnBar(ArrayRef<Integer> indexs) { MACDDiff = XAverage( Close, FastLength ) - XAverage( Close, SlowLength ) ; AvgMACD = XAverage(MACDDiff,MACDLength); MACDValue = (MACDDiff - AvgMACD); plt1.line("快线",MACDDiff); plt1.line("慢线",AvgMACD); plt1.line("0",0); if (MACDValue >= 0) plt1.barv("MACD",MACDValue); Else plt1.barv("macd",MACDValue); // 4.计算分时均线 fs_ma = yma(); PlotNumeric("fs_ma",fs_ma); // 5.计算开平条件 if(CrossOver(Close,fs_ma)) { upcross = True ; //上穿标记(难点) dncross = False; PlotBool("上穿",True) ; } if(CrossOver(Close,fs_ma)) { dncross = True ; //下穿标记 upcross = False ; //上穿的重置标记 } //Commentary3("upcross",upcross); //分时图做多:自下而上突破均线,回调不破均线,同时MACD水上金叉(贴近θ轴附近最佳,水下金叉不做),止损前低或者不下均线不走! Bool islong = //CrossOver(Close,fs_ma) upcross && Close > fs_ma && ( (MACDValue[1] < 0 && MACDValue[0] > 0 ) && (MACDDiff > 0 && AvgMACD > 0)); //开空 Bool isshort = False ; //6. 开平条件 If(MarketPosition == 0 && isshort) { Buy(); //开仓的时候记录 最低价 prelow = low - n ; } //收盘前平仓(日内) If(EndTime == 0.145959) { Sell(); } // 7。止损止盈 //多单平仓 Bool longex1 = MarketPosition == 1 && Low <= prelow; //止损 前低 (上穿时的K的最低价 -N 个点) Bool longex2 = MarketPosition == 1 && C < fs_ma - n; //破分时均线 If(longex1) { Sell(); PlotString("止损 前低","损"); } If(longex2) { Sell(); PlotString("破分时均线","破"); } }