为什么没有开仓记录,是哪里出错了吗
Params
    Numeric FastMA(12);   //MACD短周期值
    Numeric SlowMA(26);   //MACD长周期值
    Numeric AvgMA(9);     //MACD慢线周期值
    Numeric MAperiod(11); //11日均线周期值
Vars
    Series<Numeric> MACDLine(0); 
    Series<Numeric> SignalLine(0); 
    Series<Numeric> MAValue(0);
    Bool GoldenCross(false); // 记录是否金叉
    Bool DeathCross(false); // 记录是否死叉
    Numeric BuyPrice(0);  // 买入价格
    Numeric SellPrice(0); // 平仓价格
    Numeric SellShortPrice(0); // 卖空价格
    Numeric BuyToCoverPrice(0); // 空单平仓价格
Events
    OnBar(ArrayRef<Integer> indexs)
    {
        // 计算MACD快线
        MACDLine = XAverage(Close, FastMA) - XAverage(Close, SlowMA);
        // 计算MACD慢线
        SignalLine = XAverage(MACDLine, AvgMA);
        // 计算11日均线
        MAValue = AverageFC(Close, MAperiod);
        
        // 判断是否金叉
        GoldenCross = CrossOver(MACDLine[1], SignalLine[1]);
        // 判断是否死叉
        DeathCross = CrossUnder(MACDLine[1], SignalLine[1]);
        
        // 在开盘时确定价格和交易条件
        if (BarStatus == 2) 
        {
            // 买入逻辑,增加价格在11均线上方的条件,以开盘价作为买入价格
            if (GoldenCross && MarketPosition == 0 && Close > MAValue[1]) 
            {
                BuyPrice = Open;
                Buy(0, BuyPrice);
            }
            // 多单平仓逻辑,增加不是根bar的条件,以开盘价作为平仓价格
            if (MarketPosition == 1 && Low < MAValue[1] && CurrentBar > 0) 
            {
                SellPrice = Open;
                Sell(0, SellPrice);
            }
            // 卖空逻辑,增加价格在11均线下方的条件,以开盘价作为卖空价格
            if (DeathCross && MarketPosition == 0 && Close < MAValue[1]) 
            {
                SellShortPrice = Open;
                SellShort(0, SellShortPrice);
            }
            // 空单平仓逻辑,增加不是根bar的条件,以开盘价作为空单平仓价格
            if (MarketPosition == -1 && High > MAValue[1] && CurrentBar > 0) 
            {
                BuyToCoverPrice = Open;
                BuyToCover(0, BuyToCoverPrice);
            }
        }
        
        Commentary("MAValue[1]" + Text(MAValue[1]));
        PlotNumeric("MAValue[1]",MAValue[1]);
    }


记录开仓价格的函数有异常
没有交易记录
Series<Numeric> Price(1); 编译报错,难道Series<Numeric>,没有了吗
行情服务器是出问题了吗?无法连接?
算法代理有记录但实际没有下单?
模拟盘的账户透视只能看到当天的成交记录吗?以前的成交记录在哪里看?
记录的tick数据尾盘最后的更新时间出错
我想设置一个策略时间限制 为什么一直无法编译 是哪里写错了吗
文华财经语句转换后出错在哪里?
为什么有些品种总是没有数据?

BarStatus == 2  的意思是最新一根bar

意思是你这段交易代码只在最新一根bar运行

不要这个if条件就有信号了


我想开仓和平仓在开盘的时候就以开盘价确定,这该怎么写啊,如果以开盘价的时候就计算好平仓和开仓价格就不会闪烁了吧?


+1

你的思路是有问题

信号价格是由触发信号时的盘口价格决定

如果你想开平价格以开盘价确定,那你应该保证你的信号都是在k线开盘的时候就能确认。

要照着这个思路去写