“EA 제작”을 검색하면 대부분 외주 견적이 나옵니다. MQL을 배우거나 사람을 구하는 두 가지 길만 있는 것처럼 보이지만, 세 번째 경로가 있습니다. EA를 만들지 않고 계좌를 외부에서 직접 다루는 방식입니다.
먼저 결론
주문 실행, 계좌 조회, 포지션 관리, 내역 수집은 EA 없이 전부 가능합니다. 반대로 차트 위에 지표를 그리거나 틱 단위로 즉시 반응하는 부분은 EA의 영역입니다. 자동매매에서 사람들이 실제로 원하는 것 대부분은 앞쪽에 속합니다.
EA가 하던 일을 나눠 보면
EA 하나가 보통 네 가지를 동시에 합니다.
- 시세를 받는다
- 조건을 판단한다
- 주문을 낸다
- 포지션을 관리한다(손절 이동, 부분 청산 등)
이 네 가지가 하나의 MQL 파일에 들어 있어서 수정할 때마다 전체를 다시 컴파일하고 터미널에 올려야 했습니다. 외부 API 방식에서는 같은 네 가지를 익숙한 언어로 나눠서 작성합니다. 2번 판단 로직만 바꿀 때 나머지를 건드리지 않아도 됩니다.
실제 흐름은 이렇게 됩니다
import requests, os
KEY = os.environ["MTAPI_KEY"]
ACC = os.environ["ACCOUNT_ID"]
H = {"x-api-key": KEY}
BASE = "https://api.metatraderapi.net"
def account():
return requests.get(f"{BASE}/AccountSummary", params={"id": ACC}, headers=H).json()
def positions():
return requests.get(f"{BASE}/OpenedOrders", params={"id": ACC}, headers=H).json()
def buy(symbol, volume, sl=None, tp=None):
payload = {"id": ACC, "symbol": symbol, "operation": "buy", "volume": volume}
if sl: payload["stoploss"] = sl
if tp: payload["takeprofit"] = tp
r = requests.post(f"{BASE}/OrderSend", json=payload, headers=H)
r.raise_for_status()
return r.json()
# 판단 로직은 평범한 파이썬 코드가 된다
acc = account()
if acc["freeMargin"] > 500 and not any(p["symbol"] == "EURUSD" for p in positions()):
buy("EURUSD", 0.10, sl=1.0820, tp=1.0960)
엔드포인트와 필드명은 API 문서 기준으로 확인하세요. 중요한 점은 이 코드가 특별한 프레임워크를 요구하지 않는다는 것입니다. 평범한 HTTP 클라이언트 코드입니다.
무엇이 실제로 편해지는가
수정과 배포
MQL은 컴파일 후 터미널에 올리고 차트에 붙여야 반영됩니다. 계좌가 여러 개면 그만큼 반복합니다. 외부 코드라면 Git에 커밋하고 배포하면 끝이고, 계좌 수와 무관합니다.
테스트
판단 로직이 일반 함수가 되므로 단위 테스트를 쓸 수 있습니다. 과거 데이터를 넣어 함수 출력만 확인하면 되고, 터미널을 띄우지 않아도 됩니다.
외부 연결
데이터베이스 저장, 텔레그램 알림, 웹 대시보드, 트레이딩뷰 웹훅 수신이 모두 자연스럽습니다. MQL에서 이런 연결은 항상 우회로가 필요했습니다.
다계좌
계좌 ID를 리스트로 두고 순회하면 됩니다. 터미널 인스턴스를 늘리는 문제가 아니라 반복문의 문제로 바뀝니다.
대체되지 않는 부분
솔직하게 정리하면 이렇습니다.
- 틱 단위 즉시 반응: 네트워크 구간이 하나 추가되므로, 밀리초 단위 경쟁이 핵심인 전략에는 EA가 여전히 유리합니다.
- 차트 시각화: 터미널 차트 위에 선을 그리거나 화살표를 띄우는 것은 MQL 인디케이터의 몫입니다.
- 전략 테스터: MT의 내장 테스터를 그대로 쓰고 싶다면 MQL 코드가 필요합니다. 외부 방식에서는 백테스트도 직접 만들거나 별도 도구를 씁니다.
외주를 맡기더라도 달라지는 점
사람을 구해 개발을 맡길 때도 요구 사항이 바뀝니다. MQL 개발자를 찾는 것보다 일반 백엔드 개발자를 찾는 편이 인력 풀이 넓고, 인수인계도 쉽습니다. 결과물이 평범한 웹 서비스 코드이기 때문에 나중에 다른 개발자가 이어받기도 수월합니다.
견적을 받을 때는 “EA 제작” 대신 “REST API로 MT 계좌를 조작하는 자동매매 서버”로 요구 사항을 쓰면 견적의 성격이 달라집니다.
시작 순서
데모 계좌를 하나 만들고, 계좌 조회 → 주문 한 건 → 포지션 확인 순서로 손으로 호출해 봅니다. 이 세 번의 호출이 성공하면 나머지는 여러분이 이미 아는 프로그래밍 문제입니다. 단계별 순서는 한국 사용자 안내에 정리해 두었습니다.
EA와 API를 어떻게 나눠 쓸지 판단하는 기준은 MT4 자동매매 프로그램, EA와 API 중 무엇을 선택할까에서 더 자세히 다룹니다.
자주 묻는 질문
MQL을 몰라도 MT4·MT5 자동매매를 만들 수 있나요?
가능합니다. 계좌 조회와 주문 실행을 REST API로 처리하면 판단 로직을 Python, Node.js 등 익숙한 언어로 작성할 수 있습니다. 다만 차트 시각화와 틱 단위 즉시 반응은 EA의 영역으로 남습니다.
EA 제작을 외주로 맡기는 것과 비교하면 어떤가요?
결과물이 일반 백엔드 코드가 되므로 개발자 인력 풀이 넓고 인수인계가 쉽습니다. 요구 사항을 "EA 제작"이 아니라 "API로 MT 계좌를 조작하는 자동매매 서버"로 정의하면 견적의 성격이 달라집니다.