请大师帮忙看看为何不能再开拓者软件上显示开仓平仓箭头

//------------------------------------------------------------------------

// 简称: SAR_Fixed_Complete_V3

// 名称: 抛物线转向固定仓差策略(Commentary信号版)

//------------------------------------------------------------------------

Params

   Numeric N(1);               // 目标仓差手数

   Numeric AfStep(0.04);      // SAR加速因子步长

   Numeric AfLimit(0.2);       // SAR加速因子上限

Vars

   // 持仓变量

   Numeric myLongPosition;      // 当前多头持仓

   Numeric myShortPosition;     // 当前空头持仓

   Global Numeric myPreLongPosition;   // 昨日剩余多仓

   Global Numeric myPreShortPosition;  // 昨日剩余空仓

   

   // SAR指标变量

   Numeric oParCl;              // SAR当前值

   Numeric oParOp;              // SAR操作点

   Numeric oPosition;           // SAR趋势方向

   Numeric oTransition;         // 反转标志

   

   // 辅助变量

   Numeric lots;                // 可用资金可开手数

   Numeric targetNetPos;        // 目标净持仓

   Numeric curNetPos;           // 当前净持仓

   Numeric adjustVolume;        // 需调整的净手数

   

   // 信号锁与每日重置

   Global Numeric signalTriggered;   // 1=已触发,0=未触发

   Global Numeric lastBarDate;       // 上一次Bar日期


   // --- 用于标记信号的变量 ---

   Numeric buySignal;           // 做多信号(开多或平空)

   Numeric sellSignal;          // 做空信号(开空或平多)


