거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Twitter에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
스크립트가 흥미로우신가요?
그렇다면 링크 to it -
하셔서 다른 이들이 평가할 수 있도록 해보세요
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
라이브러리

News Filter for the Strategy Tester (DST-corrected calendar export) - MetaTrader 5용 라이브러리

Cristian Ciunae
Cristian Ciunae
Trader for 8 years & MQL5 Developer. Specializing in Prop Firm Risk Management.
My Core Focus: I build MQL5 tools and Expert Advisors designed for the realities of live trading: strict drawdown limits, hidden swap/commission costs, and news slippage.
What I Do:
| Korean English Русский 中文 Español Deutsch 日本語 Português Français Italiano Türkçe
조회수:
9
평가:
(3)
게시됨:
\MQL5\Include\
MQL5 프리랜스 이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동
문제점

대부분의 뉴스 필터는 MQL5 경제 캘린더(CalendarValueHistory)를 참조합니다. 이 캘린더는 전략 테스터(Strategy Tester)에 존재하지 않기 때문에, 백테스트 시 해당 필터들은 아무런 동작도 하지 않습니다. 그 결과, EA는 NFP, CPI 또는 금리 결정 시점에 바로 매매를 진행하게 되며, 백테스트 결과는 실제 시장 상황과 더 이상 일치하지 않게 됩니다. 제가 진행한 테스트 중 하나에서, XAUUSD에 대한 보류 주문이 미국 CPI 발표 5분 전에 체결되었고, 스톱 로스가 45 USD의 슬리피지를 동반하며 실행되었습니다. 단 한 번의 거래로 계획된 위험 금액의 6.5배를 손실 본 셈입니다.

두 번째로, 잘 알려지지 않은 문제가 있습니다. 터미널은 과거 캘린더 시간을 현재 서버 오프셋을 기준으로 변환합니다. GMT+2/GMT+3 브로커에서 여름철에 데이터를 내보내면, 모든 겨울철 이벤트가 1시간 늦게 표시됩니다(서버 시간 기준 15:30이 아닌 16:30에 NFP 발표). 이러한 시간을 기준으로 구축된 필터는 1년 중 절반 동안 잘못된 시간을 차단해 버립니다.

해결책 - 세 개의 파일

NewsCalendarExport.mq5 (스크립트) - 이벤트를 Terminal\Common\Files\NewsCalendar.csv로 내보내고, 각 이벤트를 해당 날짜의 서버 오프셋을 적용하여 재계산합니다. 마지막으로 자체 점검 결과를 출력합니다: USD 이벤트가 가장 빈번하게 발생하는 시간은 겨울과 여름에 동일해야 합니다.

NewsFilter.mqh (CNewsFilter 클래스) - 실시간 거래와 백테스트 모두에 사용되는 단일 필터입니다. 실시간 거래 시에는 경제 캘린더를 읽으며(분당 최대 1회 조회), 전략 테스터에서는 CSV 파일을 읽습니다. 해당 심볼의 통화만 사용됩니다(EURUSD: EUR + USD, XAUUSD: USD, USD로 표시되는 지수 CFD: USD).

NewsFilter_Example.mq5 - 뉴스 창이 시작되고 끝날 때 메시지를 출력하고, 차트에 차단된 창을 표시하는 최소한의 EA로, 테스터의 시각 모드에서 필터가 작동하는 모습을 확인할 수 있습니다.

사용 방법

NewsFilter.mqh 파일을 MQL5\Include 폴더로, NewsCalendarExport.mq5 파일을 MQL5\Scripts 폴더로, NewsFilter_Example.mq5 파일을 MQL5\Experts 폴더로 복사하십시오. 스크립트와 예제 파일을 컴파일하십시오(.mqh 파일은 이들과 함께 자동으로 컴파일됩니다).

연결된 터미널의 아무 차트에서든 NewsCalendarExport를 한 번 실행하십시오. Experts 탭에 "OK: same time in winter and summer"가 표시되어야 합니다.

EA에 다음 코드를 추가하십시오:

C++
#include <NewsFilter.mqh>
CNewsFilter news;

int OnInit()
{
news.Init(_Symbol, 30, 30); // 각 이벤트 전후 30분 동안 차단
return(INIT_SUCCEEDED);
}

void OnTick()
{
if(news.IsBlocked())
return; // 뉴스 기간 중 새로운 항목 없음
// ... 진입 로직 ...
}
평소처럼 백테스트를 실행합니다. 저널에는 해당 종목에 대해 몇 개의 이벤트가 로드되었는지 표시됩니다.

스크립트 입력값

이벤트 내보내기 시작일: 내보내기를 시작할 날짜.

