SKILL: signal — M3/M5 스캘핑 시그널 via 2 AI 토론
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. 트레이딩 하드 룰 (심판이 검증, 분석가가 아님)
- 주문 유형: 매수/매도 리밋 또는 스톱만 (기술적 레벨에서 지정가 주문). 시장가 주문은 두 분석가가 가격이 정확히 해당 레벨에 있다고 동의하고 그 내용이 명시적으로 기록된 경우에만 허용됩니다.
- 시그널당 SL 최대 $3 (로트 0.01) — 고정 300포인트가 아닙니다.
mt5_query.py scalp출력의risk블록에서 페어별로 자동 변환됩니다:sl_max_points = risk.sl_max_points(XAUUSD ≈ 300포인트 = $3; 다른 페어는 자동으로 다름). 이를 초과하는 분석가의 SL 제안은 심판이 거부하고 수정을 위해 반송합니다. - TP = SL 거리의 RR 1:1.5 또는 1:2. 하나를 선택하고 RR을 명시하십시오.
- 분석 타임프레임: M3 + M5 (주) + H1 (큰 방향 참고).
- 적정 스프레드: 스프레드가 제안된 SL 거리의 ~20%를 초과하면 분석가가 반드시 강조해야 함 (스프레드가 넓은 상황에서는 리밋 진입이 더 안전).
3. 데이터 (순수 MT5 로컬 — 웹/websearch 없음, 속도 향상)
단일 명령어:
~/.local/share/mt5-venv/bin/python ~/.config/opencode/skills/signal/scripts/mt5_query.py scalp <SYMBOL>
JSON 출력: bid/ask, 스프레드, risk (usd/point, sl_max_points), 일간 변화, M3/M5/H1 (ATR14, EMA20/50, 추세, 지지/저항, 레인지, 마지막 캔들 + 바디 방향). 이 원시 출력을 두 분석가 모두에게 제공하십시오. MT5 데이터를 임의로 생성하는 것은 금지됩니다.
시간대: 시간을 WIB + 괄호 안에 MT5 서버 시간(UTC+3) 으로 표시, 예: 21:45 WIB (17:45 서버). WIB = 서버 + 4시간.
4. 트랙 레코드로부터 학습 (토론 전 필수)
- 1라운드 전, 심판이 트랙 레코드를 가져옵니다:
rclone cat gdrive:Linux-Server/signals/track-record.md(404/not found면 아직 비어 있음, 기록 없이 진행 — 이를 보고). - 최근 결과 패턴을 요약하고(예: "최근 5번 손실 모두 하락 추세에서의 매도 리밋") 두 분석가에게 학습 맥락으로 제공: 승리 패턴은 반복 가능, 패배 패턴은 피하거나 분석가가 이번에는 왜 다른지 반박해야 함.
- 시그널은
gdrive:Linux-Server/signals/<YYYYMMDD>-<pair>/signal.md에 저장되며 상태는PENDING입니다 (§7 참조).
5. 토론 (분석가 2명 + 심판 1명, 3-5회 대화)
역할 및 모델 (subagent 도구, general 에이전트, model 매개변수 명시적 사용):
| 역할 | 모델 | 임무 |
|---|---|---|
| 분석가 1 — 기술적 진입 | opencode/step-5-preview-free | M3/M5 구조, 주문 유형(리밋/스톱), 진입, SL, TP, 타이밍 |
| 분석가 2 — 리스크 관리자 | opencode/nemotron-3.5-lightning-free | SL/TP 검증, R:R, 레벨 함정(스탑 헌트, 스프레드, 세션), 포지션 사이징 |
| 심판 = 메인 에이전트, 모델 = 현재 실행 중인 세션의 모델 (동적) | — | 중립: 오케스트레이션, 데이터 전송, 하드 룰 검증(§2), 투표 계산, 출력 정리. 시장 방향 분석/의견 제시 금지. 심판 = 이 세션을 실행 중인 AI 모델 — 모든 프로바이더 가능; 항상 custom/auto라고 가정하지 마십시오. 출력을 작성할 때 자신의 모델을 확인하고 실제 이름을 기입하십시오. |
진행:
- 1라운드 (독립): 두 분석가에게 MT5 데이터 + 트랙 레코드 요약을 전송. 각각 제안: 방향, 주문 유형, 진입, SL (포인트 및 $), TP (RR), 확신도 %, 이유.
- 토론 라운드 (1-3라운드): 서로 텍스트를 주고받음. 새 MT5 데이터 요청 가능 (
scalp재호출 — 가격 변동). 실제 의견 차이에 집중: 레벨, 주문 유형, SL 유효성. - 최종 입장: 각자 최종 입장을 표명.
- 투표: 두 분석가 동의 → 시그널 유효. 의견 불일치 = NO TRADE (공식 출력: 시그널 없음 + 간단한 이유). 이는 유효하고 정상적인 결과이며, 강제로 시그널을 만들지 마십시오.
Rate limit 발생 시 폴백 모델 (Tier 1 순서): opencode/longcat-2.5-preview-free → opencode/space-bunny-free → opencode/cat-jam-free; Tier 2 최대 1명 분석가: 9roy/9router_combo; Tier 3: custom/auto ("babu") — 심판이 custom/auto가 아닌 경우에만 (한 모델이 두 역할을 동시에 할 수 없음). 대안이 있다면 동일한 프로바이더의 분석가 2명을 사용하지 마십시오. 오류 재시도 최대 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>) | 확신도: <Z>%
Reason: <1-2문장 평이한 언어 — 왜 이 레벨과 방향인지, 토론에서 도출>
유효 기간: <타이밍/만료 메모, 예: 가격이 이미 레벨을 지나면 무효>
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 | 방향+유형 | entry | 결과 WIN/LOSE | 사용자 이유. - 사용자에게 간단히 답변: 결과 기록됨 + 진행 중인 트랙 레코드 통계 (예:
XAUUSD: 4W-2L, 승률 67%— 트랙 레코드에서 계산).
d) 시그널 만료
사용자가 시그널이 진입에 도달하지 못했다고 보고하면 (가격이 지나가거나 되돌아옴), LOSE로 기록하고 사용자 이유 포함 (예: "时机错过") — 이는 여전히 유효한 학습 데이터입니다.
8. 금지 사항
- 웹서치/웹페치 사용 금지 — 데이터는 순수 MT5 로컬.
- 가격/ATR/레벨 임의 생성 금지.
- 스프레드 극심 또는 시장 마감 (tick_time 오래됨) 시 시그널 제공 금지 — NO TRADE 출력.
- SL $3 초과 금지, TP가 RR 1:1.5/1:2 범위를 벗어나는 것 금지, 두 분석가 동의 없는 시장가 주문 금지.
- 심판이 시장 방향 평가에 참여 금지.
- 심판이 분석/의견 제시 금지 — 심판 모델이 똑똑하더라도 역할은 순수 중재자. 분석은 분석가의 몫.