跨周期失败,老师帮我看看,谢谢

请老师帮我看看这个策略,编译没有错误,但是没有交易信号,跨周期调用数据没用,能帮我修改下吗,谢谢!



这是一个30分钟主周期和日线,5分钟周期的3周期策略

做多进场条件:1,日线周期MACD处于零线上方。2,30分钟周期金叉的当跟K线立即进场。

做多平仓条件:5分钟周期MACD死叉立即平仓

做空进场条件:1,日线周期MACD处于零线下方。2,30分钟周期死叉的当跟K线立即进场。

做空平仓条件:5分钟周期MACD金叉立即平仓

仓位控制:每次进场买2手


//------------------------------------------------------------------------

// 简称: MACD_DualCycle

// 名称: 30分钟日线双周期MACD策略

// 类别: 策略应用

// 类型: 内建应用

// 说明: 本策略在30分钟周期上运行,调用5分钟和日线周期数据

//       - 主周期:30分钟(在策略单元界面添加)

//       - 次周期:5分钟(在策略单元界面添加)

//       - 大周期:日线(在策略单元界面添加)

//------------------------------------------------------------------------


Params

   Numeric FastLength(12);        // MACD快线周期

   Numeric SlowLength(26);        // MACD慢线周期

   Numeric SignalLength(9);       // MACD信号线周期

   Numeric PositionSize(2);       // 每次进场手数


Vars

   // 30分钟周期MACD变量(主周期)

   Series<Numeric> Min30MACD;     // 30分钟MACD

   Series<Numeric> Min30MACDAvg;  // 30分钟MACD信号线

   Series<Numeric> Min30MACDDiff; // 30分钟MACD差值

   

   // 5分钟周期MACD变量

   Series<Numeric> Min5MACD;      // 5分钟MACD

   Series<Numeric> Min5MACDAvg;   // 5分钟MACD信号线

   Series<Numeric> Min5MACDDiff;  // 5分钟MACD差值

   

   // 日线周期MACD变量

   Series<Numeric> DayMACD;       // 日线MACD

   Series<Numeric> DayMACDAvg;    // 日线MACD信号线

   Series<Numeric> DayMACDDiff;   // 日线MACD差值

   

   // 交易变量

   Numeric EntryPrice;            // 入场价格


