Files
bot/strategy.js
2025-08-30 23:51:39 +09:00

110 lines
5.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// strategy.js
import logger from './logger.js';
import {OpenAI} from "openai";
const prompts = {
"1h": `당신은 2025년 기준 코인 선물 스윙 트레이딩 전문가입니다.
1시간봉 기준으로 **3~5배 레버리지**로 안정적 수익을 추구하며, 다음 규칙을 엄수합니다.
### 📌 핵심 분석 지표 (2025년 검증)
**롱 진입 조건**
(3가지 중 2개 충족 시):
1. EMA20 > EMA50 상향 정배열 + 가격이 VWAP 지지
2. RSI(14) 40 이하에서 반등 + 양봉 수신
3. Funding Rate < -0.05% (과도한 숏 포지션)
**숏 진입 조건** (3가지 중 2개 충족 시):
1. 가격이 볼린저 밴드 상단 돌파 후 재수렴 + MACD 히스토그램 감소
2. Liquidation Heatmap에서 롱 리퀴 전방 클러스터 발생
3. Funding Rate > 0.1% (과도한 롱 포지션)
### ⚙️ 리스크 관리
**스탑로스**: 최근 6봉 저점(롱)/고점(숏) ± 0.5% or ATR(14)*1.5
**테이크프로핏**: 1:2 비율 (예: SL 1% → TP 2%)
**홀드 조건**: 지표 간 신호 충돌 또는 뉴스 이벤트 1시간 전
### 📊 데이터 해석 규칙
**VWAP**: 가격이 상승 시 지지/저항 역할
**다이버전스**: RSI/MACD와 가격 움직임 불일치 시 강력 신호
**OVM**: Liquidation Cluster 밀집 구간 확인 (Coinalyze 기준)
### 📝 출력 형식 (반드시 JSON 으로만 대답 )
{ side : LONG/SHORT/HOLD, price : 진입가(소수점 1자리), sl : "손절가(소수점 1자리), tp : 익절가(소수점 1자리),reason : 지표 조합 요약 (예: EMA 정배열+VWAP 지지+Funding Rate 저수준)}
⚠️ **2025년 특이사항**: 기관 매집 구간(EMA20)과 리퀴데이션 헌팅 구간 필수 확인, 과매매 신호(RSI 30/70)는 보조 필터로만 사용
아래 1시간봉 200개 데이터 입니다.
[데이터 타입]
[{"t":<Unix ts>,"o":<float>,"h":<float>,"l":<float>,"c":<float>,"v":<float>}, …]`,
'15m': `당신은 2025년 기준 코인 선물 **15분봉 전문 트레이더**입니다. 15분 단위로 신속한 진입/청산이 필수적이며, **2~3배 레버리지**로 고빈도 수익을 추구합니다. 다음 규칙을 철저히 적용하세요.
### 📌 핵심 분석 지표 (15분봉 최적화)
- **롱 진입 조건** (2가지 충족 시):
1. EMA9 > EMA21 정배열 + 가격이 **15분 VWAP 상향 돌파** (2회 재테스트 성공)
2. RSI(9) 30 이하에서 **역다이버전스** + 양봉 체인 2연속
3. Funding Rate < -0.03% + Liquidation Cluster(0.2% 구간) 형성
- **숏 진입 조건** (2가지 충족 시):
1. 볼린저 밴드(14,1.5σ) 상단 **3회 테스트 실패** + MACD(6,13,9) 히스토그램 급감
2. OVM에서 **롱 리퀴 헌팅 구간** (Coinalyze 기준 5분 내 집중)
3. Funding Rate 15분 이동평균 > 0.07%
### ⚙️ 15분봉 특화 리스크 관리 (!!!!꼭 지겨야 하는 조건)
- **스탑로스**: 최근 3봉 저점(롱)/고점(숏) ± 0.3% or ATR(7)*1.2
- **테이크프로핏**: 1:2 비율 (예: SL 0.5% → TP 1.0%)
- **홀드 조건**:
• 15분 내 고강도 뉴스 발생 (예: Fed 발표, ETF 승인)
• 거래량 30% 감소 + 볼린저 밴드 압축
### 📊 15분봉 데이터 해석 핵심
- **VWAP**: 15분 단위 재계산, **상승 시 0.15% 이내 재테스트** 필수
- **다이버전스**: RSI/MACD 신호 지속시간 **3봉 이내**만 유효
- **OVM**: Liquidation Cluster **0.2% 미만 밀집 구간**에만 반응
### 📝 출력 형식 (순수 JSON, 추가 설명 금지, !!반드시 JSON 으로만 대답)
{
side: LONG/SHORT/HOLD,
price: 진입가(소수점 2자리),
sl: 손절가(소수점 2자리),
tp: 익절가(소수점 2자리),
reason: 핵심 2가지 지표 조합 (예: EMA9/21 정배열+리퀴 헌팅 구간 형성)
}
⚠️ **2025년 15분봉 특이사항**:
- 기관 알고리즘 트레이딩으로 **0.5% 미만의 짧은 파동**이 주류
- Funding Rate 변동 **15분 이동평균**만 고려 (순간값 무시)
- VWAP 재테스트 시 **캔들 종가 기준** 필수 확인"
아래 15분봉 데이터 입니다.
[데이터 타입]
[{"t":<Unix ts>,"o":<float>,"h":<float>,"l":<float>,"c":<float>,"v":<float>}, …]
캔들스틱 데이터 15분봉 :
`
}
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["15m"]}
${JSON.stringify(bars)}
`;
const completion = await openai.chat.completions.create({
model: 'qwen/qwen3-235b-a22b-2507',
messages: [
{
role: 'user',
content: content,
},
],
});
console.log(Date.now())
const msg = completion.choices[0].message.content
logger.debug(msg);
const sig = JSON.parse(msg)
return sig;
}