AI 전문가 조언자 테스트 및 최적화 가이드 | Deriv Blog
적절한 테스트 기법으로 AI 전문가 조언자를 완성해 보세요. 본 가이드에서는 신뢰할 수 있는 트레이딩 봇을 위한 일반적인 문제, 테스트 방법, 전문가 조언자 최적화에 대해 다룹니다.
Deriv 편집팀 · 21 April 2025 · 4 분 읽기

AI 트레이딩 전문가 조언자는 이미 등장했지만, 여전히 테스트하고 개선해야 합니다.
이미 Claude나 ChatGPT와 같은 AI 도구를 사용해 Deriv MT5용 전문가 조언자나 Deriv cTrader용 cBot을 만들었다면, 훌륭한 출발점에 서 계십니다. 하지만 코드가 올바르게 보이더라도 봇의 작동 방식에 영향을 주는 오류가 여전히 포함될 수 있습니다.
실거래 시장에서 전문가 조언자(EA)를 실행하기 전에 테스트를 진행하고 기대한 대로 작동하는지 확인하는 것이 중요합니다.
본 가이드에서는 AI가 생성한 EA에서 자주 발생하는 코딩 오류와 이를 수정하는 방법, 그리고 봇 성능을 개선하기 위한 실용적인 팁을 살펴봅니다.
자주 발생하는 AI MQL5 코딩 오류
AI가 생성한 EA에서 자주 발견되는 몇 가지 문제와 이를 수정하는 방법은 다음과 같습니다.
- MQL5의 선언되지 않은 식별자 오류
이 오류는 봇이 제대로 정의되지 않은 변수나 이름을 사용할 때 발생합니다. 예를 들어 매개변수가 빠졌거나 iMA()와 같은 인디케이터에서 잘못된 이름을 사용하는 경우입니다.
수정 방법:
인디케이터의 매개변수를 확인하고 모든 변수 이름이 MetaEditor(MT5의 코딩 도구)에서 예상하는 값과 일치하는지 확인합니다.
- 매수/매도 거래 실행 함수 누락
일부 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 모델이 문제를 정확히 짚어내고 수정안을 제시하거나 가능한 해결책을 제안할 수 있습니다.
팁: 실거래를 시작하기 전에 항상 백테스트를 실행하세요. 이러한 문제는 실제 시장 데이터로 전략을 테스트하기 전까지는 드러나지 않습니다.
AI가 생성한 전문가 조언자 개선하기
봇이 작동하기 시작하면 성능과 안정성을 개선하기 위해 작은 조정을 할 수 있습니다. 다음은 이를 위한 몇 가지 일반적인 방법입니다.
- 높은 변동성이나 연결 문제 발생 시 예상치 못한 동작을 관리할 수 있도록 오류 처리 로직을 추가합니다.
- 시장 움직임이 유리하게 전개될 때 잠재적 수익을 고정하기 위해 트레일링 손절매를 사용합니다.
- 과거 데이터로 전략을 백테스트하여 실제로 어떤 성과를 냈을지 확인합니다.
- 코드를 정리하고 구조화하여 가독성과 효율성을 높입니다. 이렇게 하면 나중에 업데이트하거나 문제를 해결하기가 더 쉬워집니다.
팁: MetaEditor Debugger(MT5에서 제공)를 사용하면 봇이 단계별로 어떻게 실행되는지 테스트할 수 있습니다.
거래를 백테스트하는 것이 중요한 이유
AI가 생성한 봇은 처음부터 코딩하지 않고도 거래를 자동화할 수 있는 훌륭한 방법입니다. 하지만 AI를 사용하더라도 실거래 환경에서 잘 작동하려면 전략에 대한 인간의 검토와 조정이 여전히 필요합니다.
실거래를 시작하기 전에 충분한 시간을 들여 철저히 테스트하고 작은 개선을 진행하세요. 사소한 수정만으로도 EA의 일관성과 효율성에 큰 차이를 만들 수 있습니다.