描述
成交量門控通常被實現為一種抑制訊號的過濾器,這使得策略難以調試:圖表顯示交叉,機器人卻無動於衷,而且沒有任何記錄可以解釋原因。此軟體套件即使在成交量閘控拒絕交叉訊號時也會傳回該訊號,其中 `gated_by` 參數指定了阻止訊號的原因。 成交量比較是相對的——即當前成交量與窗口平均成交量之比——因此該閾值可跨交易品種通用,無需為每個交易品種設定絕對成交量閾值。相對比較也是唯一不受報價貨幣變更或交易場所遷移影響的比較方式。 何時使用此功能 • 代理需要一個趨勢交叉入場點,其拒絕訊號必須可審計。 • 您正在調試「圖表上已觸發但機器人未觸發的訊號」。 • 您需要一個無需重新調整即可跨品種通用的成交量門控。 在震盪行情中表現疲軟:MACD交叉點集中在一個區間內,每次交叉都代表小幅虧損。成交量門控減少了交叉點的數量,但並未解決這種波動性問題。 本包裹特意不包含以下內容 這是一個框架版本,並非經過最佳化的生產版本。具體來說: • 無部位大小、停損或目標位設定。 • 無直方圖或零線邏輯。此交易僅涉及訊號線交叉;直方圖斜率變體的行為有所不同。 • 無調整週期或成交量比。 • 程式碼中沒有預設閾值。 scripts/macd_gate.py 會拋出 PARAM_INCOMPLETE 異常,而不是回退到一個數值。這種靜默的預設值會讓你誤以為自己正在運行一個經過校準的系統,而實際上你運行的是別人的參數。 每一個決策邊界都是一個輸入。這就是整份合約。 決策合約 • 動作:條件 • 長線:MACD 向上穿過訊號線且音量門通過 • 退出:MACD 向下穿過訊號線 • 平線:沒有交叉,或交叉被音量門拒絕(參見 gated_by) 回應資料包含 macd、signal_line、histogram、volume_ratio 和 gated_by 參數。當訊號正常時,gated_by 參數為空;當訊號被拒絕時,gated_by 參數為一個短字串。 輸出方案 { "action": "flat", "price": 62980.0, "macd": 41.2, "signal_line": 40.1, "histogram": 1.1, "volume_ratio": 0.94, "gated_by": "volume", "reason": "MACD crossed up but relative volume 0.94 < 1.30" } 操作是唯一必須基於其進行分支的欄位。原因欄位僅供日誌記錄和代理程式向使用者回饋,請勿解析。 運行它 python3 scripts/macd_gate.py \ --params references/params-example.json \ --symbol BTC/USDT \ --interval 1h references/params-example.json 檔案包含一些整數,顯然是為了方便說明。它們的存在是為了確保命令能夠一次成功運行,並非因為它們本身是正確的。 進料位置狀態: python3 scripts/macd_gate.py --params my.json --state '{"avg_entry": 61250.5, "layers": 2}' 校準閾值 1. 快/慢/訊號-保持快<慢且訊號<慢;模組會驗證這一點。快/慢的比率比絕對值更重要,因此先按比率劃分網格,再按訊號劃分網格,比直接按三者劃分網格搜尋效率更高。 2. 成交量比率 - 相對於視窗平均值的參與要求。衡量您所交易品種的相對成交量分佈:將其設置為中位數會拒絕一半的交叉交易,這幾乎肯定過於嚴格。 3. 校準過程中要注意拒絕率。如果一個門會拒絕 90% 的交叉點,那麼它就不是選擇性門,而只是一種樣本量較少、速度較慢的策略。 按時間順序進行驗證,採用約 70/30 的比例分配訊號,並比較兩個模組中的訊號計數和抑制計數。在一個模式下校準的閘電路通常會抑制下一個模式下的所有訊號。 已知極限 • EMA 種子由第一個視窗的平均值計算得出,因此最初的幾個值帶有固定種子偏差。取得的資料遠多於慢速 K 線加訊號 K 線。 • 成交量門控使用與交叉點相同的 K 線。如果交叉點出現在已完成的 K 線中,而其後一條 K 線的成交量仍在形成中,則該交叉點不會被計入。 • 退出機制不以成交量為準-死亡交叉總是會退出。這種不對稱性是有意為之,但值得注意。 • 正在形成的 K 線會被排除在外,因此決策不會重繪。 免責聲明 這是一個用於研究和教育的決策框架。它並非投資建議、獲利聲明或回測結果。加密貨幣衍生性商品可能損失超過本金。您需對您選擇的參數以及您的執行人下的每一筆訂單負責。