hi 我的目的是想在3个图层 [0] [1] [2] 分别画 i2509的5m、30m 、日线周期 对应的分别的10、20、60日均线 但是只画了30m周期的 5m和日线的对应的10/20、日线没看见 即看到1个图层的代码 麻烦帮忙看一下代码 非常感谢
Params
string mysymbol("i2509.DCE"); // 玻璃2509合约,这里假设在上海期货交易所,具体交易所代码需根据实际情况调整
Numeric fastLength(10); // 快速均线周期
Numeric slowLength1(20); // 慢速均线1周期
Numeric slowLength2(60); // 慢速均线2周期
Numeric lots(1); // 交易手数
Numeric stopLossPercentage(0.005); // 止损百分比
Vars
series<Numeric> maFast;
series<Numeric> maSlow1;
series<Numeric> maSlow2;
series<Numeric> ruchangjia;
series<Numeric> chuchangjia;
series<Numeric> profits;
Events
// 初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
OnInit()
{
// 订阅5分钟周期数据,从20250101开始
SubscribeBar(mysymbol, "5m", 20250101);
// 订阅30分钟周期数据,从20250101开始
SubscribeBar(mysymbol, "30m", 20250101);
// 订阅日线周期数据,从20250101开始
SubscribeBar(mysymbol, "1d", 20250101);
}
OnBar(ArrayRef<Integer> indexs)
{
// 计算5分钟周期的均线
data[0].maFast = data[0].Average(data[0].close, fastLength);
data[0].maSlow1 = data[0].Average(data[0].close, slowLength1);
data[0].maSlow2 = data[0].Average(data[0].close, slowLength2);
// 计算30分钟周期的均线
data[1].maFast = data[1].Average(data[1].close, fastLength);
data[1].maSlow1 = data[1].Average(data[1].close, slowLength1);
data[1].maSlow2 = data[1].Average(data[1].close, slowLength2);
// 计算日线周期的均线
data[2].maFast = data[2].Average(data[2].close, fastLength);
data[2].maSlow1 = data[2].Average(data[2].close, slowLength1);
data[2].maSlow2 = data[2].Average(data[2].close, slowLength2);
// 在5分钟图层绘制5分钟周期的均线
data[0].PlotNumeric("maFast_5m", data[0].maFast);
data[0].PlotNumeric("maSlow1_5m", data[0].maSlow1);
data[0].PlotNumeric("maSlow2_5m", data[0].maSlow2);
// 在30分钟图层绘制30分钟周期的均线
data[1].PlotNumeric("maFast_30m", data[1].maFast);
data[1].PlotNumeric("maSlow1_30m", data[1].maSlow1);
data[1].PlotNumeric("maSlow2_30m", data[1].maSlow2);
// 在日线图层绘制日线周期的均线
data[2].PlotNumeric("maFast_d", data[2].maFast);
data[2].PlotNumeric("maSlow1_d", data[2].maSlow1);
data[2].PlotNumeric("maSlow2_d", data[2].maSlow2);
好有耐心的同学!
多图层可以用range自动在每个图层画
把你的计算和画图换成下面这个代码
如果你想进一步知道每个图层的数据提取以及跨周期画图,可以看这个视频: https://video.tbquant.net/video?id=video432
Range[0:DataSourceSize() - 1]
{
maFast = Average(close, fastLength);
maSlow1 = Average(close, slowLength1);
maSlow2 = Average(close, slowLength2);
PlotNumeric("maFast",maFast);
PlotNumeric("maSlow1",maSlow1);
PlotNumeric("maSlow2",maSlow2);
}谢谢!
可以