// strategy.js import logger from './logger.js'; import {OpenAI} from "openai"; const prompts = { "1h": `BTC/USDT 1시간 스윙 트레이딩 엔진입니다. - 시간대: 1시간 캔들만. - 일일 거래 빈도 목표: ≥ 3개의 유효 설정. - 거래당 위험: 계좌 잔액의 1% 이하. - 동시에 2개 이상의 포지션을 보유하지 마십시오. - 최종 JSON 외부에 해설을 추가하지 마십시오. [입력] 최근 1시간 캔들 50개(최근 캔들 순, 형식: [{"t":,"o":,"h":,"l":,"c":,"v":}, …] LONG: - 9-EMA > 21-EMA (둘 다 상승). - RSI14가 40~60 사이이고 이전 캔들 대비 상승하는 경우. - Close ≥ VWAP. - Close ≤ 스윙 고점 - ATR14×0.5 (작은 하락 구간). SHORT: - 9-EMA < 21-EMA (둘 다 하락). - RSI14가 40~60 사이이고 이전 캔들 대비 하락하는 경우. - Close ≤ VWAP. - Close ≥ 스윙 저점 + ATR14×0.5 (작은 하락 구간). HOLD: - 매수 또는 매도 조건이 모두 충족되지 않는 경우. JSON만 반환하며, 콜론 뒤에 공백은 포함하지 않습니다. {"side":"LONG|SHORT|HOLD","price":,"sl":,"tp":,"reason":"<최대 200단어>"} 진입 가격(한도) = 현재 캔들 종가 *손절(SL) *익절(TP) 는 제공된 캔들의 추세선으로 설정해주세요.(중요) 모든 가격을 가장 가까운 0.1 USDT로 반올림하세요. reason 은 한국어로 대답해줘.`, '5m': `당신은 2025년 기준 코인 선물 **5분봉 전문 트레이더**입니다. 5분 단위로 신속한 진입/청산이 필수적이며, **5~10배 레버리지**로 고빈도 수익을 추구합니다. 다음 규칙을 철저히 적용하세요. 📌 1. 환경 필터링: 시장 상황 확인 꼬리잡기는 횡보장 또는 과열된 트렌드장의 끝자락에서 가장 효과적입니다. 다음 조건을 충족해야 합니다: 방향성 안정 (예: 1시간봉이 횡보 또는 완만한 추세) 해당 알트코인의 거래량 증가 (특히 꼬리 발생 시점에 거래량 급증) 지지/저항 구간, 이전 고점/저점 근처 RSI(14)가 30 이하 또는 70 이상 (과매도/과매수 신호) ✅ 예: RSI가 75 이상에서 상승꼬리(윗꼬리) 발생 → 숏 기회 📌 2. 신호 캔들 조건: 꼬리의 신뢰성 판단 ✅ 유효한 꼬리 조건: 꼬리 길이가 몸통의 2배 이상 (중요) 시가와 종가가 꼬리 반대편에 위치 (예: 긴 위꼬리 → 종가가 하단 근처) 거래량이 해당 캔들에서 급증 꼬리가 지지/저항 레벨을 테스트 후 반락 🔍 예시: 5분봉에서 위꼬리가 3% 길이로 튀고, 종가는 몸통 아래쪽에 위치 → 과매수 후 되돌림 가능성 높음 📌 3. 진입 전략 (Entry) ✅ 숏 포지션 진입 시나리오: 캔들이 윗꼬리로 마감 (상승 후 급락) 다음 5분봉이 하락 캔들로 시작 진입 지점: 이전 꼬리의 고점 아래 0.3~0.5% 스탑로스: 꼬리 고점 + 0.3% (초과 진입 방지) 꼬리 길이가 몸통의 2배 이상 (중요) 테이크프로핏: 이전 지지선 또는 1:2 비율 (예: 스탑로스 0.8% → 목표 1.6%) 🎯 예: 꼬리 고점 1000, 종가 990 → 진입 997, 스탑 1003, 목표 985 ✅ 롱 포지션 진입 시나리오: 캔들이 아래꼬리로 마감 (급락 후 반등) 다음 5분봉이 상승 캔들로 시작 진입 지점: 꼬리 저점 위 0.3~0.5% 스탑로스: 꼬리 저점 - 0.3% 꼬리 길이가 몸통의 2배 이상 (중요) 테이크프로핏: 이전 저항 또는 1:2 비율 🎯 예: 꼬리 저점 900, 종가 910 → 진입 903, 스탑 897, 목표 920 📌 4. 필터링 추가: 더 높은 승률을 위한 조건 다른 지표 확인: 볼린저 밴드: 꼬리가 밴드 상단/하단을 돌파했다가 돌아올 때 MACD: 꼬리 발생 시 다이버전스 발생 (가격 신고점, MACD 비신고점 → 반전 신호) 📌 5. 리스크 관리 (필수!) 포지션 사이즈: 1~2% 이내 (과도한 레버리지 금지) 레버리지: 5~10배 권장 (20배 이상은 스탑로스 헌팅에 취약) 하루 최대 진입 횟수: 3~5회 (과매매 방지) 손절 원칙: 절대 스탑로스 이동 금지 (초기 설정 고수) 📌 6. 실전 예시 (가상 시나리오) 코인: SOL/USDT 시간: UTC 14:00 상황: 미 연준 발표 후 급등 → 5분봉에서 윗꼬리 발생 (고점 +4%, 종가 +1%) RSI: 78 → 과매수 오더북: 155.00 근처에 대량 숏 지정가 몰려 있음 전략: 진입: 154.80 (윗꼬리 고점 155.20 아래 0.3%) 스탑로스: 155.60 (+0.3%) 목표: 152.00 (지지선), 1:2.5 비율 결과: 15분 내 목표 도달 → 익절 ✅ 요약: 꼬리잡기 최적 시나리오 체크리스트 🕐 시간 5분봉 기준 📈 꼬리 몸통 대비 2배 이상, 거래량 급증 🧭 위치 지지/저항, 과매수/과매도 구간 📊 필터 RSI, 볼린저밴드, MACD 다이버전스 📥 진입 꼬리 반대편 0.3~0.5% 🛑 스탑로스 꼬리 끝 +0.3% 🎯 목표 1:2 이상, 이전 지지/저항 ⚖️ 리스크 1~2% 포지션, 5~10배 레버리지 💡 팁: 꼬리잡기의 함정 피하기 트렌드 강할 땐 회피: 강한 상승장에서 윗꼬리도 계속 상승할 수 있음 고점/저점에서만 유효: 중간 구간 꼬리는 노이즈일 확률 높음 매수 꼬리 vs 매도 꼬리: 하락장에서 아래꼬리는 트랩(bear trap)일 수 있음 → 추가 확인 필수 **JSON만 반환하며, 콜론 뒤에 공백은 포함하지 않습니다.** {"side":"LONG|SHORT|HOLD","price":,"sl":,"tp":,"reason":"<최대 200단어>"} 아래 5분봉 데이터 입니다. [데이터 타입] [{"t":,"o":,"h":,"l":,"c":,"v":}, …] ` } const openai = new OpenAI({ baseURL: 'https://openrouter.ai/api/v1', apiKey: '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', }); export async function aiSignal(bars) { if (bars.length < 20) return null; console.log(Date.now()) const content = ` ${prompts["5m"]} ${JSON.stringify(bars)} `; const completion = await openai.chat.completions.create({ model: 'qwen/qwen3-coder', messages: [ { role: 'user', content: content, }, ], }); try { console.log(Date.now()) const msg = completion.choices[0].message.content logger.debug(msg); const sig = JSON.parse(msg) return sig; } catch(e) { return {side : 'HOLD'} } }