AI 전문가용 어드바이저 테스트 및 최적화 가이드 | Deriv Blog
올바른 테스트 기법으로 AI 전문가용 어드바이저를 완성하세요. 본 가이드에서는 안정적인 트레이딩 봇을 위한 일반적인 문제, 테스트 방법, 전문가용 어드바이저 최적화를 다룹니다.
Deriv 편집팀 · 2025년 4월 21일 · 4 분 읽기

AI 트레이딩 전문가용 어드바이저가 등장했습니다 — 하지만 여전히 테스트와 개선이 필요합니다.
이미 Claude나 ChatGPT와 같은 AI 도구를 사용해 Deriv MT5용 전문가용 어드바이저 또는 Deriv cTrader용 cBot을 만들어 보셨다면, 좋은 출발을 하신 것입니다. 하지만 코드가 올바르게 보이더라도, 봇의 작동 방식에 영향을 미치는 오류가 포함되어 있을 수 있습니다.
라이브 시장에서 전문가용 어드바이저(EA)를 실행하기 전에, 테스트하여 기대한 대로 작동하는지 확인하는 것이 중요합니다.
본 가이드에서는 AI가 생성한 EA의 일반적인 코딩 오류, 수정 방법, 그리고 봇 성능을 개선하기 위한 실용적인 팁을 안내합니다.
일반적인 AI MQL5 코딩 오류
AI가 생성한 EA에서 가장 흔히 발견되는 문제와 수정 방법은 다음과 같습니다:
- MQL5의 선언되지 않은 식별자 오류
이 오류는 봇이 제대로 정의되지 않은 변수나 이름을 사용할 때 나타납니다. 예를 들어, 매개변수가 누락되었거나 iMA()와 같은 지표에서 잘못된 이름을 사용한 경우입니다.
해결 방법:
지표의 매개변수를 확인하고, 모든 변수 이름이 MetaEditor(MT5의 코딩 도구)에서 예상하는 것과 일치하는지 확인하세요.
- Buy/Sell 거래 실행 함수 누락
일부 AI 생성 봇은 거래를 개시하는 데 필수적인 로직을 생략합니다.
해결 방법:
기본 거래 실행 함수를 수동으로 추가하세요. 다음은 매수 주문을 넣는 기본 구조의 예시입니다:
void OpenBuy() {
MqlTradeRequest request; MqlTradeResult result;
request.action = TRADE_ACTION_DEAL;
request.type = ORDER_TYPE_BUY;
request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
request.volume = 0.1; request.magic = 12345;
OrderSend(request, result);
}
매도 주문에 대한 로직도 포함하고, 거래가 체결되어야 하는 조건을 정의하세요.
- Deriv cTrader의 부적절한 루프 조건
Deriv cTrader에서는 봇의 로직이 OnBar() 또는 OnTick()과 같은 특정 함수 안에서 실행되어야 합니다. 이러한 함수는 시장이 움직일 때 자동으로 트리거됩니다. 코드가 잘못된 루프나 전역 범위와 같이 이러한 섹션 외부에 배치되면 예상대로 실행되지 않습니다.
해결 방법:
바와 틱이 OnBar() 또는 OnTick() 안에서 처리되도록 하세요. 이렇게 하면 백테스팅과 라이브 트레이딩 중에 봇이 새로운 틱이나 바에 올바르게 반응할 수 있습니다.
- 잔액 비율 기반 로트 사이즈 오계산
AI가 계좌 잔액을 기준으로 로트 사이즈를 설정하려 할 때(예: 거래당 2% 위험 감수), 중요한 세부 사항인 계약 크기를 누락할 수 있습니다. 이로 인해 부정확한 로트 사이즈가 발생할 수 있습니다. 코드 오류가 발생하지는 않지만, 테스트 시 위험 설정과 일치하지 않는 거래 규모가 나타나 라이브 거래에서 과다 노출 또는 과소 노출로 이어질 수 있습니다.
해결 방법:
계약 크기를 반영한 로트 사이즈 공식을 사용하세요. 예:
//-----------------------------------------------------------------
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskMoney = accountBalance * (RiskPercent / 100.0);
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double pointValue = tickValue / tickSize;
double contractSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE);
if(contractSize > 0)
pointValue = pointValue / contractSize;
double lotSize = riskMoney / (StopLossPoints * pointValue);
double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
lotSize = MathMax(lotSize, minLot);
lotSize = MathMin(lotSize, maxLot);
lotSize = MathFloor(lotSize / lotStep) * lotStep;
- 기타 오류
이러한 오류나 그 밖의 오류가 발생하면, 언제든지 AI 모델에 문제 파악과 수정을 요청할 수 있습니다.
오류 메시지와 관련 코드를 복사하여 AI 모델에 공유하기만 하면 됩니다. 대부분의 경우 문제를 정확히 짚어내고 수정 방법이나 가능한 해결책을 제시할 수 있습니다.
팁: 라이브로 전환하기 전에 항상 백테스트를 실행하세요. 이와 같은 문제는 실제 시장 데이터로 전략을 테스트하기 전까지는 나타나지 않습니다.
AI 생성 전문가용 어드바이저 개선하기
봇이 작동하기 시작하면, 성능과 안정성을 높이기 위해 작은 변경을 적용할 수 있습니다. 다음은 이를 위한 몇 가지 일반적인 방법입니다:
- 높은 변동성이나 연결 문제 시 예상치 못한 동작을 관리할 수 있도록 오류 처리 로직을 추가하세요.
- 시장이 유리한 방향으로 움직일 때 잠재 수익을 확보할 수 있도록 트레일링 손절매를 사용하세요.
- 과거 데이터로 전략을 백테스트하여 성과를 확인하세요.
- 가독성과 효율성을 높이기 위해 코드를 정리하고 구조화하세요. 나중에 업데이트하거나 문제를 해결하기가 더 쉬워집니다.
팁: MetaEditor Debugger(MT5)를 사용하여 봇이 단계별로 어떻게 실행되는지 테스트하세요.
거래 백테스트가 중요한 이유
AI 생성 봇은 처음부터 코딩할 필요 없이 거래를 자동화하는 훌륭한 방법입니다. 하지만 AI를 활용하더라도, 라이브 환경에서 잘 작동하려면 전략에 대한 사람의 점검과 조정이 여전히 필요합니다.
라이브로 전환하기 전에 충분히 테스트하고 작은 개선을 적용하세요. 사소한 수정만으로도 EA의 일관성과 효과성에 큰 차이를 만들 수 있습니다.