차트·주문·알림이 각자 다른 제품이라, 여기서는 어디와 손을 잡는지와 라이선스에 쓰는 ID를 정리합니다. 결제·DB·웹훅이 붙으면 회원 기간·텔레그램 전달이 한꺼번에 맞춰집니다.
TradingView(TRV) 사용자명과 MT5 계좌는 회원 이메일 기준 프로필에 저장합니다. 다계정·공유 남용을 줄이기 위해, MT5 운영 정책은
“브로커 선택 입력”이 아니라 MT5 계좌(로그인) 번호 + 접속 서버 이름의 조합을 이메일(회원) 1:1로 등록하는 방식을 권장합니다. EA/인디에서
AccountInfoInteger(ACCOUNT_LOGIN) 과 서버 문자열이 이 값과 맞는지 보면, 같은 브로커에 데모·소액을 여러 개
키는 경우까지 걸리게 할 수 있습니다. 브로커 1곳으로만 제한하는 방식은 해외·국내 겸용에 불리하므로 기본은 두지
않습니다.
@는 서버에서 제거해 저장합니다.비우면 TRV 사용자명을 해제합니다. 유료 플랜·초대 스크립트 권한 반영은 운영 확인 후 처리될 수 있습니다.
MT5는 계좌 번호와 서버를 둘 다 입력해야 합니다. 둘 다 비우면 MT5 등록을 해제합니다.
💡 텔레그램 일반 ID(@username)가 아닌 10자리 고유 숫자 ID를 입력하셔야 시그널 문자가 정상 발송됩니다. 내 숫자 ID 1초 만에 확인하기
이 저장소의 정적 사이트(S3·CloudFront)는 POST 본문을 받는 백엔드가 아닙니다. TradingView 알림의 Webhook URL은
magic-indicator-api 등 별도 서버의 공개 엔드포인트를 가리켜야 하며, 본문은 Pine alert()가 내보낸 JSON(또는 텍스트)이 그대로 전달됩니다.
<meta name="api-base" content="https://magicindicatorglobal.com" /> — Webhook URL 예:
https://magicindicatorglobal.com/api/webhooks/signals/tradingview
GET …/api/webhooks/signals/health (배포 환경에 따라 경로는 API README 기준)X-Webhook-Secret, Authorization: Bearer …, 또는 ?secret= — 서버 환경 변수와 동일한 값alert()가 JSON을 만드는 경우, 차트 알림의 Webhook URL에 API 주소를 넣고
Message 칸은 기존 문구를 모두 지운 뒤 {{alert_message}} 한 줄만 입력합니다.
그래야 secure_token, license_pack, tv_id, tickerid, timenow가 누락되지 않습니다.
secure_token과 license_pack을 먼저 대조하고,
Redis 키 webhook:{tv_id}:{tickerid}를 5~10초 잠가 중복 컴파일성 알림을 DB 기록 없이 200 OK로 드롭합니다.
52.89.214.238, 34.212.75.30,
54.112.49.92, 54.112.51.100만 허용하고, 프록시 뒤에서는 원본 IP가 x-forwarded-for로 보존되어야 합니다.
Dodam MagicTrading Strategy [Regular] 등 최종 Invite-only Pine 5종은 아래와 같이 magic_signal·licenseJsonFrag(tickerid,
instrument_type, pos_state 등)를 포함합니다. 구형 entry_kind·limit_ml 전용 파서는 갱신이 필요합니다.
| 필드 | 설명 |
|---|---|
event | magic_core_buy · magic_core_sell · magic_core_exit · magic_core_stop · magic_core_rb_online 등 |
magic_signal | buy · sell · exit · stop_fixed · stop_trail · rainbow_online |
side | 진입·청산 의미 (long / short / flat) |
band_edge · entry_anchor | 리밋 밴드(ML/MH) — Invite-only 빌드는 스트래들 진입 |
magic_line · exit_anchor | 익절 종료 시 중심선 기준 |
stop_price | 고정·트레일 스탑 JSON |
license_pack · tickerid | 라이선스·심볼 해상도 |
경제 지표 Cron(POST /v1/cron/economic-calendar)은 Finnhub·텔레그램용이며, TRV 시그널 웹훅과는 별 경로입니다 —
아래 섹션.
S3·CloudFront 정적 사이트만으로는 HTTP를 받을 수 없습니다. Finnhub 등도 일정을 푸시하지 않는 경우가 많아, 운영용 Node 서버를 두고 Cron-job.org·GitHub Actions·crontab 등이 비밀 POST로 주기적으로 호출합니다. 저장소에 Dockerfile · docker-compose · Nginx 스니펫 · DEPLOY.md까지 포함되어 있습니다.
server/economic-cron/에서 cp env.example .env 후 키·토큰·CRON_SECRET 입력.mkdir -p data 후 docker compose up -d --build (또는 npm install · npm start).nginx-snippet.conf 반영 → 공개 URL 예:
https://magicindicatorglobal.com/v1/cron/economic-calendar
POST (헤더 Authorization: Bearer … 또는 X-Cron-Secret).
상세 절차·systemd 예시: 저장소 server/economic-cron/DEPLOY.md
POST /v1/cron/economic-calendar — 본문 없음. 응답 예: {"ok":true,"checked":N,"sent":M}GET /health — ok 텍스트| 이름 | 설명 |
|---|---|
CRON_SECRET | POST 인증용 비밀 문자열 |
FINNHUB_API_KEY | 경제 캘린더 API |
TELEGRAM_BOT_TOKEN | 봇 토큰 |
TELEGRAM_CHAT_ID | 수신 채팅 ID |
ALERT_MINUTES_BEFORE | 발표 몇 분 전 알림 (기본 30) |
STATE_FILE | 중복 방지 JSON 경로 (Compose는 /app/data/sent_state.json) |
SOURCE_TIMEZONE / DISPLAY_TIMEZONE | 시각 해석·표시 (IANA) |
curl -sS -X POST "https://YOUR_DOMAIN/v1/cron/economic-calendar" \
-H "Authorization: Bearer YOUR_CRON_SECRET"
사이트 루트에서 npm run econ-cron:install · npm run econ-cron:start (로컬 실행 시 server/economic-cron/.env 필요).
tools/econ-news-telegram-alert/run.py --once — 동일 Finnhub·텔레그램 설정으로 Cron이 subprocess 호출 가능.
Dodam MagicTrading Strategy [Regular] 등 최종 Pine의 진입 필터(장마감·타임존·손실 쿨다운)은 차트 안에서만 동작합니다. 본 Cron 서비스는
텔레그램 일정 안내용이며 Pine과 HTTP로 직결되지 않습니다.
게시판 경로는 영문 슬러그를 쓰면 알림·봇·검색이 편합니다. 예: /boards/announcement, /boards/qa — 한글 제목은 화면에만 써도 됩니다.
알림·Webhook URL, Pine JSON 스키마는 위 — TRV 시그널 웹훅을 참고하세요. 시그널은 API 서버가 받아 텔레그램 등으로 넘깁니다.
계좌 번호+서버 1조합 1:1 등록(위) · EA/인디 배포, 터미널 호환, 브로커 정책(스프레드·거래시간)은 상품·가이드에 따릅니다.
TRV 알림 → 서버 URL. 본문에 회원 식별 토큰을 넣고, 서버가 유효기간을 본 뒤 텔레그램으로만 넘기는 식으로 설계합니다. 경제 캘린더는 위 — Cron 웹훅처럼 스케줄러가 POST로 백엔드를 깨우는 패턴이 맞습니다.
봇 토큰·채팅 ID·메시지 포맷. 가이드 — Chat ID와 연계합니다. 경제 지표 사전 알림은 Cron 웹훅에서 동일 봇으로 발송합니다.