Events

   OnInit()

   {

       Commentary("OnInit: 策略初始化完成");

   }


   OnBar(ArrayRef<Integer> indexs)

   {

       // 计算30分钟MACD (主周期)

       Min30MACD = AverageFC(Close, FastLength) - AverageFC(Close, SlowLength);

       Min30MACDAvg = AverageFC(Min30MACD, SignalLength);

       Min30MACDDiff = Min30MACD - Min30MACDAvg;

       

       // 临时解决方案:先检查数据源是否可用

       If(Data1.Close > 0)

       {

           // 计算5分钟MACD (使用Data1)

           Min5MACD = Data1.AverageFC(Data1.Close, FastLength) - Data1.AverageFC(Data1.Close, SlowLength);

           Min5MACDAvg = Data1.AverageFC(Min5MACD, SignalLength);

           Min5MACDDiff = Min5MACD - Min5MACDAvg;

       }

       Else

       {

           // 如果5分钟数据源不可用,使用30分钟数据作为替代

           Min5MACD = Min30MACD;

           Min5MACDAvg = Min30MACDAvg;

           Min5MACDDiff = Min30MACDDiff;

           Commentary("警告:5分钟数据源不可用,使用30分钟数据作为替代");

       }

       

       If(Data2.Close > 0)

       {

           // 计算日线MACD (使用Data2)

           DayMACD = Data2.AverageFC(Data2.Close, FastLength) - Data2.AverageFC(Data2.Close, SlowLength);

           DayMACDAvg = Data2.AverageFC(DayMACD, SignalLength);

           DayMACDDiff = DayMACD - DayMACDAvg;

       }

       Else

       {

           // 如果日线数据源不可用,使用30分钟数据作为替代

           DayMACD = Min30MACD;

           DayMACDAvg = Min30MACDAvg;

           DayMACDDiff = Min30MACDDiff;

           Commentary("警告:日线数据源不可用,使用30分钟数据作为替代");

       }

       

       // 绘制30分钟周期MACD指标线(在独立指标区域)

       PlotNumeric("MACD", Min30MACD);

       PlotNumeric("MACD_Signal", Min30MACDAvg);

       PlotNumeric("MACD_Zero", 0);

       

       // 调试输出

       Commentary("日线MACD:" + Text(DayMACDDiff) + ", 30分钟MACD:" + Text(Min30MACDDiff) + ", 5分钟MACD:" + Text(Min5MACDDiff));

       Commentary("持仓状态:" + Text(MarketPosition) + ", 日线价格:" + Text(Data2.Close) + ", 30分钟价格:" + Text(Close) + ", 5分钟价格:" + Text(Data1.Close));

       Commentary("日线MACD>0:" + IIFString(DayMACDDiff > 0, "True", "False") + ", 日线MACD<0:" + IIFString(DayMACDDiff < 0, "True", "False"));

       

       // 数据源检查

       If(CurrentBar == 1)

       {

           Commentary("策略启动 - 数据源检查");

           Commentary("日线数据源正常:" + IIFString(Data2.Close > 0, "True", "False"));

           Commentary("30分钟数据源正常:" + IIFString(Close > 0, "True", "False"));

           Commentary("5分钟数据源正常:" + IIFString(Data1.Close > 0, "True", "False"));

       }

       

       // 检查金叉死叉信号(当根K线判断)

       Bool Min30GoldCross = Min30MACDDiff > 0 And Min30MACDDiff[1] <= 0;

       Bool Min30DeadCross = Min30MACDDiff < 0 And Min30MACDDiff[1] >= 0;

       Bool Min5GoldCross = Min5MACDDiff > 0 And Min5MACDDiff[1] <= 0;

       Bool Min5DeadCross = Min5MACDDiff < 0 And Min5MACDDiff[1] >= 0;

       Commentary("30分钟金叉:" + IIFString(Min30GoldCross, "True", "False") + ", 30分钟死叉:" + IIFString(Min30DeadCross, "True", "False"));

       Commentary("5分钟金叉:" + IIFString(Min5GoldCross, "True", "False") + ", 5分钟死叉:" + IIFString(Min5DeadCross, "True", "False"));

       

       // 交易逻辑 - 先检查平仓,再检查开仓

       // 持仓状态 - 优先检查5分钟平仓信号

       If(MarketPosition > 0)  // 多仓状态

       {

           // 多仓平仓条件:5分钟周期MACD死叉立即平仓

           If(Min5DeadCross)

           {

               Sell(0, Close);  // 平掉所有多仓

               Commentary("多仓平仓(5分钟死叉),手数:" + Text(MarketPosition) + ", 价格:" + Text(Close));

           }

       }

       Else If(MarketPosition < 0)  // 空仓状态

       {

           // 空仓平仓条件:5分钟周期MACD金叉立即平仓

           If(Min5GoldCross)

           {

               BuyToCover(0, Close);  // 平掉所有空仓

               Commentary("空仓平仓(5分钟金叉),手数:" + Text(-MarketPosition) + ", 价格:" + Text(Close));

           }

       }

       Else  // 空仓状态 - 检查开仓信号

       {

           // 做多进场条件

           // 1. 日线周期MACD处于零线上方

           // 2. 30分钟周期金叉的当根K线立即进场

           If(DayMACDDiff > 0 And Min30GoldCross)

           {

               EntryPrice = Close;

               Buy(PositionSize, Open);

               Commentary("做多进场,价格:" + Text(EntryPrice));

           }

           // 做空进场条件

           // 1. 日线周期MACD处于零线下方

           // 2. 30分钟周期死叉的当根K线立即进场

           Else If(DayMACDDiff < 0 And Min30DeadCross)

           {

               EntryPrice = Close;

               SellShort(PositionSize, Open);

               Commentary("做空进场,价格:" + Text(EntryPrice));

           }

           

           // 调试:检查每个条件

           Commentary("开仓条件检查 - 日线MACD>0:" + IIFString(DayMACDDiff > 0, "True", "False") +

                     ", 30分钟金叉:" + IIFString(Min30GoldCross, "True", "False") +

                     ", 30分钟死叉:" + IIFString(Min30DeadCross, "True", "False"));

       }

   }

//------------------------------------------------------------------------

// 编译版本    GS2010.12.08

// 版权所有    TradeBlazer Software 2003-2025

// 更改声明    TradeBlazer Software保留对TradeBlazer平

//            台每一版本的TradeBlazer公式修改和重写的权利

//------------------------------------------------------------------------



跨周期的问题那位老师帮我看看
老师,帮我看看这个怎么转换,谢谢
请老师帮我看看写的策略不能交易,谢谢!
老师,麻烦你帮我看看这个是怎么回事呢?
请老师帮我看看这个代码
请老师帮我看看这个错在哪里?
关于跨周期的问题
请老师看看这段代码是啥意思?谢谢了
跨周期帮忙写
跨周期运行不了

这个发付费代写区去