策略 代码 老出问题。给看看。

// 定义参数和变量

Params

   Numeric Length_SmallPeriod(50);  // 小周期的高低价通道周期              

   Numeric Amount_ATR(5);  // 多少个ATR作为趋势标准

   Numeric Avg_Period(100);  // 指定AvgATR的过去周期数

   Numeric Trace_Back_Period(100);  // 收盘价回溯周期

   Numeric Risk_Percentage(2);  // 每笔交易的风险百分比(例如2%)

Vars

   Numeric Lots(1);

   Series<Numeric> Slips;

   Numeric TimeFrame(60);  // 目标时间周期参数

   Numeric BarsBack(1);  // 目标时间周期BAR偏移

   Series<Numeric> mtBarCnt;

   Series<Numeric> iHigh;

   Series<Numeric> iLow;

   Series<Numeric> iClose;

   Series<Numeric> iCurbar;

   Series<Numeric> Holding;

   Series<Numeric> XJ;

   Series<Numeric> HH;

   Series<Numeric> LL;

   Series<Numeric> MA_HL;

   Series<Numeric> ZG;

   Series<Numeric> ATR;

   Series<Numeric> GD;

   Series<Numeric> DD;

   Series<Numeric> SG;

   Series<Numeric> XG;

   Series<Numeric> SG2;

   Series<Numeric> XG2;

   Series<Numeric> DP;

   Series<Numeric> KP;    

   Series<Bool> KD;

   Series<Bool> PD;

   Series<Bool> KK;

   Series<Bool> PK;

   // ATR跟踪止盈

   Series<Numeric> ATR_2024;  // 上涨波动指标

   Series<Numeric> AvgATR;  // 过去指定周期内的平均波动

   Series<Numeric> Close_Minors_AvgATR;  // 上涨中ATR下限

   Series<Numeric> Close_Adds_AvgATR;  // 下跌中ATR上限

   Numeric i;

   Numeric k;

   // 平仓全局变量说明

   // Var(0): 开仓价格

   // Var(1): 最新止盈价格

   // Var(2): 开仓后的趋势新高/低

   // Var(3): 止盈价格可变(0:不可变,1:可变)

   // Var(4): 止损价格

