연동 개요

차트·주문·알림이 각자 다른 제품이라, 여기서는 어디와 손을 잡는지라이선스에 쓰는 ID를 정리합니다. 결제·DB·웹훅이 붙으면 회원 기간·텔레그램 전달이 한꺼번에 맞춰집니다.

TRV·MT5 ID 변경 — 권장 방식

TradingView(TRV) 사용자명과 MT5 계좌는 회원 이메일 기준 프로필에 저장합니다. 다계정·공유 남용을 줄이기 위해, MT5 운영 정책은 “브로커 선택 입력”이 아니라 MT5 계좌(로그인) 번호 + 접속 서버 이름의 조합을 이메일(회원) 1:1로 등록하는 방식을 권장합니다. EA/인디에서 AccountInfoInteger(ACCOUNT_LOGIN) 과 서버 문자열이 이 값과 맞는지 보면, 같은 브로커에 데모·소액을 여러 개 키는 경우까지 걸리게 할 수 있습니다. 브로커 1곳으로만 제한하는 방식은 해외·국내 겸용에 불리하므로 기본은 두지 않습니다.

API는 헤더 X-User-Id = 회원 이메일을 사용합니다. 모임터에서 이메일을 넣고 적용한 것과 같습니다.

비우면 TRV 사용자명을 해제합니다. 유료 플랜·초대 스크립트 권한 반영은 운영 확인 후 처리될 수 있습니다.

MT5는 계좌 번호와 서버를 둘 다 입력해야 합니다. 둘 다 비우면 MT5 등록을 해제합니다.

💡 텔레그램 일반 ID(@username)가 아닌 10자리 고유 숫자 ID를 입력하셔야 시그널 문자가 정상 발송됩니다. 내 숫자 ID 1초 만에 확인하기

TRV 시그널 웹훅 (TradingView → API)

이 저장소의 정적 사이트(S3·CloudFront)는 POST 본문을 받는 백엔드가 아닙니다. TradingView 알림의 Webhook URL은 magic-indicator-api 등 별도 서버의 공개 엔드포인트를 가리켜야 하며, 본문은 Pine alert()가 내보낸 JSON(또는 텍스트)이 그대로 전달됩니다.

엔드포인트·설정

Magic Core JSON 필드 (요약)

Dodam MagicTrading Strategy [Regular] 등 최종 Invite-only Pine 5종은 아래와 같이 magic_signal·licenseJsonFrag(tickerid, instrument_type, pos_state 등)를 포함합니다. 구형 entry_kind·limit_ml 전용 파서는 갱신이 필요합니다.

필드 설명
eventmagic_core_buy · magic_core_sell · magic_core_exit · magic_core_stop · magic_core_rb_online
magic_signalbuy · 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 시그널 웹훅과는 별 경로입니다 — 아래 섹션.

경제 지표 사전 알림 — 서버(Cron 웹훅)

S3·CloudFront 정적 사이트만으로는 HTTP를 받을 수 없습니다. Finnhub 등도 일정을 푸시하지 않는 경우가 많아, 운영용 Node 서버를 두고 Cron-job.org·GitHub Actions·crontab 등이 비밀 POST로 주기적으로 호출합니다. 저장소에 Dockerfile · docker-compose · Nginx 스니펫 · DEPLOY.md까지 포함되어 있습니다.

배포 요약

  1. server/economic-cron/에서 cp env.example .env 후 키·토큰·CRON_SECRET 입력.
  2. mkdir -p datadocker compose up -d --build (또는 npm install · npm start).
  3. Nginx에 nginx-snippet.conf 반영 → 공개 URL 예: https://magicindicatorglobal.com/v1/cron/economic-calendar
  4. 외부 Cron이 1~3분마다 POST (헤더 Authorization: Bearer … 또는 X-Cron-Secret).

상세 절차·systemd 예시: 저장소 server/economic-cron/DEPLOY.md

엔드포인트

환경 변수 (필수·주요)

이름 설명
CRON_SECRETPOST 인증용 비밀 문자열
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)

curl -sS -X POST "https://YOUR_DOMAIN/v1/cron/economic-calendar" \
  -H "Authorization: Bearer YOUR_CRON_SECRET"

루트 npm 스크립트

사이트 루트에서 npm run econ-cron:install · npm run econ-cron:start (로컬 실행 시 server/economic-cron/.env 필요).

Python 대안

tools/econ-news-telegram-alert/run.py --once — 동일 Finnhub·텔레그램 설정으로 Cron이 subprocess 호출 가능.

TRV Pine과의 관계

Dodam MagicTrading Strategy [Regular] 등 최종 Pine의 진입 필터(장마감·타임존·손실 쿨다운)은 차트 안에서만 동작합니다. 본 Cron 서비스는 텔레그램 일정 안내용이며 Pine과 HTTP로 직결되지 않습니다.

주소·게시판 (SEO)

게시판 경로는 영문 슬러그를 쓰면 알림·봇·검색이 편합니다. 예: /boards/announcement, /boards/qa — 한글 제목은 화면에만 써도 됩니다.

TRV

알림·Webhook URL, Pine JSON 스키마는 위 — TRV 시그널 웹훅을 참고하세요. 시그널은 API 서버가 받아 텔레그램 등으로 넘깁니다.

MetaTrader 5

계좌 번호+서버 1조합 1:1 등록(위) · EA/인디 배포, 터미널 호환, 브로커 정책(스프레드·거래시간)은 상품·가이드에 따릅니다.

Webhook

TRV 알림 → 서버 URL. 본문에 회원 식별 토큰을 넣고, 서버가 유효기간을 본 뒤 텔레그램으로만 넘기는 식으로 설계합니다. 경제 캘린더는 위 — Cron 웹훅처럼 스케줄러가 POST로 백엔드를 깨우는 패턴이 맞습니다.

Telegram

봇 토큰·채팅 ID·메시지 포맷. 가이드 — Chat ID와 연계합니다. 경제 지표 사전 알림은 Cron 웹훅에서 동일 봇으로 발송합니다.