당사 팬 페이지에 가입하십시오
- 조회수:
- 21
- 평가:
- 게시됨:
-
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
하이브리드 마이크로스트럭처 EA는 M1 시간대의 XAUUSD(금) 를 위해 특별히 설계된, 첨단 고주파 스캘핑 전문가 자문( EA )입니다. 지연되는 OHLC 수학적 계산에 의존하는 기존 지표들과 달리, 이 EA는 틱 수준의 미세구조 역학을 기반으로 작동하며, 틱 속도, 거래량 가중 평균 가격(VWAP) 편차, 그리고 기관 투자자들이 실행하는 유동성 스윕 거부(스톱 헌트)를 추적합니다.
백테스트:
결정론적 로컬 규칙과 적응형 지능 간의 격차를 해소하기 위해, 이 EA는 내부 가중치 스코어링 엔진과 외부 OpenAI 호환 로컬 AI API(Python/FastAPI를 통해)를 모두 지원하는 ‘AI 브리지 의사결정 계층’을 갖추고 있어, 주문 실행 전 최종 사실 기반 게이트키퍼 역할을 수행합니다.
주요 기능 :
- 틱 미세구조 엔진: 실시간 틱 속도 윈도우와 링 버퍼 VWAP 편차를 계산하여 지연되는 지표를 우회합니다.
- 유동성 확보 및 스냅백 가드: 소매 투자자의 손절매 주문이 극단적인 VWAP 대역을 벗어나도록 기다린 후, 가격의 스냅백/거부 현상이 확인된 경우에만 진입을 실행합니다.
- 듀얼 엔진 AI 브리지: 다중 요소 의사 결정 검증을 위해 결정론적 로컬 스코어링 매트릭스와 선택적 로컬 AI 웹 엔드포인트( /analyze )를 통합합니다.
- 다중 세션 및 변동성 필터: 위험한 롤오버 기간을 우회하면서 활성 거래 세션(아시아, 런던, 중동)으로만 체결을 제한합니다.
- 고급 리스크 및 자금 관리: 고정 랏 또는 리스크 비율(잔고/순자산의 %) 방식의 포지션 크기를 지원하며, 동적 ATR/고정 손절, 손익분기점, 트레일링 스톱 보호 기능을 제공합니다.
1. 코드 구조 및 워크플로우:
- OnTick() : 스프레드 확인, 실시간 틱 버퍼 업데이트, VWAP 계산 및 유동성 확보 상태 머신을 실행하는 핵심 루프입니다.
- CalculateTickVWAP() : 500틱 링 버퍼를 기반으로 거래량 가중 평균 가격(VWAP)과 표준 편차 밴드를 동적으로 계산합니다.
- AIBridge_Confirm() : 다중 타임프레임(H1, M15, M5) 추세, M1 구조 및 속도 지표를 평가하여 최종 필터 역할을 하는 의사결정 게이트웨이입니다.
- AIBridge_LocalScore() : 측정된 시장 데이터를 기반으로 결정론적 가중 점수(0.0~1.0)를 계산합니다.
- AIBridge_WebCall() : 실시간 시장 데이터를 엄격한 JSON 페이로드로 패키징하여 로컬 Python/FastAPI 서버와 비동기적으로 통신합니다.
- SecureProfits() : MT5 TRADE_ACTION_SLTP 요청을 사용하여 자동 손익분기점 및 추적 스탑 수정을 안전하게 관리합니다.
2. 실행 워크플로우 :
- 틱 수집 및 필터링: 최대 허용 스프레드, 활성 거래 시간, 최소 M1 ATR 변동성을 기준으로 수신된 틱을 검증합니다.
- 미세구조 추적: 틱 속도 가속도와 VWAP 밴드 확장(+/- 표준편차)을 평가하기 위해 링 버퍼를 지속적으로 구축합니다.
- 트리거 및 AI 검증: 유동성 스윕이 외부 밴드를 초과한 후 스냅백 거절이 발생하면, 해당 컨텍스트가 AI 브리지 레이어로 전송됩니다.
- 결정 및 실행: 로컬 스코어링 또는 외부 AI 모델이 거래를 승인하는 경우(높은 신뢰도로 ALLOW=YES), ExecuteTrade()는 동적 리스크 기반 로트 크기를 계산하고 최적의 체결 모드(IOC / FOK)를 사용하여 주문을 발주합니다.
이 EA는 OpenAI 스타일의 JSON 페이로드(`messages`, `role: system`, `role: user` 포함)를 포함한 HTTP POST 요청을 전송하도록 설계되었으며, `decision`, `confidence`, `reason`을 포함하는 JSON 응답을 반환받습니다.
이러한 MT5 요청에 밀리초 단위로 응답할 수 있는 로컬 AI API(로컬 서버)를 구축하기 위해서는 FastAPI 프레임워크를 사용하는 파이썬이 이상적인 프로그래밍 언어입니다. FastAPI는 가볍고 매우 빠르며, MT5에서 전송되는 고주파수 데이터를 처리하는 데 완벽하게 적합합니다.
다음은 전체 파이썬 서버 코드입니다. 나중에 이 엔진에 실제 머신러닝 모델(예: TensorFlow, Scikit-Learn, 또는 로컬 LLM용 Ollama 등)을 통합할 수 있습니다.
1. 파이썬 환경 설정
컴퓨터에 파이썬이 설치되어 있는지 확인하십시오. 터미널 또는 명령 프롬프트를 열고 다음 두 가지 필수 라이브러리를 설치하십시오:
pip install fastapi uvicorn
2. 파이썬 API 코드 (local_ai_bridge.py)
컴퓨터에 local_ai_bridge.py라는 파일을 생성하고 다음 코드를 복사하세요: (Python)
from fastapi import FastAPI, Request from pydantic import BaseModel from typing import List, Optional import json import uvicorn app = FastAPI(title="MT5 AI Microstructure Bridge") # --- 데이터 모델 (MQL5 데이터 형식과 호환됨) --- class Message(BaseModel): role: str content: str class AIRequest(BaseModel): model: str temperature: float response_format: Optional[dict] = None messages: List[Message] # --- 주요 엔드포인트 (/analyze) --- @app.post("/analyze") async def analyze_market(payload: AIRequest): """ This endpoint receives tick and microstructure data from MT5, analyzes the data, and returns a BUY/SELL/WAIT decision. """ # 1. MT5에서 전송한 “user” 메시지에서 JSON 데이터를 추출합니다. user_content = "{}" for msg in payload.messages: if msg.role == "user": user_content = msg.content break try: facts = json.loads(user_content) except json.JSONDecodeError: return {"decision": "WAIT", "confidence": 0.0, "reason": "Invalid JSON format"} # 2. 시장 현황 파악 order_type = facts.get("order_type", "WAIT") high_velocity = facts.get("high_velocity", False) snapback_pips = facts.get("snapback_pips", 0.0) min_snapback = facts.get("min_snapback_pips", 2.0) deviation_z = facts.get("deviation_z", 0.0) mtf = facts.get("mtf", {}) m1_structure = facts.get("m1_structure", {}) # 3. AI / 의사결정 알고리즘 (나중에 머신러닝 모델로 대체 가능) # 다음은 의사결정 논리의 간단한 예시입니다. confidence = 0.0 decision = "WAIT" reason = "" # EA가 매도(SELL) 확인을 요청할 때의 논리를 평가해 보세요 if order_type == "SELL": score = 0 # 스냅백 및 속도 검증 if snapback_pips >= min_snapback and high_velocity: score += 0.4 # 극단적인 편차 검증 (과매수 상태) if deviation_z > 2.0: score += 0.3 # MTF 정렬 확인 (적어도 H1 또는 M15 중 하나는 하락 추세여야 함) if mtf.get("h1_down") or mtf.get("m15_down"): score += 0.2 # M1 거부 신호 확인 (긴 상단 촛대) if m1_structure.get("upper_wick_ratio", 0.0) >= 0.2: score += 0.1 confidence = score if confidence >= 0.70: decision = "SELL" reason = "High velocity drop, MTF align, Z-Score high" else: reason = f"Score only {confidence:.2 f}, lacking momentum" # EA가 매수 확인을 요청할 때의 논리를 평가합니다. elif order_type == "BUY": score = 0 # 스냅백 및 속도 검증 if snapback_pips >= min_snapback and high_velocity: score += 0.4 # 극단적인 편차 검증 (deviation_z는 MQL5에서 이미 방향 보정이 완료된 값입니다) if deviation_z > 2.0: score += 0.3 # MTF 정렬 확인 (최소 H1 또는 M15 중 하나는 상승 추세여야 함) if mtf.get("h1_up") or mtf.get("m15_up"): score += 0.2 # M1 거절 신호 확인 (긴 하단 촛대) if m1_structure.get("lower_wick_ratio", 0.0) >= 0.2: score += 0.1 confidence = score if confidence >= 0.70: decision = "BUY" reason = "High velocity bounce, MTF align, Z-Score high" else: reason = f"Score only {confidence:.2 f}, lacking momentum" # 4. JSON 응답을 MT5로 다시 전송합니다. return { "decision": decision, "confidence": round(confidence, 2), "reason": reason[:60] # MT5의 경우 이유를 최대 60자 이내로 제한하십시오 } if __name__ == "__main__": # MQL5의 InpAIEndpoint 매개변수와 일치하도록 포트 8787에서 로컬 서버를 시작합니다. print("AI Bridge Server is running on http://127.0.0.1:8787") uvicorn.run(app, host="127.0.0.1", port=8787)
3. 서버 실행 및 MT5 연결 방법
- 터미널을 열고 파이썬 파일이 저장된 폴더로 이동하십시오.
- 다음 명령어를 실행하세요:
- 서버가 시작되어 [http://127.0.0.1:8787](http://127.0.0.1:8787)에서 연결을 대기합니다.
- MetaTrader 5 플랫폼에서 허용된 WebRequest URL 목록에 [http://127.0.0.1](http://127.0.0.1) URL이 추가되어 있는지 확인하십시오:
- '도구' > '옵션' > '전문가 자문가'로 이동하십시오.
- "나열된 URL에 대해 WebRequest 허용"을 선택하십시오.
- 목록에 URL [http://127.0.0.1](http://127.0.0.1)을 추가하십시오.
- EA를 실행하십시오. 이제 EA가 실시간 데이터를 Python API로 전송하며, Python은 Python 함수 내의 매개변수를 기반으로 데이터를 분석한 후 MT5로 매수(BUY)/매도(SELL)/대기(WAIT) 명령을 다시 전송합니다.
이 Python 아키텍처는 확장성이 매우 뛰어납니다. 향후 이 가격 변동 이력을 데이터베이스에 저장하거나(머신 러닝 훈련 데이터용) 예측 모델(예: XGBoost 또는 랜덤 포레스트)에 연결하고자 하는 경우, 위 코드에서 주석 #3으로 표시된 섹션—ARTIFICIAL INTELLIGENCE / DECISION ALGORITHM—로 표시된 섹션을 수정하기만 하면 됩니다.
성공하면 Print Expert가 다음과 같이 표시됩니다:
Creating a Python file (.py) is actually very simple. Essentially, a Python file is just a standard text file (like a .txt file) with its extension changed to .py.
(일반적으로 Windows에서 실행되는) MetaTrader 5를 사용하여 local_ai_bridge.py 파일을 생성하는 가장 쉬운 3가지 방법은 다음과 같습니다:
방법 1: 메모장 사용 (가장 빠르고, 추가 앱 설치 불필요)
이 방법은 Windows 운영 체제에서 가장 빠른 방법입니다:
- Windows에 기본으로 포함된 메모장 애플리케이션을 엽니다.
- 앞서(위) 제공한 FastAPI 파이썬 코드 전체를 복사합니다. [2. 파이썬 API 코드 (local_ai_bridge.py)]
- 빈 메모장 문서에 코드를 붙여넣습니다.
- '파일' 메뉴 > '다른 이름으로 저장...'을 클릭합니다.
- 이 파일을 저장할 폴더를 선택합니다(예: ‘문서’ 폴더나 바탕화면에 ‘AI_MT5’라는 새 폴더를 생성하세요).
- 매우 중요: “파일 형식” 섹션에서 설정을 “텍스트 문서 (*.txt)”에서 “모든 파일 (*.*)”로 변경하십시오.
- '파일 이름' 필드에 정확히 local_ai_bridge.py라고 입력하세요.
- 저장을 클릭하세요. 완료되었습니다!
파일 생성 후 추가 팁:
실행하려면 `local_ai_bridge.py` 파일이 있는 폴더에서 명령 프롬프트(CMD)를 열고, 다음 명령어를 입력하여 실행하십시오:
python local_ai_bridge.py
성공하면 CMD 창에 Uvicorn/FastAPI 서버가 실행 중임을 나타내는 메시지가 표시됩니다.
//-------------------------
Python이 `local_ai_bridge.py` 파일을 실행하려면, 터미널이 해당 파일과 동일한 폴더에 “위치”해 있어야 합니다. Windows에서 이를 수행하는 가장 쉬운 세 가지 방법은 다음과 같습니다(원하는 방법을 선택하세요):
방법 1: 파일 탐색기 "주소 표시줄" 활용법 (가장 쉽고 빠른 방법)
이 방법은 매우 실용적이기 때문에 프로그래머들 사이에서 자주 쓰이는 요령입니다:
- 파일 탐색기(보통 파일과 폴더를 확인하는 화면)를 엽니다.
- 앞서 `local_ai_bridge.py` 파일을 저장해 둔 폴더로 이동합니다.
- 상단의 주소 표시줄(폴더 위치를 보여주는 긴 입력란, 예: C:\Users\YourName\Documents\AI_MT5)을 마우스 왼쪽 버튼으로 한 번 클릭합니다.
- 주소 텍스트가 파란색으로 강조 표시됩니다. 텍스트를 삭제한 다음 'cmd'를 입력하세요.
- 키보드의 Enter 키를 누릅니다.
- 해당 폴더 내에 정확히 위치하는 검은색 화면(명령 프롬프트)이 즉시 열립니다.
실행 단계 (터미널이 이미 올바른 폴더에서 열려 있는 경우)
올바른 폴더에서 검은색 또는 파란색 창이 열리면, AI 봇을 실행하기 위해 Python에 명령을 내리기만 하면 됩니다.
- 다음 명령어를 입력하세요:
-
python local_ai_bridge.py
- Enter 키를 누르십시오.
라이브러리(fastapi 및 uvicorn) 설치가 성공적으로 완료되었다면, "AI Bridge Server is running on http://127.0.0.1:8787"라는 문구나 "Uvicorn running on..."과 같은 메시지가 표시됩니다.
다음과 같이 표시됩니다:
AI Bridge 서버가 http://127.0.0.1:8787에서 실행 중입니다
INFO: 서버 프로세스 [4168] 시작됨
INFO: 애플리케이션 시작을 기다리고 있습니다.
INFO: 애플리케이션 시작 완료.
INFO: http://127.0.0.1:8787에서 Uvicorn이 실행 중입니다 (종료하려면 CTRL+C를 누르세요).
이 텍스트는 다음을 나타냅니다:
- 초기화 성공: EA가 핍 배율 10.0인 XAUUSD 심볼을 성공적으로 감지했습니다(3자리/5자리 브로커를 올바르게 감지함).
- AI Bridge 활성: AIBridge v1.1 모듈이 HYBRID 모드로 성공적으로 로드되었으며, 로컬 엔드포인트 [http://127.0.0.1:8787/analyze](http://127.0.0.1:8787/analyze)에 연결되었으며, 키 인증이 필요하지 않음(익명)을 감지했습니다. 이는 당사의 로컬 Python 서버에 적합합니다.
- 다중 타임프레임 및 락 구조: 추세 지표(H1, M15, M5)와 M1 종가 캔들 구조를 지원하여 시장을 모니터링할 준비가 되었습니다.
이 신호는 무엇을 의미할까요?
이는 EA와 로컬 파이썬 서버가 이제 병행하여 실행 중이며 상호 작용할 준비가 되었음을 의미합니다. EA는 더 이상 “맹목적”이 아닙니다. 골드 M1 시간대의 모든 유동성 스윕(Liquidity Sweep) 및 벨로시티(Velocity) 신호를 필터링한 후, 주문을 실행할지 보류(WAIT)할지 결정하는 “로컬 브레인”을 갖추고 있습니다.
다음으로, 차트 움직임을 모니터링하거나 데모 또는 실계좌에서 포워드 테스트를 진행하기만 하면 됩니다. 스윕 조건과 틱 속도 요건이 충족되면, `[AI] SELL HYBRID ... ALLOW=YES` 또는 `NO`와 같은 결정 로그가 저널에 실시간으로 표시됩니다.
MetaQuotes Ltd에서 영어로 번역함.
원본 코드: https://www.mql5.com/en/code/76331
Wolfe Wave Dashboard
여러 종목과 시간대를 자동으로 스캔하여 가장 최근의 유효한 울프 웨이브 패턴(강세/약세)을 탐지하고, 이를 대화형 대시보드에 표시하며, 원클릭으로 차트를 열어 전체 패턴을 그릴 수 있게 해주는 전문적인 MQL5 지표(별도 창)입니다.
Heiken Ashi ATR Blend
Heiken Ashi ATR Blend combines smoothed Heiken Ashi candles, ATR-based volatility filtering, and fast/slow EMA trend confirmation to identify potential trend-change signals.
Position sizing from risk, using the broker's own tick value and volume step
Position size from a risk amount, computed from the symbol's real tick value, tick size and volume step rather than an assumed pip value. It always rounds volume down, and when your risk is smaller than the minimum lot it says so and reports what that lot actually costs. No terminal state, so the sizing logic is testable offline - a 41-assertion test script is included.
Fisher Transform Indicator
통계학적 제1원리에 기반하여 구축된 피셔 변환 오실레이터 — 가격을 제한된 범위로 정규화한 다음, 로그 변환을 적용하여 기존 오실레이터에서 흔히 볼 수 있는 점진적인 전환 대신 선명하고 명확한 반전 신호를 생성합니다. 내부 재귀 상태는 적절한 계산 버퍼를 통해 처리되어 백테스트 전반에 걸쳐 신뢰할 수 있고 정확한 동작을 보장합니다. "초보자를 위한 맞춤형 지표 만들기" 기사 시리즈에서 발췌.