또한 향후 N일 동안 예정된 이벤트도 내보내기: 향후 발생할 이벤트를 포함합니다.

통화: 쉼표로 구분된 목록 (기본값: USD, EUR, GBP, JPY, CAD, AUD, NZD, CHF).

중요도: 영향도가 높은 이벤트만, 또는 중간 및 높은 영향도의 이벤트.

브로커 서버 일광 절약 시간제(DST) 규칙: 미국 규칙(기본값, 서버 = 뉴욕 + 7시간, 대부분의 GMT+2/+3 브로커), EU 규칙 또는 일광 절약 시간제 없음.

파일 이름: Terminal\Common\Files에 저장됩니다.

CNewsFilter::Init(symbol, minutesBefore, minutesAfter, mediumToo = false, csvFile = "NewsCalendar.csv")

참고 사항 및 제한 사항

FTMO(GMT+2 / GMT+3, 미국 DST 규칙) 및 IC Markets EU에서 테스트되었습니다. 출력 예시: 5645건의 이벤트가 내보내졌으며, 그중 1897건이 1시간씩 이동되었습니다. 수정 전 가장 빈도가 높은 USD 시간은 겨울철 16:30, 여름철 15:30이었으나, 수정 후에는 두 계절 모두 15:30으로 변경되었습니다.

자가 진단 결과 여전히 겨울과 여름의 시간이 다르게 표시된다면, 다른 "브로커 서버 일광 절약 시간제 규칙"을 시도해 보십시오.

MQL5 캘린더의 기록은 제한적이며 터미널에 따라 다릅니다. 제 터미널에서는 2020년부터 시작되므로, 그 이전의 백테스트에는 이벤트가 포함되지 않습니다.

심볼의 통화만 사용되므로, 지수 및 상품의 경우 호가 통화에 따라 적용되는 이벤트가 결정됩니다.

원격 및 클라우드 에이전트는 Common\Files를 읽을 수 없으므로, 로컬 에이전트를 사용하여 최적화하십시오.

일부 통화(예: AUD)의 경우 MQL5 캘린더에 영향도가 높은 이벤트가 거의 없습니다. 이러한 통화의 경우 “중간 + 높은 영향도”를 사용하십시오.

이 필터는 EA에 새로운 거래를 열지 말아야 할 때만 알려줍니다. 이미 열린 포지션을 관리하는 것은 EA의 몫입니다.

새로운 이벤트를 반영하려면 수시로 스크립트를 다시 실행하십시오.

이 필터를 통합하는 데 도움이 필요하신가요?

코딩에 익숙하지 않으시면서 이 뉴스 필터를 기존 EA에 통합하고 싶으시거나, 프로프 펌 평가에 맞춰 맞춤형 리스크 관리 규칙이 필요하신 경우, 제 MQL5 프리랜서 프로필을 통해 직접 연락해 주세요. 기꺼이 코딩해 드리겠습니다!

버전 1.00 - 첫 출시 (예시 EA 1.01: 차트에 차단된 뉴스 창을 표시합니다). 필터에 의해 차단된 WS 윈도우가 전략 테스터의 시각화 모드에 표시됨 스크립트 자체 점검: 일광 절약 시간제(DST) 조정 후 겨울과 여름에 동일한 USD 이벤트 시간 전략 테스터 일지: 뉴스 창 열기 및 닫기

MetaQuotes Ltd에서 영어로 번역함.
원본 코드: https://www.mql5.com/en/code/77617

Risk Lot Panel Risk Lot Panel

On-chart panel that turns a risk setting into a lot size and shows what the broker's volume step and minimum lot do to that risk. Display only - it never places, modifies or closes an order.

BacktestOverfitting: probability of backtest overfitting (PBO) of an optimization BacktestOverfitting: probability of backtest overfitting (PBO) of an optimization

Probability of Backtest Overfitting (PBO) of an MT5 optimization by combinatorially symmetric cross-validation. Every pass sends its daily results as a frame, and the PBO is computed when the optimization ends.

Safe Risk Manager EA - Daily Loss, Break-Even and Trailing Stop Safe Risk Manager EA - Daily Loss, Break-Even and Trailing Stop

리스크 조정, 스프레드 보호, 지속적인 일일 손실 제한, 손익분기점 및 추적 스탑 기능을 갖춘 교육용 MT5 헤징 계좌 거래 패널.

ICT Model Tracker - Sweep, MSS and FVG Setups with Honest Statistics ICT Model Tracker - Sweep, MSS and FVG Setups with Honest Statistics

Detects the ICT model on closed bars (killzone liquidity sweep, MSS with displacement or inverted FVG, retrace entry with SL and TP) and follows every setup to its result with worst-case statistics. It never trades and never repaints; EA-ready buffers.