请教编程问题
老师好,我想请教下,我本来想查看下我写的程序里面的止盈情况,用plotbool来标记出来,但问题却是有很多地方都标出来,有些地方我对比过数据应该有信号却没有,想请教下,问题出在哪里? //------------------------------------------------------------------------ // 简称: // 名称: // 类别: 公式应用 // 类型: 用户应用 // 输出: Void //------------------------------------------------------------------------ Params Numeric fastlength1(13);//快线周期 Numeric slowlength1(27);//慢线周期 Numeric lots(2);//手数 Numeric n(8);//均线 numeric long_TakeProfitSet(0.07); Numeric long_stoploss(300); numeric short_stoploss(300); Vars Numeric FastLength(12); Numeric SlowLength(26); Numeric MACDLength(9); Series<Numeric> MACDDiff; series<Numeric> AvgMACD; series<Numeric> MACDValue; bool golden(false); bool ending(false); bool upDiff(false); bool dnDiff(false); bool con_down(false); bool upvalue(false); bool dnvalue(false); series<Numeric> ma; Numeric TR; Numeric MinPoint; Numeric MyEntryPrice; series<Numeric> status; Events OnInit() { AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 } OnBar(ArrayRef<Integer> indexs) { Range[0:DataSourceSize() - 1] { MACDDiff = xAverage(Close, FastLength ) - xAverage(Close, SlowLength ) ; AvgMACD = XAverage(MACDDiff,MACDLength); MACDValue = 2*(MACDDiff - AvgMACD); ma = Average(close,n); PlotNumeric ("ma",ma); golden = CrossOver(MACDDiff,AvgMACD); ending = CrossUnder(MACDDiff,AvgMACD); ////////////////////////////////////////////////////////////////////////////////// upDiff = MACDDiff > MACDDiff[1]; //DIFF做多信号 dnDiff = MACDDiff < MACDDiff[1]; //DIFF做空信号 upvalue = MACDVALUE > MACDVALUE[1] ; //macd做多信号 dnvalue = MACDVALUE < MACDVALUE[1]; //macd做空信号 MyEntryPrice = AvgEntryPrice; MinPoint = MinMove * PriceScale; TR= High - Low; Commentary("TR = " + text(TR)); //////////////////////////////////////////////////////////////////// If ( high >= round( AvgEntryPrice * (1 + long_TakeProfitSet),0)) //满足多头固定止盈条件平仓 { sell(0 ,Round(AvgEntryPrice * (1 + Long_TakeProfitSet),0)); PlotBool("止赢",true,close); } If ( low <= round( AvgEntryPrice * (1 - long_TakeProfitSet),0)) //满足空头固定止盈条件平仓 { BuyToCover(0 ,Round(AvgEntryPrice * (1 - Long_TakeProfitSet),0)); } if(BarsSinceEntry>=1 and close < ma and MarketPosition == 1) //多头反向突破均线止损离场 { Sell(lots,close); } if(BarsSinceEntry>=1 and close > ma and MarketPosition == -1)//空头反向突破均线止损离场 { BuyToCover(lots,close); } if(MarketPosition == 1 and low <= AvgEntryPrice- long_stoploss) Sell(lots,AvgEntryPrice- long_stoploss); if(MarketPosition == -1 and high >= AvgEntryPrice + short_stoploss) { BuyToCover(lots,AvgEntryPrice + short_stoploss); //PlotBool("止损",true,close); } if (avgmacd >0 and upvalue and close > ma and MarketPosition != 1 ) //多头开仓条件 { buy(lots ,close); } if (avgmacd <0 and dnvalue and close < ma and MarketPosition != -1 ) //空头开仓条件 { sellshort(lots ,close); } } } //------------------------------------------------------------------------ // 编译版本 2022/01/09 173139 // 版权所有 20220106181726058 // 更改声明 TradeBlazer Software保留对TradeBlazer平台 // 每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------