我怎么改才能做到当最新价跌破止损线就马上进行平仓

我做的止损条件判断是在k线闭合以后用k线最低价进行的交易超过了我设置的风险点,我怎么改才能做到当最新价跌破止损线就马上进行平仓

Params

   Numeric closeHour(15);

   Numeric closeMinute(0);

// 变量定义区

Vars

   Numeric newprice;        // 最新价格

   Numeric opentime;        // 开仓时间(时间戳)

   Numeric closeTotalSec;  //收盘时间

   Numeric openTotalSec;   //开盘时间

   Numeric TradeDate;      //交易日期

   

   Numeric RiskPoint(0.005);      //风险点

   Series<Bool> opened(False);  // 标记是否已开仓

   Series<Numeric> prentryPrice;  // 记录开仓价格

   Series<Numeric> LastTradeDate;      // 最后储存交易日

   Series<Numeric> OpenPrice_0900(InvalidNumeric);     // 09:00 的开盘价

   Series<Numeric> OpenPrice_0915(InvalidNumeric);     // 09:15 的开盘价

   Series<Numeric> OpenPrice_1030(InvalidNumeric);     //10:30 的开盘价

   Series<Numeric> OpenPrice_2100(InvalidNumeric);     // 21:00 的开盘价

   Series<Numeric> OpenPrice_2115(InvalidNumeric);     // 21:15 的开盘价

// 事件处理区

