mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-04 09:58:22 +08:00
修復關鍵 BUG:validActions 缺少新動作導致驗證失敗
問題根因: - auto_trader.go 已實現 update_stop_loss/update_take_profit/partial_close 處理 - adaptive.txt 已描述這些功能 - 但 validateDecision 的 validActions map 缺少這三個動作 - 導致 AI 生成的決策在驗證階段被拒絕:「无效的action:update_stop_loss」 修復內容: 1. validActions 添加三個新動作 2. 為每個新動作添加參數驗證: - update_stop_loss: 驗證 NewStopLoss > 0 - update_take_profit: 驗證 NewTakeProfit > 0 - partial_close: 驗證 ClosePercentage 在 0-100 之間 3. 修正註釋:adjust_* → update_* 測試狀態:feature 分支,等待測試確認
This commit is contained in:
+32
-8
@@ -80,8 +80,8 @@ type Decision struct {
|
||||
TakeProfit float64 `json:"take_profit,omitempty"`
|
||||
|
||||
// 调整参数(新增)
|
||||
NewStopLoss float64 `json:"new_stop_loss,omitempty"` // 用于 adjust_stop_loss
|
||||
NewTakeProfit float64 `json:"new_take_profit,omitempty"` // 用于 adjust_take_profit
|
||||
NewStopLoss float64 `json:"new_stop_loss,omitempty"` // 用于 update_stop_loss
|
||||
NewTakeProfit float64 `json:"new_take_profit,omitempty"` // 用于 update_take_profit
|
||||
ClosePercentage float64 `json:"close_percentage,omitempty"` // 用于 partial_close (0-100)
|
||||
|
||||
// 通用参数
|
||||
@@ -513,12 +513,15 @@ func findMatchingBracket(s string, start int) int {
|
||||
func validateDecision(d *Decision, accountEquity float64, btcEthLeverage, altcoinLeverage int) error {
|
||||
// 验证action
|
||||
validActions := map[string]bool{
|
||||
"open_long": true,
|
||||
"open_short": true,
|
||||
"close_long": true,
|
||||
"close_short": true,
|
||||
"hold": true,
|
||||
"wait": true,
|
||||
"open_long": true,
|
||||
"open_short": true,
|
||||
"close_long": true,
|
||||
"close_short": true,
|
||||
"update_stop_loss": true,
|
||||
"update_take_profit": true,
|
||||
"partial_close": true,
|
||||
"hold": true,
|
||||
"wait": true,
|
||||
}
|
||||
|
||||
if !validActions[d.Action] {
|
||||
@@ -598,5 +601,26 @@ func validateDecision(d *Decision, accountEquity float64, btcEthLeverage, altcoi
|
||||
}
|
||||
}
|
||||
|
||||
// 动态调整止损验证
|
||||
if d.Action == "update_stop_loss" {
|
||||
if d.NewStopLoss <= 0 {
|
||||
return fmt.Errorf("新止损价格必须大于0: %.2f", d.NewStopLoss)
|
||||
}
|
||||
}
|
||||
|
||||
// 动态调整止盈验证
|
||||
if d.Action == "update_take_profit" {
|
||||
if d.NewTakeProfit <= 0 {
|
||||
return fmt.Errorf("新止盈价格必须大于0: %.2f", d.NewTakeProfit)
|
||||
}
|
||||
}
|
||||
|
||||
// 部分平仓验证
|
||||
if d.Action == "partial_close" {
|
||||
if d.ClosePercentage <= 0 || d.ClosePercentage > 100 {
|
||||
return fmt.Errorf("平仓百分比必须在0-100之间: %.1f", d.ClosePercentage)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user