请老师帮忙,在编译时显示的错误

ATRVal = AvgTrueRange(ATRLength);编译时显示无法识别字符串ATRVal。请文怎么改?

编译时提示错误,错误号2002,帮忙看看是否有问题
老师,编译的时候显示最终目标文件编译错误。怎么回事啊?
请帮忙修改,提示错误
老师帮忙看下,这里为啥编译不过去
请帮忙修改,提示错误
请老师帮忙看看代码的错误
程序编译报错,老师请帮忙看一下
请帮忙修改,提示错误
新建公式编译时,提示程序体不存在,错误号为1001
编译错误,老师帮修改下

我建议先系统学习一下语法。

请发完整代码

// 文华8麦语言趋势策略(最终修正版)

// 2024.04更新(兼容WH8 V8.2+)

// 修正内容:调整平仓信号写法,移除手数参数


//============== 参数输入区 ==============//

INPUT:

   // MACD参数

   SHORT(12,5,50),       // MACD短期EMA

   LONG(26,20,100),      // MACD长期EMA

   M(9,5,20),            // DEA周期

   X(3,2,5),             // MACD连续确认周期

   

   // ADX参数

   ADX_PERIOD(14,10,20), // ADX周期

   ADX_THRESHOLD(25,20,30),// ADX趋势阈值

   

   // 时间过滤

   TRADE_START(930,0,2359),// 交易开始时间

   TRADE_END(1455,0,2359), // 交易结束时间

   

   // 仓位管理参数

   RISK_RATIO(0.02,0.01,0.05), // 单笔风险比例(1%-5%)

   MAX_POS(3,1,10),           // 最大持仓手数

   

   // 止损参数

   ATR_PERIOD(14,10,20),      // ATR计算周期

   ATR_MULTIPLE(2,1,3),       // ATR止损倍数

   TRAILING_STOP(1,0,1);      // 是否启用移动止损(0:否,1:是)


//============== 指标计算区 ==============//

// 基础指标

DIFF := EMA(CLOSE,SHORT) - EMA(CLOSE,LONG);

DEA := EMA(DIFF,M);

MACD := 2*(DIFF-DEA);


// 趋势强度指标

DI_PLUS := DIPLUS(ADX_PERIOD);

DI_MINUS := DIMINUS(ADX_PERIOD);

ADX_VAL := ADX(ADX_PERIOD);


// 波动率指标

TR := MAX(MAX(HIGH-LOW,ABS(REF(CLOSE,1)-HIGH)),ABS(REF(CLOSE,1)-LOW));

ATR := MA(TR,ATR_PERIOD);


// 多时间框架确认(引用日线趋势)

DAY_TREND_UP := STKINDI('','MACD.DIFF',0,26,12,9) > STKINDI('','MACD.DEA',0,26,12,9);

DAY_TREND_DOWN := STKINDI('','MACD.DIFF',0,26,12,9) < STKINDI('','MACD.DEA',0,26,12,9);


//============== 仓位计算区 ==============//

// 动态仓位计算(基于ATR和风险比例)

CAPITAL := 1000000; // 假设初始资金100万

UNIT_SIZE := INTPART((CAPITAL*RISK_RATIO)/(ATR*MULTIPLIER/10));

POS_SIZE := MIN(UNIT_SIZE,MAX_POS);


//============== 信号过滤条件 ==============//

TRADE_TIME := TIME >= TRADE_START AND TIME < TRADE_END;  // 时段过滤

TREND_UP := ADX_VAL > ADX_THRESHOLD AND DI_PLUS > DI_MINUS AND DAY_TREND_UP; // 上升趋势(多时间框架)

TREND_DOWN := ADX_VAL > ADX_THRESHOLD AND DI_MINUS > DI_PLUS AND DAY_TREND_DOWN; // 下降趋势(多时间框架)

MACD_UP := COUNT(MACD>REF(MACD,1),X)=X; // 连续X周期上涨

MACD_DOWN := COUNT(MACD<REF(MACD,1),X)=X; // 连续X周期下跌

NO_HOLDING := BKVOL + SKVOL = 0; // 无持仓状态


//============== 止损计算 ==============//

// 初始止损价

LONG_STOP_PRICE := ENTERP

你这个不是我们软件的代码,无法在我们的软件上使用

更不用说你的代码里面根本没有这一行 ATRVal = AvgTrueRange(ATRLength)