Events

   // 初始化:只执行一次

   OnInit()

   {

       prentryPrice = 0;

       openTotalSec = 9*3600 + 30*60;   // 9:30开盘

       closeTotalSec = 15*3600;          // 15:00收盘

       Print("OnInit: RiskPoint = " + Text(RiskPoint));        

   }


   // 每根K线闭合时触发(核心逻辑)

   OnBar(ArrayRef<Integer> indexes)

   {

       Numeric currentSec = Hour()*3600 + Minute()*60;

      // 获取当前时间和日期

      TradeDate = TradingDate();

       Commentary("当前日期:"+text(TradeDate));

       

      // 过滤非交易日(周六=6,周日=0)

     

        TradeDate = TradingDate();

       Commentary("当前日期:"+text(TradeDate));

       

       // 过滤非交易日(周六=6,周日=0)

      // If(WeekdayFromDateTime(Time) == 6 Or WeekdayFromDateTime(Time) == 0)

        //   Return;

       

       Commentary("最后储存日期:"+text(LastTradeDate));

       

       // 检查是否为新的交易日,重置状态

       If(TradeDate != LastTradeDate)

       {

           LastTradeDate = TradeDate;

           Commentary("修改后储存日期:"+text(LastTradeDate));

           OpenPrice_0900 = 0;

           OpenPrice_0915 = 0;  

           OpenPrice_1030 = 0;

           OpenPrice_2100 = 0;

           OpenPrice_2115 = 0;

           opened = False;

       }

           

       // 记录9:00开盘价

       If(currentSec == 9*3600)

       {

           OpenPrice_0900 = Open;

       }

       

       // 记录9:15开盘价

       If(currentSec == 9*3600 + 15*60)

       {

           OpenPrice_0915 = Open;

       }

       // 记录21:00开盘价

       If(currentSec == 21*3600)

       {

           OpenPrice_2100 = Open;

       }

       

       // 记录21:15开盘价

       If(currentSec == 21*3600 + 15*60)

       {

           OpenPrice_2115 = Open;

       }

       

       // 记录10:30开盘价

       If(currentSec == 10*3600 + 30*60)

       {

           OpenPrice_1030 = Open;

       }


       // 2. 开仓逻辑:满足时间条件 + 价格条件 + 未开仓

       If ( MarketPosition == 0 && opened == False )

       {

           if(currentSec >= 9*3600 + 15*60 && currentSec < 9*3600 + 18*60 && OpenPrice_0900 != InvalidNumeric)

           {

               If(OpenPrice_0915 < OpenPrice_0900)  // 当前价格低于开盘价,做空,这个条件永远成立

               {

                   // 开空仓

                   //opened = True;

                   SellShort(1, OpenPrice_0915);

                   opened = True;

                   Commentary("1");

                   prentryPrice = OpenPrice_0915; // 记录开仓价

                   Print("开空仓成功,开仓价:" + Text(prentryPrice) + ",当前时间:" + Text(CurrentTime()));

               }

               Else If(OpenPrice_0915 > OpenPrice_0900)  // 当前价格高于开盘价,做多

               {

                   // 开多仓

                   //opened = True;

                   Buy(1, OpenPrice_0915);

                   opened = True;

                    Commentary("2");

                   prentryPrice = OpenPrice_0915; // 记录开仓价

                   Print("开多仓成功,开仓价:" + Text(prentryPrice) + ",当前时间:" + Text(CurrentTime()));

               }

               Else  // 价格相等,不开仓

               {

                   Print("价格与开盘价相等,今日不开仓");

               }

               

           }

           if(currentSec >= 10*3600 + 30*60 && currentSec < 10*3600 + 33*60 && OpenPrice_0900 != InvalidNumeric)//currentTotalSec == 10*3600 + 30*60

           {

               If(OpenPrice_1030 < OpenPrice_0900)  

               {

                   // 开空仓

                   //opened = True;

                   SellShort(1, OpenPrice_1030);

                   opened = True;

                    Commentary("3");

                   prentryPrice = OpenPrice_1030; // 记录开仓价

                   Print("开空仓成功,开仓价:" + Text(prentryPrice) + ",当前时间:" + Text(CurrentTime()));

               }

               Else If(OpenPrice_1030 > OpenPrice_0900)  // 当前价格高于开盘价,做多

               {

                   // 开多仓

                   //opened = True;

                   Buy(1, OpenPrice_1030);

                   opened = True;

                    Commentary("4");

                   prentryPrice = OpenPrice_1030; // 记录开仓价

                   Print("开多仓成功,开仓价:" + Text(prentryPrice) + ",当前时间:" + Text(CurrentTime()));

               }

               Else  // 价格相等,不开仓

               {

                   Print("价格与开盘价相等,今日不开仓");

               }


               

           }

           if(currentSec >= 21*3600 + 15*60 && currentSec < 21*3600 + 18*60 && OpenPrice_2100 != InvalidNumeric)

           {

               If(OpenPrice_2115 < OpenPrice_2100)  // 当前价格低于开盘价,做空,这个条件永远成立

               {

                   // 开空仓

                   //opened = True;

                   SellShort(1, OpenPrice_2115);

                   opened = True;

                   prentryPrice = OpenPrice_2115; // 记录开仓价

                   Print("开空仓成功,开仓价:" + Text(prentryPrice) + ",当前时间:" + Text(CurrentTime()));

               }

               Else If(OpenPrice_0915 > OpenPrice_0900)  // 当前价格高于开盘价,做多

               {

                   // 开多仓

                   //opened = True;

                   Buy(1, OpenPrice_2115);

                   opened = True;

                   prentryPrice = OpenPrice_2115; // 记录开仓价

                   Print("开多仓成功,开仓价:" + Text(prentryPrice) + ",当前时间:" + Text(CurrentTime()));

               }

               Else  // 价格相等,不开仓

               {

                   Print("价格与开盘价相等,今日不开仓");

               }

               

           }

       }

       

       // 3. 止损逻辑(独立于开仓逻辑,已开仓时持续检查)

       If(opened == True && MarketPosition != 0)

       {

           // 空单止损:价格从下方涨到开仓价的(1+0.5%)以上,即亏损达到0.5%

           If(MarketPosition == -1  && High >= prentryPrice * (1 + RiskPoint))

           {

               //opened = False;

               BuyToCover(0, High); // 平空仓

               prentryPrice = 0;

               opened = False;

                Commentary("5");

               Commentary("止损平仓(做空): 数量: " + "1" + ", 时间: " + Text(Time) + ", 价格: " + Text(High));

           }

           // 多单止损:价格从上方跌到开仓价的(1-0.5%)以下,即亏损达到0.5%

           If(MarketPosition == 1  && Low <= prentryPrice * (1 - RiskPoint))

           {

               //opened = False;

               Sell(0, Low); // 平多仓

               prentryPrice = 0;

               opened = False;

                Commentary("6");

               Commentary("止损平仓(做多): 数量: " + "1" + ", 时间: " + Text(Time) + ", 价格: " + Text(Low));

           }

       }


       // 4. 收盘前10分钟强制平仓

       If( opened == True && currentSec >= 14*3600 + 50*60 && currentSec <= 14*3600 + 52*60 && MarketPosition != 0)//currentTotalSec >= 14*3600 + 50*60

       {

           If(MarketPosition == 1)

           {

               //Print("准备平仓,时间:" + Text(CurrentTime()));

               //opened = False;

               Sell(0,Open);

               opened = False;

                Commentary("7");

               Print("平仓指令已发送,MarketPosition = " + Text(MarketPosition));

               Commentary("平仓(做多): 数量: " + " 1 " + ", 时间: " + Text(Time));

               prentryPrice = 0;

           }

           IF(MarketPosition == -1)

           {

               //opened = False;

               BuyToCover(0,Open);

               opened = False;

                Commentary("8");

               prentryPrice = 0;

               Commentary("平仓(做空): 数量: " + " 1 " + ", 时间: " + Text(Time));

           }

       }

     

   }

如何进行最新价(或者市价)进行平仓
策略如何使用最新价
回落平仓之后当根K线开仓问题
策略最新价
求当条件成立时K线的收盘价
如何取最新价
平仓止损
开仓后如何设置止损线,及如何移动止损线?
高于最新价5跳挂单
最新K线开仓线可否向右延伸

谁写的问谁吧,ai写的还是问ai好

或者去看置顶的付费代写服务