If(BuySignal && MarketPosition == 0) // 如果有买入信号且当前无持仓
{
If(Abs(MarketPosition) < MaxPosition) // 如果持仓数量小于最大持仓限制
{
Buy(1, Open); // 开多仓1手,使用开盘价成交
EntryPrice = Open; // 记录开仓价格
StopLossPrice = (EntryPrice * (1 - StopLossPercent)); // 计算止损价格:开仓价*(1-止损百分比)
TakeProfitPrice = (EntryPrice * (1 + TakeProfitPercent)); // 计算止盈价格:开仓价*(1+止盈百分比)
Commentary("买入信号!综合评分: " + Text(FinalScore, 2)); // 显示买入信号信息
Commentary("止盈价格: " + Text(TakeProfitPrice));
Commentary("止损价格: " + Text(StopLossPrice));
}
}
//// ===== 卖出逻辑 =====
If(SellSignal && MarketPosition == 0) // 如果有卖出信号且当前无持仓
{
If(Abs(MarketPosition) < MaxPosition) // 如果持仓数量小于最大持仓限制
{
SellShort(1, Open); // 开空仓1手,使用开盘价成交
EntryPrice = Open; // 记录开仓价格
StopLossPrice = EntryPrice * (1 + StopLossPercent); // 计算止损价格:开仓价*(1+止损百分比)
TakeProfitPrice = EntryPrice * (1 - TakeProfitPercent); // 计算止盈价格:开仓价*(1-止盈百分比)
Commentary("卖出信号!综合评分: " + Text(FinalScore, 2)); // 显示卖出信号信息
}
}
// ===== 平仓逻辑 =====
If(MarketPosition > 0) // 如果持有多头仓位(持仓数大于0)
{
//// 止损平仓
If(Low <= StopLossPrice) // 如果最低价触及或低于止损价格
{
Sell(0, Min(Open, StopLossPrice)); // 平仓,使用开盘价和止损价中的较小值
Commentary("止损平仓"); // 显示止损信息
}
// 止盈平仓
Else If(High >= TakeProfitPrice) // 如果最高价触及或高于止盈价格
{
Sell(0, Max(Open, TakeProfitPrice)); // 平仓,使用开盘价和止盈价中的较大值
Commentary("止盈平仓: " + Text(Open)); // 显示止盈信息
}
//// 信号反转平仓
Else If(FinalScore <= SellThreshold) // 如果综合评分转负,达到卖出阈值
{
Sell(0, Open); // 平仓,使用开盘价
Commentary("信号反转平仓"); // 显示反转平仓信息
}
}
Else If(MarketPosition < 0) // 如果持有空头仓位(持仓数小于0)
{
//// 止损平仓
If(High >= StopLossPrice) // 如果最高价触及或高于止损价格
{
BuyToCover(0, Max(Open, StopLossPrice)); // 平仓,使用开盘价和止损价中的较大值
Commentary("止损平仓"); // 显示止损信息
}
// 止盈平仓
Else If(Low <= TakeProfitPrice) // 如果最低价触及或低于止盈价格
{
BuyToCover(0, Min(Open, TakeProfitPrice)); // 平仓,使用开盘价和止盈价中的较小值
Commentary("止盈平仓"); // 显示止盈信息
}
// 信号反转平仓
Else If(FinalScore >= BuyThreshold) // 如果综合评分转正,达到买入阈值
{
BuyToCover(0, Open); // 平仓,使用开盘价
Commentary("信号反转平仓"); // 显示反转平仓信息
}
}


}请老师帮吗看看止盈止损价格是不是计算有问题,用主力连续运行计算显示是后复权,价格应该如何计算,用主力合约计算应该如何计算,现在是开仓后就平仓,计算的价格和平仓价格也不一样。请老师解惑,或有相关文档推荐一下
你这代码ai味儿很浓啊