新旧版本两个布林通道模型的对比

我2021年之前长期使用交易开拓者旗舰版,2022年后转用文华,现在准备改回交易开拓者进行交易,发现平台已经更新到V3,重新写了一遍模型,发现止盈条件方面在输出结果的时候有不同的地方,请教两个版本的异同。下面第一个是V3版本的模型,第二个是交易开拓者旗舰版的模型。V3版本模型: //------------------------------------------------------------------------ // 简称: BollingerBandit_Multi_WithStop // 名称: 布林强盗_多空合并版(带止盈) // 类别: 策略应用 // 类型: 内建应用 // 输出: //------------------------------------------------------------------------ /* 策略说明: 基于布林通道的多空突破系统,增加止盈条件 止盈机制: 开仓后动态跟踪价格高低点,突破反向边界时平仓 修改要点: 1. 声明开仓后最高价/最低价序列变量 2. 开仓时初始化高低点 3. 持仓期间更新高低点 4. 增加高低点突破平仓条件 */ Params Numeric bollingerLengths(35); // 布林通道周期 Numeric Offset(1.25); // 通道宽度系数 Numeric StdDevDown(1.0); // 止盈标准差倍数(新增参数)[1](@ref) Numeric Lots(0); // 交易手数 Vars Series<Numeric> MidLine; // 布林通道中轨 Numeric Band(0); Series<Numeric> upBand; // 布林通道上轨 Series<Numeric> dnBand; // 布林通道下轨 Series<Numeric> HighAfterEntry; // 开仓后最高价(新增)[citation:用户消息] Series<Numeric> LowAfterEntry; // 开仓后最低价(新增)[citation:用户消息] Events OnReady() { Range[0:DataSourceSize() - 1] { setPlotOption("MidLine", "begin-bar", bollingerLengths); setPlotOption("upBand", "begin-bar", bollingerLengths); setPlotOption("dnBand", "begin-bar", bollingerLengths); } } OnBar(ArrayRef<Integer> indexs) { // 布林通道计算(使用前值) MidLine = AverageFC(Close[1], bollingerLengths); Band = StandardDev(Close[1], bollingerLengths, 2); upBand = MidLine + Offset * Band; dnBand = MidLine - Offset * Band; // 画布林通道 PlotNumeric("MidLine", MidLine); PlotNumeric("upBand", upBand); PlotNumeric("dnBand", dnBand); //=== 动态止盈轨计算(新增模块)=== [citation:用户消息] If (BarsSinceEntry == 0) // 开仓当根K线 { // 初始化:基于开仓时中轨和标准差设定止盈轨道 HighAfterEntry = MidLine + 8 * Band; LowAfterEntry = MidLine - 8* Band; } PlotNumeric("HighAfterEntry", HighAfterEntry); PlotNumeric("LowAfterEntry", LowAfterEntry); //=== 开仓逻辑(检测上根K线条件)=== // 多单开仓:上根K线突破上轨 If(MarketPosition != 1 && CrossOver(Close[1], upBand[1]) ) { Buy(Lots, Open); // 以下根K线开盘价执行 } // 空单开仓:上根K线突破下轨 If(MarketPosition != -1 && CrossUnder(Close[1],dnBand[1]) ) { SellShort(Lots, Open); // 以下根K线开盘价执行 } //=== 平仓逻辑(检测上根K线条件)=== // 原有平仓:多单平仓(回归中轨) If(MarketPosition == 1 && BarsSinceEntry >= 1 && Close[1] <= MidLine ) Sell(0, Open); // 以下根K线开盘价执行 // 原有平仓:空单平仓(回归中轨) If(MarketPosition == -1 && BarsSinceEntry >= 1 && Close[1] >= MidLine ) BuyToCover(0, Open); // 以下根K线开盘价执行 //=== 新增止盈平仓(检测上根K线条件)=== [citation:用户消息] // 多单止盈:价格跌破开仓后最低轨道 If(MarketPosition == -1 && BarsSinceEntry >= 1 && Close[1] <= LowAfterEntry[1]) BuyToCover(0, Open); // 空单止盈:价格突破开仓后最高轨道 If(MarketPosition == 1 && BarsSinceEntry >= 1 && Close[1] >= HighAfterEntry[1]) sell(0, Open); }开拓者旗舰版模型://------------------------------------------------------------------------ // 简称: BOLLGAI // 名称: // 类别: 公式应用 // 类型: 用户应用 // 输出: //------------------------------------------------------------------------ Params//参数区 Numeric Length(300);//均线参数 Numeric StdDevUp(1.5);//上下轨标准差参数 Numeric StdDevDowm(8);//上下轨标准差参数 Numeric Lots1(1);//交易手数 Numeric Lots2(2);//交易手数 Vars//变量 NumericSeries UpperBand;//上轨 NumericSeries LowerBand;//下轨 NumericSeries AveMa;//均线 Numeric StdValue;//标准差 NumericSeries HighAfterEntry; // 开仓后出现的最高价 NumericSeries LowAfterEntry; // 开仓后出现的最低价 NumericSeries Opelong;//长持仓量 NumericSeries Opeshort;//短持仓量 Begin //过滤集合竞价 If(!CallAuctionFilter()) return; AveMa=Average(Close[1],Length);//均线 StdValue = StandardDev(Close[1],Length);//标准差 Opelong=Average(OpenInt[1],300);//长持仓量 Opeshort=Average(OpenInt[1],150);//短持仓量 UpperBand=Avema+StdDevUp*StdValue;//上轨 LowerBand=Avema-StdDevUp*StdValue;//下轨 PlotNumeric("UpperBand",UpperBand);//上轨划线 PlotNumeric("LowerBand",LowerBand);//下轨划线 PlotNumeric("AveMa",AveMa);//均线 //满足条件进行交易 If(MarketPosition!=1 &&CrossOver(Close[1],UpperBand[1]) && Opelong<Opeshort) { Buy(Lots2,Open); } If(MarketPosition!=1 &&CrossOver(Close[1],UpperBand[1]) && Opelong>Opeshort) { Buy(Lots1,Open); } If(MarketPosition!=-1 &&CrossUnder(Close[1],LowerBand[1]) && Opelong<Opeshort ) { SellShort(Lots2,Open);} If(MarketPosition!=-1 &&CrossUnder(Close[1],LowerBand[1]) && Opelong>Opeshort ) { SellShort(Lots1,Open);} If(MarketPosition==1 && Close[1]<AveMa[1] ) { Sell(0,Open); } If(MarketPosition==-1 && Close[1]>AveMa[1]) { BuyToCover(0,Open);} //记录开仓后高低点 If(BarsSinceentry == 1) { HighAfterEntry = Avema[1]+StdDevDowm*StdValue; LowAfterEntry = Avema[1]-StdDevDowm*StdValue; } If(MarketPosition==1 && Close[1]> HighAfterEntry[1] && BarsSinceentry >1) { Sell(0,Open); } If(MarketPosition==-1 && Close[1]<LowAfterEntry[1] && BarsSinceentry >1) { BuyToCover(0,Open);} PlotNumeric("HighAfterEntry",HighAfterEntry);//上轨划线 PlotNumeric("LowAfterEntry",LowAfterEntry);//下轨划线 End //------------------------------------------------------------------------ //------------------------------------------------------------------------ // 编译版本 GS2015.12.25 // 用户版本 2023/06/24 09:16:49 // 版权所有 gjqh85330520 // 更改声明 TradeBlazer Software保留对TradeBlazer平台 // 每一版本的TradeBlazer公式修改和重写的权利 //------------------------------------------------------------------------

TBQ没有TB好用。研究了几天TBQ还是放弃了。

回复:新产品肯定是优于老产品的

另外每个指标的参数周期你确定一致么?

回复:参数这个是可以调整的,但理论上止盈条件是开仓当根K线布林中轨的八倍标准差,也就是理论上开仓后止盈条件不会随着价格变化而变化但这个实现这个结果

回复:?什么意思?

回复:

回复:你这个图你想说什么什么问题呢?我看到开仓以后,这个绿线白线确实都没有变化了呀?不是直到平仓了才变化吗?

回复:好几个问题了,怎么感觉完全不知道你在问什么呢?你能仔细确认一下你的问题吗?

你这两个计算标准差的不一样一个是总体标准差,一个是样本标准差