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

// 定义参数和变量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); } }

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

你的问题是什么你理解全局变量的用法吗