feat: 最小止损点数
This commit is contained in:
@@ -20,6 +20,7 @@ input double InpPullbackTolerance = 0.0; // 反向突破容忍度(%) 0=
|
|||||||
|
|
||||||
input group "=== 风险管理参数 ==="
|
input group "=== 风险管理参数 ==="
|
||||||
input double InpStopLossPercent = 0.05; // 止损百分比(%)
|
input double InpStopLossPercent = 0.05; // 止损百分比(%)
|
||||||
|
input int InpMinStopLossPoints = 100; // 最小止损点数
|
||||||
input double InpRiskRewardRatio = 1.5; // 盈亏比
|
input double InpRiskRewardRatio = 1.5; // 盈亏比
|
||||||
input bool InpUseTrailingStop = false; // 使用移动止损
|
input bool InpUseTrailingStop = false; // 使用移动止损
|
||||||
input int InpMaxHoldingMinutes = 5; // 最大持仓时间(分钟)
|
input int InpMaxHoldingMinutes = 5; // 最大持仓时间(分钟)
|
||||||
@@ -119,7 +120,7 @@ int OnInit()
|
|||||||
Print("反向突破容忍度: ", DoubleToString(InpPullbackTolerance, 1), "% (启用)");
|
Print("反向突破容忍度: ", DoubleToString(InpPullbackTolerance, 1), "% (启用)");
|
||||||
else
|
else
|
||||||
Print("反向突破容忍度: 0% (禁用 - 保持原有逻辑)");
|
Print("反向突破容忍度: 0% (禁用 - 保持原有逻辑)");
|
||||||
Print("止损:", InpStopLossPercent, "% (最小1美元) | 盈亏比:", InpRiskRewardRatio);
|
Print("止损:", InpStopLossPercent, "% (最小", InpMinStopLossPoints, "点) | 盈亏比:", InpRiskRewardRatio);
|
||||||
Print("移动止损:", (InpUseTrailingStop ? "启用" : "禁用"));
|
Print("移动止损:", (InpUseTrailingStop ? "启用" : "禁用"));
|
||||||
Print("最大持仓时间:", InpMaxHoldingMinutes, "分钟");
|
Print("最大持仓时间:", InpMaxHoldingMinutes, "分钟");
|
||||||
Print("最大开仓手数:", InpMaxPositions);
|
Print("最大开仓手数:", InpMaxPositions);
|
||||||
@@ -743,8 +744,8 @@ bool OpenPosition(ENUM_ORDER_TYPE order_type, double wave_high, double wave_low,
|
|||||||
// 计算止损和止盈(基于开仓价的百分比)
|
// 计算止损和止盈(基于开仓价的百分比)
|
||||||
double stop_loss_amount = current_price * InpStopLossPercent / 100.0;
|
double stop_loss_amount = current_price * InpStopLossPercent / 100.0;
|
||||||
|
|
||||||
// 确保止损金额不小于1美元(100点)
|
// 确保止损金额不小于最小止损点数
|
||||||
double min_stop_loss = 1.0; // 1美元 = 100点
|
double min_stop_loss = InpMinStopLossPoints * _Point;
|
||||||
if(stop_loss_amount < min_stop_loss) {
|
if(stop_loss_amount < min_stop_loss) {
|
||||||
stop_loss_amount = min_stop_loss;
|
stop_loss_amount = min_stop_loss;
|
||||||
}
|
}
|
||||||
@@ -873,8 +874,8 @@ void CheckTrailingStop(ulong ticket)
|
|||||||
// 计算止损金额(开仓价的百分比)
|
// 计算止损金额(开仓价的百分比)
|
||||||
double stop_loss_amount = open_price * InpStopLossPercent / 100.0;
|
double stop_loss_amount = open_price * InpStopLossPercent / 100.0;
|
||||||
|
|
||||||
// 确保止损金额不小于1美元(100点)
|
// 确保止损金额不小于最小止损点数
|
||||||
double min_stop_loss = 1.0; // 1美元 = 100点
|
double min_stop_loss = InpMinStopLossPoints * _Point;
|
||||||
if(stop_loss_amount < min_stop_loss) {
|
if(stop_loss_amount < min_stop_loss) {
|
||||||
stop_loss_amount = min_stop_loss;
|
stop_loss_amount = min_stop_loss;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user