为啥一直提示17行缺少分号??出bug了吗,明明有啊!
Params
    Numeric Length_day(30);        // 日线MA周期
    Numeric FastLength(12);        // MACD快线周期
    Numeric SlowLength(26);        // MACD慢线周期
    Numeric SignalLength(9);       // MACD信号线周期

Vars
    Numeric ma_day;                // 日线MA30
    Numeric ma_day_prev;           // 前一根日线MA30
    Numeric ma_day_prev_prev;      // 前两根日线MA30
    Numeric macd_diff;             // MACD快线
    Numeric macd_dea;              // MACD慢线
    Numeric macd_diff_prev;        // 前一根MACD快线
    Numeric macd_dea_prev;         // 前一根MACD慢线
    Bool golden_cross;             // 金叉信号
    Bool death_cross;              // 死叉信号
    Numeric daily_bar_count = 0;   // 日线数据计数器
    Numeric ma_day_history[100];   // 静态数组存储历史值

Initialize()
{
    SubscribeBar(Symbol, "5分钟", BeginDateTime);
    SubscribeBar(Symbol, "日线", BeginDateTime);
    
    // 初始化历史数组
    For Numeric i = 0 To 99;       // For循环行末加分号
    {
        ma_day_history[i] = 0;
    };                             // 代码块结束后加分号
    
    return 0;
}

OnBar(ArrayRef<Integer> indexs)
{
    // 计算日线MA30
    ma_day = Data[1].AverageFC(Data[1].Close, Length_day);
    ma_day_prev_prev = ma_day_prev;
    ma_day_prev = ma_day_history[0];
    
    // 仅在日线更新时保存MA30值
    if (BarIndex(1) > 0);          // 修正:条件语句后加分号(即使没有代码块)
    {
        // 移动历史数据
        For Numeric i = 99 DownTo 1;  // For循环行末加分号
        {
            ma_day_history[i] = ma_day_history[i-1];
        };                             // 代码块结束后加分号
        
        // 保存新值
        ma_day_history[0] = ma_day;
        daily_bar_count++;
    };                                 // if代码块结束后加分号
    
    // 计算5分钟MACD
    macd_diff_prev = macd_diff;
    macd_dea_prev = macd_dea;
    
    Numeric ema_fast = Data[0].EMA(Data[0].Close, FastLength);
    Numeric ema_slow = Data[0].EMA(Data[0].Close, SlowLength);
    
    macd_diff = ema_fast - ema_slow;
    macd_dea = Data[0].EMA(macd_diff, SignalLength);
    
    // 判断交叉信号
    golden_cross = (macd_diff_prev <= macd_dea_prev) && (macd_diff > macd_dea);
    death_cross = (macd_diff_prev >= macd_dea_prev) && (macd_diff < macd_dea);
    
    // 交易逻辑
    if (daily_bar_count >= 3);        // 修正:条件语句后加分号
    {
        // 上升趋势:日线MA30向上
        if (ma_day_prev_prev < ma_day_prev);  // 修正:条件语句后加分号
        {
            // 金叉开多
            if (golden_cross && MarketPosition <= 0);  // 修正:条件语句后加分号
            {
                // 平空仓
                if (MarketPosition < 0);  // 修正:条件语句后加分号
                    BuyToCover(Abs(MarketPosition), Close);
                
                // 开多仓
                Buy(1, Close);
                Print("【开多】时间: " + DateTimeToString(CurrentTime) + ", 日线MA30: " + Text(ma_day));
            };  // if代码块结束后加分号
            
            // 死叉平多
            if (death_cross && MarketPosition > 0);  // 修正:条件语句后加分号
            {
                Sell(MarketPosition, Close);
                Print("【平多】时间: " + DateTimeToString(CurrentTime));
            };  // if代码块结束后加分号
        };  // if代码块结束后加分号
        
        // 下降趋势:日线MA30向下
        else if (ma_day_prev_prev > ma_day_prev);  // 修正:条件语句后加分号
        {
            // 死叉开空
            if (death_cross && MarketPosition >= 0);  // 修正:条件语句后加分号
            {
                // 平多仓
                if (MarketPosition > 0);  // 修正:条件语句后加分号
                    Sell(MarketPosition, Close);
                
                // 开空仓
                SellShort(1, Close);
                Print("【开空】时间: " + DateTimeToString(CurrentTime) + ", 日线MA30: " + Text(ma_day));
            };  // if代码块结束后加分号
            
            // 金叉平空
            if (golden_cross && MarketPosition < 0);  // 修正:条件语句后加分号
            {
                BuyToCover(Abs(MarketPosition), Close);
                Print("【平空】时间: " + DateTimeToString(CurrentTime));
            };  // if代码块结束后加分号
        };  // else if代码块结束后加分号
    };  // if代码块结束后加分号
    
    // 绘图
    PlotNumeric("MACD_DIF", macd_diff);
    PlotNumeric("MACD_DEA", macd_dea);
    PlotNumeric("MA_Day", ma_day);
}


函数引用编译提示钱缺少分号
缺少分号
缺少分号
错误 缺少分号 1003
软件编译提示错误说没分号,但实际是有分号的---
选股回测一直提示交易量
错误显示缺少分号?加上后还是显示缺少分号,这句话好像不需要分好号呀
SetGlobalVar 有bug
AI编写代码总是报错 说缺少分号
交割日不停地发平仓单,明明没有仓位了还一直发,是怎么回事呢?

定义方式不对

Numeric daily_bar_count (0);

现在TBQ3语法有变化了?

一眼看上去好多问题


我还在用TBQ

实在学不会TBQ3😑

quant也不能在vars域里这么定义啊!

打好基础,再用AI

只能说 Q3超级好用

我大概刚弄好一个策略的时候转的Q3

直接复制过来的,完全没有问题,语法一样的

感觉设计更友好,更好上手

来尝尝 包你真香

👌

dp里面经常这样定义,而且好像编译能通过。

AI经常在代码主体里面定义变量而不在变量定义的区域定义,还有AI不会自己定义序列变量,只会定义普通变量。

dp最明显的特征就是if语句,if和后面的()之间一定有空格。

这位兄弟的代码我感觉99%的概率是AI写的。

👍


dp是这样定义的,因为很多计算机语言是这样写的

但是tbl是用()来赋初值的