Events

   OnInit()

   {

       Position pos;

       myPreLongPosition = pos.longYesterdayVolume;

       myPreShortPosition = pos.shortYesterdayVolume;

       signalTriggered = 0;

       lastBarDate = 0;

   }


   OnBar(ArrayRef<Integer> indexs)

   {

       Range[0:DataSourceSize() - 1]

       {

           // 1. 每日更新昨日持仓和重置信号锁

           if (lastBarDate != Date)

           {

               Position pos;

               myPreLongPosition = pos.longYesterdayVolume;

               myPreShortPosition = pos.shortYesterdayVolume;

               lastBarDate = Date;

               signalTriggered = 0;

           }

           

           // 2. 计算可用资金可开手数

           Account avb;

           Numeric contractValue = Open * ContractUnit * BigPointValue;

           if (contractValue > 0)

               lots = IntPart(avb.Available / contractValue);

           else

               lots = 0;

           

           // 3. 计算SAR指标

           ParabolicSAR(AfStep, AfLimit, oParCl, oParOp, oPosition, oTransition);

           PlotAuto("ParCl", oParCl, 0, Rgb(185,150,0), Enum_Dot);

           

           // 4. 获取当前实时持仓

           Position pos;

           myLongPosition = pos.LongCurrentVolume;

           myShortPosition = pos.ShortCurrentVolume;

           curNetPos = myLongPosition - myShortPosition;

           

           // --- 初始化信号变量 ---

           buySignal = 0;

           sellSignal = 0;

           

           // 5. 做多信号

           If (MarketPosition <> 1 && oPosition == 1 && High > oParCl && signalTriggered == 0)

           {

               signalTriggered = 1;

               buySignal = 1; // 标记本Bar有多头交易信号

               

               // 平昨日空头老仓

               if (myPreShortPosition > 0)

               {

                   BuyToCover(myPreShortPosition, Open);

                   myShortPosition = myShortPosition - myPreShortPosition;

                   if (myShortPosition < 0) myShortPosition = 0;

                   myPreShortPosition = 0;

               }

               

               // 重新获取持仓

               myLongPosition = pos.LongCurrentVolume;

               myShortPosition = pos.ShortCurrentVolume;

               curNetPos = myLongPosition - myShortPosition;

               

               targetNetPos = N;

               adjustVolume = targetNetPos - curNetPos;

               

               if (adjustVolume > 0)

               {

                   Numeric buyLots = Min(adjustVolume, lots);

                   if (buyLots > 0)

                   {

                       Buy(buyLots, Open);

                       myLongPosition = myLongPosition + buyLots;

                       lots = lots - buyLots;

                   }

                   Numeric remain = adjustVolume - buyLots;

                   if (remain > 0 && myShortPosition > 0)

                   {

                       Numeric coverLots = Min(remain, myShortPosition);

                       BuyToCover(coverLots, Open);

                       myShortPosition = myShortPosition - coverLots;

                   }

               }

               else if (adjustVolume < 0)

               {

                   Numeric sellLots = Min(-adjustVolume, myLongPosition);

                   if (sellLots > 0)

                   {

                       Sell(sellLots, Open);

                       myLongPosition = myLongPosition - sellLots;

                   }

                   Numeric remain = -adjustVolume - sellLots;

                   if (remain > 0)

                   {

                       Numeric shortLots = Min(remain, lots);

                       if (shortLots > 0)

                       {

                           SellShort(shortLots, Open);

                           myShortPosition = myShortPosition + shortLots;

                       }

                   }

               }

           }

           

           // 6. 做空信号

           If (MarketPosition <> -1 && oPosition == -1 && Low < oParCl && signalTriggered == 0)

           {

               signalTriggered = 1;

               sellSignal = 1; // 标记本Bar有空头交易信号

               

               if (myPreLongPosition > 0)

               {

                   Sell(myPreLongPosition, Open);

                   myLongPosition = myLongPosition - myPreLongPosition;

                   if (myLongPosition < 0) myLongPosition = 0;

                   myPreLongPosition = 0;

               }

               

               myLongPosition = pos.LongCurrentVolume;

               myShortPosition = pos.ShortCurrentVolume;

               curNetPos = myLongPosition - myShortPosition;

               

               targetNetPos = -N;

               adjustVolume = targetNetPos - curNetPos;

               

               if (adjustVolume < 0)

               {

                   Numeric sellLots = Min(-adjustVolume, myLongPosition);

                   if (sellLots > 0)

                   {

                       Sell(sellLots, Open);

                       myLongPosition = myLongPosition - sellLots;

                   }

                   Numeric remain = -adjustVolume - sellLots;

                   if (remain > 0)

                   {

                       Numeric shortLots = Min(remain, lots);

                       if (shortLots > 0)

                       {

                           SellShort(shortLots, Open);

                           myShortPosition = myShortPosition + shortLots;

                       }

                   }

               }

               else if (adjustVolume > 0)

               {

                   Numeric buyLots = Min(adjustVolume, lots);

                   if (buyLots > 0)

                   {

                       Buy(buyLots, Open);

                       myLongPosition = myLongPosition + buyLots;

                   }

                   Numeric remain = adjustVolume - buyLots;

                   if (remain > 0 && myShortPosition > 0)

                   {

                       Numeric coverLots = Min(remain, myShortPosition);

                       BuyToCover(coverLots, Open);

                       myShortPosition = myShortPosition - coverLots;

                   }

               }

           }

           

           // --- 7. 使用 Commentary 函数生成图表信号标记 ---

           // 当 buySignal 为 1 时,调用 Commentary,图表上会自动出现一个信号标记

           If(buySignal == 1)

           {

               Commentary("做多信号触发");

           }

           

           // 当 sellSignal 为 1 时,调用 Commentary,图表上会自动出现一个信号标记

           If(sellSignal == 1)

           {

               Commentary("做空信号触发");

           }

           

           // 持续显示持仓信息

           Commentary("多头=" + Text(myLongPosition) + " 空头=" + Text(myShortPosition));

           Commentary("净持仓=" + Text(myLongPosition - myShortPosition));

       }

   }

老师好,请教一个问题,如何写当跟BAR上不能交易两次,比如开仓后不能平仓和平仓后不能再开仓?谢谢!
请哪位大师帮忙看看这个公式在软件上为什么是一条直线
信号闪烁问题请大师帮忙
请帮忙看下尾盘平仓的设置
不能在开仓以后自动设置该订单的止损价吗?而不是再通过代码里去调用平仓函数
请大师帮我写个指标
请高手帮忙看看,付费没问题。
K线上怎么不显示开平仓箭头信号
请问指标涨跌可否箭头显示?
请帮忙看看,有仓位无法卖出

社区置顶有付费代写服务说明

又是AI垃圾!!!