after=7707=!=7705? 这个7707是哪来的?如果是在这个K线中途换月的话,为什么换月前的价格又是上一根收盘价?

//------------------------------------------------------------------------
// 简称: Trading_Range_Breakout_S
// 名称: 基于初始交易范围突破的思想来建立系统 做空
// 类别: 公式应用
// 类型: 内建应用
// 输出:
//------------------------------------------------------------------------
//------------------------------------------------------------------------
// 策略说明:
// 用特定时间周期内的最高价位和最低价位计算交易范围,然后计算真实的波动范围和周期内的ATR对比,如果
// 当前k线的波动范围比n*交易范围的值小,并且真实波动范围比ATR小,这就满足了前两个系统挂单的条件
//
// 入场条件:
// 1.7周期区间“空隙”之和 >7周期区间高度的2倍
// 当前的k线比交易范围的最高值大, 而且如果当前k线的中间价格高于之前一根k线的最高值
// 做多
// 2.7周期区间“空隙”之和 >7周期区间高度的2倍
// 当前的k线比交易范围的最低值小, 而且如果当前k线的中间价格低于之前一根k线的最低值
// 做空
// 出场条件:
// 1.初始止损
// 2.跟踪止损(盈利峰值价回落ATR的一定倍数)
// 3.收盘价创7周期高点,且K线中点高于前K线最高价空头出场
//
// 注: 当前策略仅为做空系统, 如需做多, 请参见CL_Trading_Range_Breakout_L
//----------------------------------------------------------------------//
Params
Numeric RangeLen(7); //高低点周期
Numeric RngPcnt(200); //周期区间高度倍数*100
Numeric ATRs(8); //盈利峰值价回落ATR
Numeric ATRLen(2);//盈利峰值价回落周期
Vars
Dic<Array<String>> FeData("TB_ROLLOVER_v2"); Series<String> roe;
Series<Numeric> RangeH(0); //7周期高点
Series<Numeric> RangeL(0); //7周期低点
Series<Numeric> TRange(0); //7周期区间
Series<Numeric> NoTrades(0); //记录7周期高低点分别与7周期内各K线最高最低值的距离之和
Series<Numeric> ShortRisk(0); //初始止损价
Series<Numeric> ShortLow(0); //跟踪止盈价
Series<Numeric> ATR; //2周期ATR均值
Series<Numeric> ATRMA; //7周期ATR均值
Numeric value1;
Series<Bool> Condition1;
Series<Bool> Condition2;
Series<Bool> Condition3;
Series<Bool> Condition4;
Events
OnInit()
{
Range[0:DataCount-1]
{
//=========数据源相关设置==============
//AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权
AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格
AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算
}
}
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataCount-1]
{
//if(FeData[0][1]<>InvalidNumeric)
roe=FeData[0][1]; //ROE在当前BAR的序列数组的第13个元素
Commentary("roe="+(roe));//Text
Commentary("after="+(FeData[0][2]));//Text
//初始设置
RangeH = Highest(High[1], RangeLen); PlotNumeric("RangeH", RangeH);
RangeL = Lowest(Low[1], RangeLen); PlotNumeric("RangeL", RangeL);
TRange = RangeH - RangeL;
ATR = AvgTrueRange(ATRLen);
NoTrades = 0;
ATRMA=AvgTrueRange(RangeLen); //7周期ATR均值
For value1 = 1 To RangeLen //1-7循环
{
//If (High[value1] <= RangeH ) 废话
NoTrades = NoTrades + (RangeH - High[value1]); //7周期高点与7周期内各K线最高值的距离之和
//If (Low[value1] >= RangeL ) 废话
NoTrades = NoTrades + (Low[value1] - RangeL); //7周期低点与7周期内各K线最低值的距离之和
}
Condition1 = NoTrades>= TRange*(RngPcnt*0.01);//7周期区间“空隙”之和 >7周期区间高度的2倍
Condition2 = TrueRange >ATRMA[1] ; //当根K线ATR>前根7周期均值
Condition3 = Close > Highest(High[1], RangeLen) And (High+Low)*0.5 >High[1];//收盘价创7周期高点,且K线中点高于前K线最高价
Condition4 = Close < Lowest(Low[1], RangeLen) And (High+Low)*0.5 < Low[1]; //收盘价创7周期低点,且K线中点低于前K线最低价
//空头入场
If (Condition1[1] And Condition2[1] )
{
If (Condition4[1] And MarketPosition==0 And vol > 0)
{
SellShort(0,Open);
ShortRisk = RangeH; //记录初始止损价
ShortLow = Low; //记录跟踪止盈价
}
}
//更新盈利峰值价
If(MarketPosition == -1 And BarsSinceEntry > 0) ShortLow = Min(ShortLow,Low);
//空头出场
If(MarketPosition == -1 And BarsSinceEntry > 0 And Vol > 0)
{
//收盘价创7周期高点且K线中点高于前K线最高价空头出场
If(Condition3[1])
{
BuyToCover(0,Open);
}
//突破初始止损价空头出场
If(High>=ShortRisk)
{
BuyToCover(0,Max(Open,ShortRisk));
}
//盈利峰值价回落ATR一定倍数空头出场
If(High>=ShortLow[1]+(ATRs*ATR[1]))
{
BuyToCover(0,Max(Open,ShortLow[1]+(ATRs*ATR[1])));
}
}
}
}
//------------------------------------------------------------------------
// 编译版本 GS2014.10.25
// 版权所有 TradeBlazer Software 2003-2025
// 更改声明 TradeBlazer Software保留对TradeBlazer平
// 台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------换月当然是按日的,不存在盘中换月

这个数据中心不是有说明吗?


所以7707是日线收盘价,这个数据中心可没说是日线