跨周期问题

我在尝试使用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;             // 做空信号


Events

OnInit()

{

   // 订阅不同周期的数据,先订阅大周期

   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));

   }

}

跨周期问题
请教TB跨周期问题
跨周期问题
关于策略选股里面,选股公式,跨周期问题
TB跨周期问题,为了避免引入未来数据,是否会系统性的延迟一根K线
跨周期函数
持仓时间等问题
关于跨周期的问题
关于跨周期的问题
跨周期模型回测问题

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


代码问题很多

1、如果直接品种K线图表加载

D0/D1就不是订阅,是SET成5分钟/1分钟

否则就有四个数据源,代码应该操作D2/D3

2、如果是设置策略单元

D0/D1要么手工直接设置

要么把操作品种作为公式参数再订阅

否则订阅谁?

3、close是未来函数,肯定闪烁


……

不一一列举了

还是先看看老师的视频

一步步慢慢来

🤣