跨周期问题

我在尝试使用5分钟K线生成交易信号,然后在1分钟K线上找交易点,但是运行起来却读不出数据,麻烦帮忙检查下原因,到底是代码有问题,还是我操作的不对,具体代码如下:Params Numeric boll_period(20); // 布林带周期Vars Series<Numeric> boll_mid5; // 5分钟布林带中轨 Series<Numeric> boll_up5; // 5分钟布林带上轨 Series<Numeric> boll_dn5; // 5分钟布林带下轨 Series<Numeric> boll_mid1; // 1分钟布林带中轨 Series<Numeric> boll_up1; // 1分钟布林带上轨 Series<Numeric> boll_dn1; // 1分钟布林带下轨 Bool signal_short; // 做空信号EventsOnInit(){ // 订阅不同周期的数据,先订阅大周期 SubscribeBar(Symbol, "5m"); // Data0: 5分钟 SubscribeBar(Symbol, "1m"); // Data1: 1分钟 Range[0:DataCount-1] { //=========除权换月相关设置============== AddDataFlag(Enum_Data_RolloverBackWard()); //设置后复权 AddDataFlag(Enum_Data_RolloverRealPrice()); //设置映射真实价格 AddDataFlag(Enum_Data_AutoSwapPosition()); //设置自动换仓 AddDataFlag(Enum_Data_IgnoreSwapSignalCalc()); //设置忽略换仓信号计算 } //=========交易相关设置============== SetInitCapital(1000000); // 设置初始资金100万 SetMarginRate(0.1); // 设置保证金率 SetBeginBarMaxCount(100); // 设置初始化K线数量}OnBar(ArrayRef<Integer> indexs){ // 计算5分钟布林带 Range[0:0] { boll_mid5 = Average(Data0.Close, boll_period); boll_up5 = Highest(Data0.High, boll_period); boll_dn5 = Lowest(Data0.Low, boll_period); // 绘制5分钟布林带 PlotNumeric("boll_mid5", boll_mid5); PlotNumeric("boll_up5", boll_up5); PlotNumeric("boll_dn5", boll_dn5); // 判断K线是否突破上轨 signal_short = (High > boll_up5); Commentary("5分钟布林带上轨="+Text(boll_up5)); } // 在1分钟周期执行交易 Range[1:1] { // 计算1分钟布林带 boll_mid1 = Average(Close, boll_period); // 当前周期可以直接用Close boll_up1 = Highest(High, boll_period); boll_dn1 = Lowest(Low, boll_period); // 绘制1分钟布林带 PlotNumeric("boll_mid1", boll_mid1); PlotNumeric("boll_up1", boll_up1); PlotNumeric("boll_dn1", boll_dn1); // 开仓条件:5分钟有信号且1分钟突破上轨 If(MarketPosition == 0) // 无持仓时 { If(signal_short And High > boll_up1) { SellShort(1, Close); // 做空1手 Commentary("开仓:5分钟突破,1分钟确认"); } } // 平仓条件:1分钟回归中轨 If(MarketPosition < 0) // 持有空单 { If(Close <= boll_mid1) { BuyToCover(1, Close); Commentary("平仓:回归中轨"); } } // 输出信号信息 Commentary("signal_short="+IIFString(signal_short,"True","False")); Commentary("1分钟布林带上轨="+Text(boll_up1)); }}

要分析代码看置顶帖的投稿。

代码问题很多1、如果直接品种K线图表加载D0/D1就不是订阅,是SET成5分钟/1分钟否则就有四个数据源,代码应该操作D2/D32、如果是设置策略单元D0/D1要么手工直接设置要么把操作品种作为公式参数再订阅否则订阅谁?3、close是未来函数,肯定闪烁……不一一列举了还是先看看老师的视频一步步慢慢来

回复:🤣