我写了3个图层,1-2图层有副图,但副图只有在0图层显示的才正常,其它图层的副图画线都混到主图里显示了。请教老师如何修改,谢谢!
新建一个10分钟周期的任务加载本策略跨周期。
Params
Numeric EffRatioLength(10); // AMA自适应周期
Numeric FastAvgLength(2); // AMA短周期
Numeric SlowAvgLength(30); // AMA长周期
Numeric CCILength(15); // CCI周期
Numeric CCIover(100); // CCI天地线值
Numeric Length(14); // KD
Numeric SlowLength(3); // KD
Numeric SmoothLength(3); // KD
Vars
Global Bool IsRollover(True); //是否后复权
Global Bool IsRolloverRealPrice(True); //是否映射真实价格
Global Bool IsAutoSwapPosition(True); //是否自动换仓
Global Bool IgnoreSwapSiganlCalc(False); //是否忽略换仓信号计算
Series<Numeric> TmpValue; // CCI指标使用参数
Numeric Mean( 0 ); // CCI指标使用参数
Numeric AvgDev( 0 ); // CCI指标使用参数
Numeric Counter( 0 ); // CCI指标使用参数
Series<Numeric> CCIValue(0); // CCI值
Series<Numeric> HighestValue; // KD
Series<Numeric> LowestValue; // KD
Series<Numeric> KValue; // KD
Numeric SumHLValue; // KD
Numeric SumCLValue; // KD
Numeric DValue; // KD
Plot plt1; // 声明子画板1
Plot plt2; // 声明子画板2
Defs
//此处添加公式函数
Events
//此处实现事件函数
//初始化事件函数,策略运行期间,首先运行且只有一次
OnInit()
{
SubscribeBar(Data0.Symbol,"1H",Data0.BeginDateTime);
SubscribeBar(Data0.Symbol,"1D",Data0.BeginDateTime);
plt1.figure(0); // 设置子画板输出方式
plt1.setOption("MA1","x-format","time"); // 设置X轴
plt1.setOption("MA1","y-format","Numeric"); // 设置y轴
plt2.figure(0); // 设置子画板输出方式
Plt2.setOption("MA1","x-format","time"); // 设置X轴
Plt2.setOption("MA1","y-format","Numeric"); // 设置y轴
Range[0:DataCount-1]
{
If(IsRollover)
{
AddDataFlag(Enum_Data_RolloverBackWard());//设置后复权
}
If(IsRolloverRealPrice)
{
AddDataFlag(Enum_Data_RolloverRealPrice());//是否映射真实价格
}
If(IsAutoSwapPosition)
{
AddDataFlag(Enum_Data_AutoSwapPosition());//设置自动换仓
}
If(IgnoreSwapSiganlCalc)
{
AddDataFlag(Enum_Data_IgnoreSwapSignalCalc());//设置忽略换仓信号计算
}
}
}
OnBar(ArrayRef<Integer> indexs)
{
Range[0:0]
{
// 0图层子图显示KD
HighestValue = HighestFC(High, Length);
LowestValue = LowestFC(Low, Length);
SumHLValue = SummationFC(HighestValue-LowestValue,SlowLength);
SumCLValue = SummationFC(Close - LowestValue,SlowLength);
If(SumHLValue <> 0)
{
KValue = SumCLValue/SumHLValue*100;
}Else
{
KValue = 0;
}
DValue = AverageFC(KValue,SmoothLength);
plt1.line("K",Date+Time,KValue);
plt1.line("D",Date+Time,DValue);
plt1.line("Ref1",Date+Time,20);
plt1.line("Ref2",Date+Time,80);
}
Range[1:1]
{
// 1图层子图显示CCI
TmpValue = High + Low + Close;
Mean = AverageFC( TmpValue, CCILength ) ;
AvgDev = 0 ;
for Counter = 0 to CCILength - 1
{
AvgDev = AvgDev + Abs( TmpValue[Counter] - Mean ) ;
}
AvgDev = AvgDev / CCILength ;
if( AvgDev == 0) CCIValue = 0;
Else CCIValue = ( TmpValue - Mean ) / ( 0.015 * AvgDev ) ;
plt2.line("CCI",Date+Time,CCIValue);
plt2.line("OverBuy",Date+Time,CCIover);
plt2.line("OverSell",Date+Time,-1*CCIover);
}
Range[2:2]
{
// 2图层主图显示
PlotNumeric("AdpMa",AdaptiveMovAvg(Close,EffRatioLength,FastAvgLength,SlowAvgLength)); // AMA线
}
}
我来调试下
range[0:datasourcesize-1]
{
plt1.figure(0); // 设置子画板输出方式
plt1.setOption("MA1","x-format","time"); // 设置X轴
plt1.setOption("MA1","y-format","Numeric"); // 设置y轴
plt2.figure(0); // 设置子画板输出方式
Plt2.setOption("MA1","x-format","time"); // 设置X轴
Plt2.setOption("MA1","y-format","Numeric"); // 设置y轴
}
万分感谢
原来是这样的,谢谢啦!