图表显示问题

想问下各位老师,各位大佬,我的这段代码跟图片中的第一张图的显示不一样,均线显示也不一样,也没有开平仓信号,不知道是那里错了。//------------------------------------------------------------------------ // 简称: 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("破分时均线","破"); } }

代码无法编译,你这个yma是什么然后第一个图和第二个图是什么关系公式相同还是什么? 看上去也不一样啊

回复://------------------------------------------------------------------------ // 简称: yma // 名称: 分时均线计算 // 类别: 用户函数 // 类型: 用户函数 // 输出: 数值型 //------------------------------------------------------------------------ Params //此处添加参数 Numeric length(10); Vars //此处添加变量 Numeric wtdsum(0); Numeric cumwt(0); Numeric i; Series<Numeric> tprice; Numeric length_(0); Begin //此处添加代码正文 tprice = (Close); length_ =(BarsSinceToday+1); for i= 0 to length_-1 { wtdsum = wtdsum + (vol[1]) * tprice[1]; cumwt = cumwt + (vol[1]); } Return wtdsum / cumwt ; End //------------------------------------------------------------------------ // 编译版本: 2025/08/26 200030 // 版权所有 wym5602096 // 更改声明 TradeBlazer Software保留对TradeBlazer平台 // 每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------

回复:yma 是自建函数,图片1是别人的,代码是一样的,只是我这没有信号,不知道是那里错了

yma()是什么?

回复://------------------------------------------------------------------------ // 简称: yma // 名称: 分时均线计算 // 类别: 用户函数 // 类型: 用户函数 // 输出: 数值型 //------------------------------------------------------------------------ Params //此处添加参数 Numeric length(10); Vars //此处添加变量 Numeric wtdsum(0); Numeric cumwt(0); Numeric i; Series<Numeric> tprice; Numeric length_(0); Begin //此处添加代码正文 tprice = (Close); length_ =(BarsSinceToday+1); for i= 0 to length_-1 { wtdsum = wtdsum + (vol[1]) * tprice[1]; cumwt = cumwt + (vol[1]); } Return wtdsum / cumwt ; End //------------------------------------------------------------------------ // 编译版本: 2025/08/26 200030 // 版权所有 wym5602096 // 更改声明 TradeBlazer Software保留对TradeBlazer平台 // 每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------

回复:yma 是自建函数,图片1是别人的,代码是一样的,只是我这没有信号,不知道是那里错了

回复:截图截全一点,什么品种都不知道。试过完全和别人一样的环境配置码

回复:终于可以了