有交易信号,但是无发单委托
老师好,新人小白一枚,最近在模拟交易时遇到个问题:有交易信号,但是无发单委托。比如:有开仓信号,但无发单委托;有平仓信号,无发单委托。附上部分代码及图片,还请帮忙看看是哪里有潜在的问题,感谢!//------ 持仓处理 ------ If(MarketPosition == 1) { CurrentPrice = Close[1]; // 使用前一Bar收盘价(确定值) FloatProfitRatio = (CurrentPrice - FirstEntryPrice) / FirstEntryPrice; // 计算相对盈亏 // 全局风控检查 If(!EquityRiskTriggered) { // 直接使用计算盈亏比例(不再依赖 PositionProfit) If(FloatProfitRatio <= -FloatLossThreshold) // 注意:亏损时为负值 { Sell(0, Open, SlipPoint); Commentary("多头浮动止损触发 | 亏损比例:" + Text(FloatProfitRatio*100) + "%"); EquityRiskTriggered = True; LastExitBar = CurrentBar; } } // 动态止损止盈 DynamicStopRatio = FixScale * (1 + (ATRValue[1]/Close[1])*StopSensitivity); FixedStopLong = FirstEntryPrice * (1 - DynamicStopRatio); ProfitTargetLong = FirstEntryPrice + ATRValue[1] * ProfitMultiplier; // 止损执行(使用前一日低点防闪烁) If(Low <= FixedStopLong && Low[1] > FixedStopLong) { Sell(0, FixedStopLong, SlipPoint); LastExitBar = CurrentBar; Commentary("多头止损触发于:"+Text(FixedStopLong)); } // 止盈执行 Else If(High >= ProfitTargetLong && Close[1] < ProfitTargetLong) { Sell(0, ProfitTargetLong, SlipPoint); LastExitBar = CurrentBar; Commentary("多头止盈触发于:"+Text(ProfitTargetLong)); } }//------ 开仓逻辑 ------ If(MarketPosition == 0) { If(LongSignal) { // 开多仓 Buy(PositionSize, Open, SlipPoint); FirstEntryPrice = Open; If(!FirstEntryLong) { InitialEquity = Portfolio_CurrentEquity(); FirstEntryLong = True; } AddCount = 1; LastEntryBar = CurrentBar; EquityRiskTriggered = False; Commentary("多头开仓于:"+Text(Open)); } Else If(ShortSignal) { // 开空仓 SellShort(PositionSize, Open, SlipPoint); FirstEntryPrice = Open; If(!FirstEntryShort) { InitialEquity = Portfolio_CurrentEquity(); FirstEntryShort = True; } AddCount = 1; LastEntryBar = CurrentBar; EquityRiskTriggered = False; Commentary("空头开仓于:"+Text(Open)); } }//------ 盈利保护模块 ------ If(MarketPosition != 0 && InitialEquity > 0) { // 核心修改:用固定入场价差替代浮动盈亏计算 CurrentPrice = Close[1]; // 关键!使用前一Bar收盘价 // 多空统一计算公式(自动识别方向) If(MarketPosition == 1) { FloatProfitValue = (CurrentPrice - FirstEntryPrice) * PositionSize * ContractUnit() * BigPointValue(); FloatProfitRatio = (CurrentPrice - FirstEntryPrice) / FirstEntryPrice; } Else If(MarketPosition == -1) { FloatProfitValue = (FirstEntryPrice - CurrentPrice) * PositionSize * ContractUnit() * BigPointValue(); FloatProfitRatio = (FirstEntryPrice - CurrentPrice) / FirstEntryPrice; } // 盈利达标平仓 If(FloatProfitRatio >= InitialEquity * 0.15) { If(MarketPosition == 1) { Sell(0, Open, SlipPoint); Commentary("盈利保护触发(多头)| 收益率:" + Text(FloatProfitRatio*100) + "%"); } Else If(MarketPosition == -1) { BuyToCover(0, Open, SlipPoint); Commentary("盈利保护触发(空头)| 收益率:" + Text(FloatProfitRatio*100) + "%"); } } }