技能:signal — 透過 2 位 AI 辯論產生 M3/M5 剝頭皮信號
1. 觸發與模式
| 觸發指令 | 說明 |
|---|---|
signal-<pair> (例如 signal-xauusd、signal-eurusd) | 生成 M3/M5 掛單入場訊號 |
signal-result win / signal-result lose [原因] | 用戶回報上一筆訊號的結果 → 記錄到交易紀錄 |
<pair>= 本地 MT5 交易品種代號。透過~/.local/share/mt5-venv/bin/python scripts/mt5_query.py symbols <query>解析。如果找不到,顯示最接近的候選品種,切勿自行編造。- 如果交易品種明確,請勿反問用戶。不要急著給答案——3 到 5 輪的辯論是正常的,品質重於速度。
2. 嚴格交易規則(由裁判驗證,非分析師)
- 訂單類型:僅限 BUY/SELL LIMIT 或 STOP(在技術位掛單)。市價單只有在兩位分析師一致同意當前價格正好處於該水準,且明確寫出時才允許。
- 每筆訊號最大止損 $3(0.01 手) —— 並非死板的 300 點。系統會根據
mt5_query.py scalp輸出中risk區塊的sl_max_points自動轉換(XAUUSD ≈ 300 點 = $3;其他品種自動調整)。分析師提出的止損超過此限制 = 裁判駁回,退回要求修正。 - 停利 = 根據止損距離的 RR 1:1.5 或 1:2。選擇其中一個,並標明採用的 RR。
- 分析時間框架:M3 + M5(主要) + H1(快速判斷大方向)。
- 合理點差:若點差大於建議止損距離的約 20%,分析師必須特別標註(在點差較大的情況下,限價單入場更安全)。
3. 數據(純本地 MT5 — 無網路/無搜尋,確保快速)
單一指令:
~/.local/share/mt5-venv/bin/python ~/.config/opencode/skills/signal/scripts/mt5_query.py scalp <SYMBOL>
輸出 JSON:買賣價、點差、risk(美元/點數、最大止損點數)、日內變動、M3/M5/H1 的 ATR14、EMA20/50、趨勢、支撐阻力、區間、最後一根 K 線及其實體方向。將此原始輸出提供給兩位分析師。嚴禁編造 MT5 數據。
時間標註:使用 WIB + 在括號內標示 MT5 伺服器時間(UTC+3),例如 21:45 WIB (17:45 server)。WIB = 伺服器時間 + 4 小時。
4. 從交易紀錄學習(辯論前必須執行)
- 在第一輪辯論前,裁判取得交易紀錄:
rclone cat gdrive:Linux-Server/signals/track-record.md(若 404/找不到 = 尚無紀錄,則繼續進行並回報此情況)。 - 摘要最近結果的模式(例如「最近 5 筆虧損都是下跌趨勢中的賣出限價單」),並將此模式提供給兩位分析師作為學習背景:勝利的模式可以重複,虧損的模式必須避免,或者分析師需解釋為何本次情況不同。
- 訊號儲存在
gdrive:Linux-Server/signals/<YYYYMMDD>-<pair>/signal.md,狀態為PENDING(參見 §7)。
5. 辯論(2 位分析師 + 1 位裁判,3-5 輪對話)
角色與模型(使用 subagent 工具,agent 為 general,明確指定 model 參數):
| 角色 | 模型 | 任務 |
|---|---|---|
| 分析師 1 — 技術入場 | opencode/step-5-preview-free | M3/M5 結構、訂單類型(限價/停損)、入場點、止損、停利、進場時機 |
| 分析師 2 — 風險經理 | opencode/nemotron-3.5-lightning-free | 驗證停損/停利、風險報酬比、避免陷阱(止損獵殺、點差、交易時段)、倉位管理 |
| 裁判 = 主要代理,使用當前會話的模型(動態) | — | 中立:編排流程、發送數據、驗證嚴格規則(§2)、計票、整理輸出。禁止分析或對市場方向發表意見。裁判 = 正在執行此會話的 AI 模型——可以是任何提供者;不要假設總是 custom/auto。在撰寫輸出時,檢查自己的模型並寫出實際名稱。 |
流程:
- 第一輪(獨立): 將 MT5 數據 + 交易紀錄摘要發送給兩位分析師。每位提出:方向、訂單類型、入場點、止損(點數與美元)、停利(風險報酬比)、信心百分比、理由。
- 辯論輪次(1-3 輪): 互相傳遞文字討論。可要求新的 MT5 數據(再次呼叫
scalp——價格會變化)。聚焦於實際分歧:價格水準、訂單類型、止損有效性。 - 最終立場: 各自陳述最終立場。
- 投票: 兩位分析師意見一致 → 訊號有效。意見分歧 = 不交易(正式輸出:沒有訊號 + 簡短原因)。這是有效且正常的結果,不要強求。
備援模型(遇到速率限制時的順序,第一層):opencode/longcat-2.5-preview-free → opencode/space-bunny-free → opencode/cat-jam-free;第二層最多 1 位分析師使用:9roy/9router_combo;第三層:custom/auto(「苦力」)—— 僅在裁判不是 custom/auto 時使用(同一個模型不能同時扮演兩個角色)。只要還有其他選項,就不要讓兩位分析師都來自同一個提供者。錯誤重試最多 2 次;兩位分析師都完全失敗 = 回報並停止。
6. 預算
簡單計算:1 次分析師呼叫 = 3,重試/備援 = 1,裁判工具呼叫 = 1。目標總數 12-27(2-3 次分析師呼叫 × 約 3 輪 + 工具呼叫)。在輸出中寫上:Budget: X/27 (方法: 加權-信號)。不要超過 27——3 到 5 輪辯論就足夠了,超過就停止並整理輸出。
7. 輸出與儲存(rclone,本地不留檔)
a) 訊號(若有效)
回覆用戶的格式(先摘要辯論,結果放在最下方):
- 摘要辯論:初步提議、關鍵辯論點(附上簡短引述)、投票結果 + 每個角色使用的 AI 模型。
- 然後在最下方放置訊號區塊:
🔔 SIGNAL <PAIR> — <BUY/SELL> <LIMIT/STOP>
Entry: <價格> | SL: <價格> (<X> 點 = $<Y>,最高 $3)
TP: <價格> (RR 1:<r>) | Confidence: <Z>%
Reason: <1-2 句人類語言 — 為何選擇此水準與方向,來自辯論>
Valid: <時效/到期備註,例如若價格已越過水準則視為無效>
- 透過
rclone rcat gdrive:Linux-Server/signals/<YYYYMMDD>-<PAIR>/signal.md儲存,內容包含:日期、品種、完整訊號、兩位分析師的論點、投票結果、模型、預算、狀態:PENDING。
b) 不交易(投票分歧 / 數據無效)
輸出:「🚫 NO TRADE — <來自辯論的簡短原因>」,儲存到相同資料夾,狀態為 NO-TRADE。
c) signal-result win|lose [原因] 指令
- 尋找最後一個狀態為
PENDING的訊號:rclone lsf gdrive:Linux-Server/signals/ --dirs-only | sort | tail→ 透過rclone cat讀取其signal.md。如果沒有PENDING的訊號,詢問用戶指的是哪個訊號(在此模式下允許反問)。 - 更新 Drive 上的
signal.md:將狀態改為WIN/LOSE,新增一行結果 + 用戶原因 + 結算日期。 - 附加一行到交易紀錄
gdrive:Linux-Server/signals/track-record.md(若不存在則建立):YYYYMMDD | pair | 方向+類型 | 入場 | 結果 WIN/LOSE | 用戶原因。 - 簡短回覆用戶:結果已記錄 + 目前的交易紀錄統計(例如「XAUUSD: 4W-2L, 勝率 67%」——從交易紀錄計算)。
d) 訊號過期
如果用戶回報訊號從未觸及入場點(價格越過/反轉),則記錄為 LOSE,原因為用戶給的理由(例如「錯過時機」)——這仍然是有效的學習資料。
8. 禁止事項
- 禁止使用網路搜尋/網路擷取——數據必須來自本地 MT5。
- 禁止編造價格/ATR/支撐阻力水準。
- 若點差極大或市場關閉(tick_time 過時),禁止給出訊號——輸出 NO TRADE。
- 禁止止損超過 $3,禁止停利不在 RR 1:1.5/1:2 範圍內,禁止未經兩位分析師同意就使用市價單。
- 裁判禁止參與市場方向判斷。
- 裁判禁止進行分析/發表意見——即使裁判模型很聰明,其角色純粹是主持人。分析工作仍由分析師負責。