Params

   Numeric ATRLength(14);        // ATR计算周期

   Numeric VolRatioThreshold(2); // 量能放大阈值

   Numeric MinATR(5);           // 最小ATR值过滤

   Numeric StopLossFactor(1.5);  // 止损ATR倍数

   Numeric TakeProfitFactor(2);  // 止盈ATR倍数

   Numeric PatternConfirmBars(3);// 形态确认K线数

   

Vars

   NumericSeries ATRVal(0);      // ATR值

   NumericSeries VolRatio(0);    // 当前成交量/平均成交量

   BoolSeries IsVolumeSpike(False); // 是否放量

   BoolSeries IsReversalSignal(False); // 反转信号

   NumericSeries HH(0);         // 最近高点

   NumericSeries LL(0);         // 最近低点

   BoolSeries IsTopPattern(False); // 顶部形态

   BoolSeries IsBottomPattern(False); // 底部形态

   Numeric myEntryPrice(0);     // 入场价格

   Numeric myStopLoss(0);       // 止损位

   Numeric myTakeProfit(0);     // 止盈位


// 计算ATR指标

ATRVal = AverageTrueRange(ATRLength);


// 计算量能比率(当前成交量/过去20周期平均成交量)

VolRatio = Volume / Average(Volume, 20);

IsVolumeSpike = VolRatio >= VolRatioThreshold;


// 识别高低点(用于形态判断)

HH = Highest(High, 5);

LL = Lowest(Low, 5);


// 简单顶部形态判断(三顶或双顶)

IsTopPattern = (High[1] == HH[1]) And (High[2] < High[1]) And (High[3] < High[2])

              And (Close < Open) And (Close[1] < Open[1]);


// 简单底部形态判断(三底或双底)

IsBottomPattern = (Low[1] == LL[1]) And (Low[2] > Low[1]) And (Low[3] > Low[2])

                 And (Close > Open) And (Close[1] > Open[1]);


// 反转信号条件(量能配合ATR)

IsReversalSignal = IsVolumeSpike And (ATRVal >= MinATR) And

                 ((IsTopPattern And (Close < Low[1])) Or

                  (IsBottomPattern And (Close > High[1])));


// 交易逻辑

If IsReversalSignal Then

   // 多头反转信号

   If IsBottomPattern And MarketPosition <> 1 Then

       myEntryPrice = Close;

       myStopLoss = Low[1] - StopLossFactor * ATRVal;

       myTakeProfit = myEntryPrice + TakeProfitFactor * ATRVal;

       Buy(1, myEntryPrice);

       Commentary("多头入场 价格:" + Text(myEntryPrice) +

                " 止损:" + Text(myStopLoss) +

                " 止盈:" + Text(myTakeProfit));

       SetStopLoss(myStopLoss);

       SetTakeProfit(myTakeProfit);

   EndIf

   

   // 空头反转信号

   If IsTopPattern And MarketPosition <> -1 Then

       myEntryPrice = Close;

       myStopLoss = High[1] + StopLossFactor * ATRVal;

       myTakeProfit = myEntryPrice - TakeProfitFactor * ATRVal;

       SellShort(1, myEntryPrice);

       Commentary("空头入场 价格:" + Text(myEntryPrice) +

                " 止损:" + Text(myStopLoss) +

                " 止盈:" + Text(myTakeProfit));

       SetStopLoss(myStopLoss);

       SetTakeProfit(myTakeProfit);

   EndIf

EndIf


// 放量止盈逻辑

If MarketPosition <> 0 Then

   // 多头持仓放量止盈

   If MarketPosition > 0 And IsVolumeSpike And Close < Open Then

       Sell(0, Close);

       Commentary("多头放量止盈 价格:" + Text(Close));

   EndIf

   

   // 空头持仓放量止盈

   If MarketPosition < 0 And IsVolumeSpike And Close > Open Then

       BuyToCover(0, Close);

       Commentary("空头放量止盈 价格:" + Text(Close));

   EndIf

   

   // 形态突破止盈(针对持续形态)

   If BarsSinceEntry >= PatternConfirmBars Then

       // 多头持仓出现顶部形态

       If MarketPosition > 0 And IsTopPattern Then

           Sell(0, Close);

           Commentary("多头形态止盈 价格:" + Text(Close));

       EndIf

       

       // 空头持仓出现底部形态

       If MarketPosition < 0 And IsBottomPattern Then

           BuyToCover(0, Close);

           Commentary("空头形态止盈 价格:" + Text(Close));

       EndIf

   EndIf

EndIf

这个是 ,不好意思,发错一个时文华的,麻烦您了



这个代码也不是我们软件的代码,无法在我们软件上使用