Events

   onBar(ArrayRef<Integer> indexs)

   {    

       /* ATR: 确定ATR跟踪线 --------------------------------------------- */

       ATR_2024 = Max(High, Close[1]) - Min(Low, Close[1]);

       AvgATR = Average(ATR_2024, Avg_Period);

       Close_Minors_AvgATR = Close - Amount_ATR * AvgATR;

       Close_Adds_AvgATR = Close + Amount_ATR * AvgATR;

       // 上涨趋势的ATR下限

       k = Highest(Close_Minors_AvgATR, Trace_Back_Period);

       If (Close_Minors_AvgATR <= k) {

           Close_Minors_AvgATR = k;

       }

       // 下跌趋势的ATR上限

       k = Lowest(Close_Adds_AvgATR, Trace_Back_Period);

       If (Close_Adds_AvgATR >= k) {

           Close_Adds_AvgATR = k;

       }

       // 输出ATR区间

       If (Close > Close_Minors_AvgATR)

           PlotNumeric(\"A1\", Close_Minors_AvgATR, 0, Green);

       If (Close < Close_Adds_AvgATR)

           PlotNumeric(\"A2\", Close_Adds_AvgATR, 0, Yellow);

       /* ---------------------------------------------------------------- */

       // 添加长期移动平均线来判断趋势

       Series<Numeric> MA_Long = Average(Close, 200);  // 例如200周期的移动平均线

       // 计算小周期数据

       mtBarCnt = k_Bar(TimeFrame, BarsBack);  // 调用跨周期基础函数

       iHigh = k_Bar(TimeFrame, \"High\");  // 读取跨周期BAR数据

       iLow = k_Bar(TimeFrame, \"Low\");  // 读取跨周期BAR数据

       iClose = k_Bar(TimeFrame, \"Close\");  // 读取跨周期BAR数据

       iCurbar = k_Bar(TimeFrame, \"curbar\");  // 读取跨周期BAR数据

       HH = Highest(High, Length_SmallPeriod);

       LL = Lowest(Low, Length_SmallPeriod);

       MA_HL = Average(High - Low, Length_SmallPeriod);

       if (CurrentBar == 0) XJ = Close;

       ZG = (HH + LL) / 2;

       ATR = MA_HL * 5;

       GD = HH;

       DD = LL;

       SG = ZG;

       XG = ZG;

       SG2 = MAX(GD, SG);

       XG2 = MIN(DD, XG);

       DP = MAX(ZG, XJ - ATR);

       KP = MIN(ZG, XJ + ATR);  

       KD = Holding == 0 AND H >= SG2[1];  // BK买开

       PD = Holding > 0 AND L <= DP[1];  // SP卖平

       KK = Holding == 0 AND L <= XG2[1];  // SK卖开

       PK = Holding < 0 AND H >= KP[1];  // BP买平

       If (CurrentBar < Length_SmallPeriod) Return;  

       IF (PD) {

           XJ = MIN(O, DP[1]);

           // 此段仅进行止损平仓

           If (XJ <= GetGlobalVar(0)) {

               Sell(0, XJ);

               Holding = 0;

               SetGlobalVar(0, 0);

               SetGlobalVar(1, 0);

               SetGlobalVar(3, 0);

           }

       }

       /* ATR: ATR多单止盈平仓 ------------------------------------------- */

       If (Holding > 0) {

           If (High > GetGlobalVar(2)) {

               SetGlobalVar(2, High);

               SetGlobalVar(3, 1);

           }

           If (Low[1] < Close_Minors_AvgATR[1] and Low[1] > GetGlobalVar(1) and GetGlobalVar(3) > 0) {

               SetGlobalVar(1, Low[1]);

               SetGlobalVar(3, 0);

           }

           If (Low < GetGlobalVar(1) and GetGlobalVar(0) < GetGlobalVar(1)) {

               Sell(0, Min(GetGlobalVar(1) - MinMove * PriceScale, Open));

               Holding = 0;

               SetGlobalVar(0, 0);

               SetGlobalVar(1, 0);

           }

       }

       /* ---------------------------------------------------------------- */

      IF (KD and Close > MA_Long){

     XJ = MAX(O, SG2[1]);

     Lots = Max(1, IntPart(30000 / (XJ * ContractUnit * BigPointValue * 0.1)));  // 开仓手数以3万保证金计算,假设每个品种的保证金率都为10%

     Buy(Lots, XJ);

     Holding = 1;

           SetGlobalVar(0, XJ);

           SetGlobalVar(1, 0);

           SetGlobalVar(2, High);

           SetGlobalVar(3, 0);

           // 设置动态止损

           SetGlobalVar(4, XJ - 2 * ATR);

       }

       IF (PK) {

           XJ = MAX(O, KP[1]);

           // 此段仅进行止损平仓

           If (XJ >= GetGlobalVar(0)) {

               BuyToCover(0, XJ);

               Holding = 0;

               SetGlobalVar(0, 0);

               SetGlobalVar(1, 0);

               SetGlobalVar(3, 0);

           }

       }

       /* ATR: ATR空单止盈平仓 ------------------------------------------- */

       If (Holding < 0) {

           If (Low < GetGlobalVar(2)) {

               SetGlobalVar(2, Low);

               SetGlobalVar(3, 1);

           }

           If (High[1] > Close_Adds_AvgATR[1] and High[1] < GetGlobalVar(1) and GetGlobalVar(3) > 0) {

               SetGlobalVar(1, High[1]);

               SetGlobalVar(3, 0);

           }

           If (High > GetGlobalVar(1) and GetGlobalVar(0) > GetGlobalVar(1)) {

               BuyToCover(0, Max(GetGlobalVar(1) + MinMove * PriceScale, Open));

               Holding = 0;

               SetGlobalVar(0, 0);

               SetGlobalVar(1, 0);

           }

       }

       /* ---------------------------------------------------------------- */

       IF (KK and Close < MA_Long){

     XJ = MIN(O, XG2[1]);

     Lots = Max(1, IntPart(30000 / (XJ * ContractUnit * BigPointValue * 0.1)));  // 开仓手数以3万保证金计算,假设每个品种的保证金率都为10%

     SellShort(Lots, XJ);

     Holding = -1;

           SetGlobalVar(0, XJ);

           SetGlobalVar(1, 9999999999);

           SetGlobalVar(2, Low);

           SetGlobalVar(3, 0);

           // 设置动态止损

           SetGlobalVar(4, XJ + 2 * ATR);

       }

       // 止损检查

       If (Holding > 0 and Low < GetGlobalVar(4)) {

           Sell(0, Min(GetGlobalVar(4) - MinMove * PriceScale, Open));

           Holding = 0;

           SetGlobalVar(0, 0);

           SetGlobalVar(1, 0);

           SetGlobalVar(3, 0);

           SetGlobalVar(4, 0);

       }

       If (Holding < 0 and High > GetGlobalVar(4)) {

           BuyToCover(0, Max(GetGlobalVar(4) + MinMove * PriceScale, Open));

           Holding = 0;

           SetGlobalVar(0, 0);

           SetGlobalVar(1, 0);

           SetGlobalVar(3, 0);

           SetGlobalVar(4, 0);

       }

   }

老代码转换成tbquant的
求大神帮忙看看哪里出问题了
简语言换月平老仓换新合约有代码案例吗?
策略代码检查不出问题,是否有专门的人帮忙看源码问题?
帮忙看看代码
帮忙看看代码
如何判定今仓和老仓
请老师帮忙看看这个代码
请老师帮忙看看代码的错误
策略选股出问题了

问题是 这个导入 有问题。不知道问题在哪儿

你的问题是什么

你理解全局变量的用法吗