[{"data":1,"prerenderedAt":755},["ShallowReactive",2],{"\u002Fja\u002Fguides\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api":3,"\u002Fja\u002Fguides\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api-surround":735,"\u002Fja\u002Fguides\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api-langs":745},{"id":4,"title":5,"authors":6,"badge":12,"body":14,"date":723,"description":724,"draft":725,"extension":726,"image":727,"meta":729,"navigation":240,"path":730,"seo":731,"stem":732,"updated":733,"__hash__":734},"posts\u002Fja\u002F3.guides\u002F42.news-filter-mt5-expert-advisor-built-in-calendar-or-api.md","MT5のニュースフィルター：内蔵カレンダーとAPI、どちらを使う？",[7],{"name":8,"to":9,"avatar":10},"ShowMyTrades Team","https:\u002F\u002Fshowmytrades.com",{"src":11},"\u002Ficon-512.png",{"label":13},"自動売買",{"type":15,"value":16,"toc":714},"minimark",[17,26,29,34,160,164,175,361,368,383,386,419,423,426,434,461,508,523,527,595,598,602,610,614,619,622,630,640,645,656,661,664,668,694,697,710],[18,19,20,21,25],"p",{},"MetaTrader 5でEA（エキスパートアドバイザー）を作っているなら、MT4ユーザーにはない選択肢があります。ターミナルには",[22,23,24],"strong",{},"経済指標カレンダー","が内蔵されていて、MQL5のいくつかの関数で読み取れるのです。ダウンロードも、URLの許可も、データの解析もいりません。",[18,27,28],{},"では、なぜわざわざ外部のAPIを使うのでしょうか。内蔵カレンダーにはいくつか弱点があり、そのうち3つがニュースフィルターでは効いてくるからです。このガイドでは、まず内蔵カレンダーを使うコード、次にAPIを使うコードを紹介し、どちらを選べばよいかを説明します。",[30,31,33],"h2",{"id":32},"️-2つの方法を並べて比較","⚖️ 2つの方法を並べて比較",[35,36,37,56],"table",{},[38,39,40],"thead",{},[41,42,43,46,49],"tr",{},[44,45],"th",{},[44,47,48],{},"MQL5の内蔵カレンダー",[44,50,51],{},[52,53,55],"a",{"href":54},"\u002Fdocs\u002Fapi\u002Feconomic-calendar","ShowMyTradesカレンダーAPI",[57,58,59,75,90,101,112,123,138,149],"tbody",{},[41,60,61,65,68],{},[62,63,64],"td",{},"準備",[62,66,67],{},"不要",[62,69,70,71,74],{},"ツール → オプション → エキスパートアドバイザ（Tools → Options → Expert Advisors）で",[72,73,9],"code",{},"を許可",[41,76,77,80,83],{},[62,78,79],{},"データの提供元",[62,81,82],{},"MetaQuotes。ブローカーのサーバー経由で配信",[62,84,85,86,89],{},"ShowMyTradesが複数の公開カレンダーを統合。主要な指標の発表日は、発表元の政府機関や中央銀行の情報と照合済み（",[72,87,88],{},"confidence: official","）",[41,91,92,95,98],{},[62,93,94],{},"使える環境",[62,96,97],{},"カレンダーを有効にしているブローカー（大半は有効。一部のホワイトラベルのサーバーは非対応）",[62,99,100],{},"すべてのブローカー、インターネットにつながるすべてのターミナル",[41,102,103,106,109],{},[62,104,105],{},"MT4対応",[62,107,108],{},"いいえ",[62,110,111],{},"はい、同じファイルで",[41,113,114,117,120],{},[62,115,116],{},"テスター対応",[62,118,119],{},"はい、過去データあり",[62,121,122],{},"いいえ（テスターではネットワークが使えない）",[41,124,125,128,131],{},[62,126,127],{},"タイムゾーン",[62,129,130],{},"取引サーバーの時刻。UTCとの差は自分で割り出す必要あり",[62,132,133,134,137],{},"UTC（",[72,135,136],{},"ts","はUnixタイムの秒）。どのレスポンスにもサーバーの現在のUTC時刻が入っているため、EAがブローカーやVPSの時計に左右されることはありません",[41,139,140,143,146],{},[62,141,142],{},"値",[62,144,145],{},"予想、前回、結果（改定値あり）",[62,147,148],{},"予想、前回、結果",[41,150,151,154,157],{},[62,152,153],{},"費用",[62,155,156],{},"無料",[62,158,159],{},"無料、キー不要",[30,161,163],{"id":162},"方法a内蔵カレンダー","🧱 方法A：内蔵カレンダー",[18,165,166,167,170,171,174],{},"次の関数は、チャートの銘柄を構成するどちらかの通貨について、",[22,168,169],{},"重要度の高い","指標発表が停止時間帯に入っているかどうかを返します。時刻は取引サーバーの時刻で、",[72,172,173],{},"CalendarValueHistory()","もこの時刻を前提にしています。",[176,177,183],"pre",{"className":178,"code":179,"filename":180,"language":181,"meta":182,"style":182},"language-cpp shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F--- MQL5の内蔵カレンダー：チャートの通貨について、重要度「高」の発表が\n\u002F\u002F--- 現在時刻の[-minutesBefore, +minutesAfter]の範囲にあるあいだtrueを返す\nbool NativeNewsTime(const int minutesBefore, const int minutesAfter, string &reason)\n{\n   reason = \"\";\n   datetime now  = TimeTradeServer();\n   datetime from = now - minutesAfter * 60;\n   datetime to   = now + minutesBefore * 60;\n\n   string currencies[2];\n   currencies[0] = SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);\n   currencies[1] = SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);\n\n   for(int c = 0; c \u003C 2; c++)\n   {\n      if(c == 1 && currencies[1] == currencies[0]) break;\n      MqlCalendarValue values[];\n      if(CalendarValueHistory(values, from, to, NULL, currencies[c]) \u003C= 0) continue;\n      for(int i = 0; i \u003C ArraySize(values); i++)\n      {\n         MqlCalendarEvent ev;\n         if(!CalendarEventById(values[i].event_id, ev)) continue;\n         if(ev.importance != CALENDAR_IMPORTANCE_HIGH) continue;\n         reason = currencies[c] + \": \" + ev.name;\n         return true;\n      }\n   }\n   return false;\n}\n","NativeNewsFilter.mqh","cpp","",[72,184,185,193,199,205,211,217,223,229,235,242,248,254,260,265,271,277,283,289,295,301,307,313,319,325,331,337,343,349,355],{"__ignoreMap":182},[186,187,190],"span",{"class":188,"line":189},"line",1,[186,191,192],{},"\u002F\u002F--- MQL5の内蔵カレンダー：チャートの通貨について、重要度「高」の発表が\n",[186,194,196],{"class":188,"line":195},2,[186,197,198],{},"\u002F\u002F--- 現在時刻の[-minutesBefore, +minutesAfter]の範囲にあるあいだtrueを返す\n",[186,200,202],{"class":188,"line":201},3,[186,203,204],{},"bool NativeNewsTime(const int minutesBefore, const int minutesAfter, string &reason)\n",[186,206,208],{"class":188,"line":207},4,[186,209,210],{},"{\n",[186,212,214],{"class":188,"line":213},5,[186,215,216],{},"   reason = \"\";\n",[186,218,220],{"class":188,"line":219},6,[186,221,222],{},"   datetime now  = TimeTradeServer();\n",[186,224,226],{"class":188,"line":225},7,[186,227,228],{},"   datetime from = now - minutesAfter * 60;\n",[186,230,232],{"class":188,"line":231},8,[186,233,234],{},"   datetime to   = now + minutesBefore * 60;\n",[186,236,238],{"class":188,"line":237},9,[186,239,241],{"emptyLinePlaceholder":240},true,"\n",[186,243,245],{"class":188,"line":244},10,[186,246,247],{},"   string currencies[2];\n",[186,249,251],{"class":188,"line":250},11,[186,252,253],{},"   currencies[0] = SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);\n",[186,255,257],{"class":188,"line":256},12,[186,258,259],{},"   currencies[1] = SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);\n",[186,261,263],{"class":188,"line":262},13,[186,264,241],{"emptyLinePlaceholder":240},[186,266,268],{"class":188,"line":267},14,[186,269,270],{},"   for(int c = 0; c \u003C 2; c++)\n",[186,272,274],{"class":188,"line":273},15,[186,275,276],{},"   {\n",[186,278,280],{"class":188,"line":279},16,[186,281,282],{},"      if(c == 1 && currencies[1] == currencies[0]) break;\n",[186,284,286],{"class":188,"line":285},17,[186,287,288],{},"      MqlCalendarValue values[];\n",[186,290,292],{"class":188,"line":291},18,[186,293,294],{},"      if(CalendarValueHistory(values, from, to, NULL, currencies[c]) \u003C= 0) continue;\n",[186,296,298],{"class":188,"line":297},19,[186,299,300],{},"      for(int i = 0; i \u003C ArraySize(values); i++)\n",[186,302,304],{"class":188,"line":303},20,[186,305,306],{},"      {\n",[186,308,310],{"class":188,"line":309},21,[186,311,312],{},"         MqlCalendarEvent ev;\n",[186,314,316],{"class":188,"line":315},22,[186,317,318],{},"         if(!CalendarEventById(values[i].event_id, ev)) continue;\n",[186,320,322],{"class":188,"line":321},23,[186,323,324],{},"         if(ev.importance != CALENDAR_IMPORTANCE_HIGH) continue;\n",[186,326,328],{"class":188,"line":327},24,[186,329,330],{},"         reason = currencies[c] + \": \" + ev.name;\n",[186,332,334],{"class":188,"line":333},25,[186,335,336],{},"         return true;\n",[186,338,340],{"class":188,"line":339},26,[186,341,342],{},"      }\n",[186,344,346],{"class":188,"line":345},27,[186,347,348],{},"   }\n",[186,350,352],{"class":188,"line":351},28,[186,353,354],{},"   return false;\n",[186,356,358],{"class":188,"line":357},29,[186,359,360],{},"}\n",[18,362,363,364,367],{},"ほかのフィルターと同じように、",[72,365,366],{},"OnTick()","から呼び出します。",[176,369,371],{"className":178,"code":370,"language":181,"meta":182,"style":182},"string news;\nif(NativeNewsTime(30, 30, news)) { Comment(\"News filter: \", news); return; }\n",[72,372,373,378],{"__ignoreMap":182},[186,374,375],{"class":188,"line":189},[186,376,377],{},"string news;\n",[186,379,380],{"class":188,"line":195},[186,381,382],{},"if(NativeNewsTime(30, 30, news)) { Comment(\"News filter: \", news); return; }\n",[18,384,385],{},"頼る前に知っておきたい点が3つあります。",[387,388,389,407,413],"ol",{},[390,391,392,395,396,398,399,402,403,406],"li",{},[22,393,394],{},"ブローカー次第です","。カレンダーは取引サーバーを通じてターミナルに届きます。使っているブローカーで",[72,397,173],{},"が",[72,400,401],{},"-1","を返し、エラーが",[72,404,405],{},"5402","なら、そのサーバーではカレンダーが有効になっていません。コードではどうにもなりません。",[390,408,409,412],{},[22,410,411],{},"UTCではなくサーバー時刻です","。実際のチャートで動かす分には問題ありませんが、ほかのデータと突き合わせるときに苦労します。",[390,414,415,418],{},[22,416,417],{},"MT5専用です","。MT4向けにも配布するEAでは、別の実装をもう1つ用意する必要があります。",[30,420,422],{"id":421},"方法bカレンダーapi","🌐 方法B：カレンダーAPI",[18,424,425],{},"もう1つの方法は、無料のHTTPエンドポイントです。選んだ通貨と重要度について、今後数日分のニュースをCSVまたはJSONで返します。",[176,427,432],{"className":428,"code":430,"language":431,"meta":182},[429],"language-text","https:\u002F\u002Fshowmytrades.com\u002Fapi\u002Fpublic\u002Fcalendar\u002Fv1?currency=EUR,USD&impact=high&days=2&format=csv\n","text",[72,433,430],{"__ignoreMap":182},[18,435,436,437,440,441,445,446,449,450,453,454,457,458,460],{},"これを読み込むインクルードファイル",[72,438,439],{},"SMT_NewsFilter.mqh","は、",[52,442,444],{"href":443},"\u002Fguides\u002Fadd-a-news-filter-to-your-mt4-expert-advisor","MT4のガイド","と",[52,447,448],{"href":54},"APIリファレンス","に全文を載せています。",[22,451,452],{},"MQL5でもそのままコンパイルできます","。",[72,455,456],{},"MQL5\\Include","に保存し、ツール → オプション → エキスパートアドバイザで",[72,459,9],{},"を許可したら、次のように呼び出します。",[176,462,464],{"className":178,"code":463,"language":181,"meta":182,"style":182},"#include \u003CSMT_NewsFilter.mqh>\n\nvoid OnTick()\n{\n   string news;\n   if(SMT_IsNewsTime(news)) { Comment(\"News filter active: \", news); return; }\n   Comment(\"\");\n   \u002F\u002F ... エントリーのロジック ...\n}\n",[72,465,466,471,475,480,484,489,494,499,504],{"__ignoreMap":182},[186,467,468],{"class":188,"line":189},[186,469,470],{},"#include \u003CSMT_NewsFilter.mqh>\n",[186,472,473],{"class":188,"line":195},[186,474,241],{"emptyLinePlaceholder":240},[186,476,477],{"class":188,"line":201},[186,478,479],{},"void OnTick()\n",[186,481,482],{"class":188,"line":207},[186,483,210],{},[186,485,486],{"class":188,"line":213},[186,487,488],{},"   string news;\n",[186,490,491],{"class":188,"line":219},[186,492,493],{},"   if(SMT_IsNewsTime(news)) { Comment(\"News filter active: \", news); return; }\n",[186,495,496],{"class":188,"line":225},[186,497,498],{},"   Comment(\"\");\n",[186,500,501],{"class":188,"line":231},[186,502,503],{},"   \u002F\u002F ... エントリーのロジック ...\n",[186,505,506],{"class":188,"line":237},[186,507,360],{},[18,509,510,511,514,515,518,519,522],{},"ダウンロードは15分に1回で、比較は",[72,512,513],{},"TimeGMT()","を使ってUTCで行います。入力パラメーター（",[72,516,517],{},"SMT_Currencies","、",[72,520,521],{},"SMT_Impact","、発表前と発表後の分数）は、EAの設定画面にそのまま並びます。",[30,524,526],{"id":525},"どちらを選ぶか","🎯 どちらを選ぶか",[35,528,529,539],{},[38,530,531],{},[41,532,533,536],{},[44,534,535],{},"状況",[44,537,538],{},"選ぶもの",[57,540,541,551,562,573,587],{},[41,542,543,546],{},[62,544,545],{},"MT5だけで使う、ブローカーがカレンダーに対応している、フィルターをバックテストしたい",[62,547,548],{},[22,549,550],{},"内蔵",[41,552,553,556],{},[62,554,555],{},"同じEAをMT4とMT5で使う",[62,557,558,561],{},[22,559,560],{},"API","：ファイル1つで、同じ動作",[41,563,564,569],{},[62,565,566,567,89],{},"カレンダーに対応していないブローカー（",[72,568,405],{},[62,570,571],{},[22,572,560],{},[41,574,575,578],{},[62,576,577],{},"cTraderでcBotも動かしている",[62,579,580,582,583],{},[22,581,560],{},"：",[52,584,586],{"href":585},"\u002Fguides\u002Fadd-a-news-filter-to-a-ctrader-cbot","cTraderでも同じデータ",[41,588,589,592],{},[62,590,591],{},"あとで見直せるよう、ニュースを取引と一緒に記録したい",[62,593,594],{},"どちらでも。APIのタイムスタンプはUTCなので、ほかのログと時刻がそろいます",[18,596,597],{},"両方を併用してもかまいません。内蔵カレンダーが応答すればそれを使い、応答しなければAPIを使う、という形です。ただ実際には、どちらか1つで十分です。",[30,599,601],{"id":600},"ニュースフィルターのバックテスト","🧪 ニュースフィルターのバックテスト",[18,603,604,605,609],{},"2つのうち、ストラテジーテスターで使えるのは内蔵カレンダーだけです。テスターではインターネットが使えないからです。ただし、ニュースフィルターのバックテストで何が証明できるのかには注意が必要です。テストで使われるのは",[606,607,608],"em",{},"現在","のカレンダーで、時刻は修正済み、あとから追加されたイベントも入っています。実運用のフィルターが知っているのは、その時点で予定されていた情報だけです。",[30,611,613],{"id":612},"よくある質問","❓ よくある質問",[18,615,616],{},[22,617,618],{},"MT5の内蔵カレンダーは無料ですか？",[18,620,621],{},"はい。ターミナルの機能の一部で、ブローカーのサーバー経由で届きます。自分の側で有効にする設定はありません。",[18,623,624],{},[22,625,626,627,629],{},"使っているブローカーで",[72,628,173],{},"が何も返さないのはなぜですか？",[18,631,632,633,636,637,639],{},"一部のサーバー、特にホワイトラベルのサーバーは、カレンダーを中継していません。",[72,634,635],{},"GetLastError()","を確認し、",[72,638,405],{},"ならカレンダーは利用できません。その場合はAPIを使ってください。",[18,641,642],{},[22,643,644],{},"別の銘柄の通貨で絞り込めますか？",[18,646,647,648,651,652,655],{},"はい。",[72,649,650],{},"_Symbol","から読み取る代わりに、使いたい通貨コードを渡してください。API版では、",[72,653,654],{},"EUR,USD,GBP","のような文字列で入力パラメーターに指定します。",[18,657,658],{},[22,659,660],{},"APIを使うのに会員登録は必要ですか？",[18,662,663],{},"不要です。キーもログインもいりません。上限はIPアドレスごとに毎分600リクエストで、15分に1回のリクエストなら、チャートをいくつ開いていても余裕で収まります。",[30,665,667],{"id":666},"関連ガイド","🔗 関連ガイド",[669,670,671,677,683,688],"ul",{},[390,672,673,676],{},[52,674,675],{"href":443},"MT4のEAにニュースフィルターを追加する方法","：インクルードファイルの全文",[390,678,679,682],{},[52,680,681],{"href":54},"経済指標カレンダーAPIのリファレンス","：パラメーター、形式、上限",[390,684,685],{},[52,686,687],{"href":585},"cTraderのcBotにニュースフィルターを追加する",[390,689,690],{},[52,691,693],{"href":692},"\u002Fglossary\u002Fwhat-is-an-expert-advisor","EA（エキスパートアドバイザー）とは",[695,696],"hr",{},[18,698,699,700,704,705,709],{},"どちらのカレンダーを選んでも、結果は運用実績に表れます。指標発表の急変動に飛び込むエントリーが減り、",[52,701,703],{"href":702},"\u002Fglossary\u002Fwhat-is-drawdown","ドローダウン","もなだらかになります。",[52,706,708],{"href":707},"\u002Fsignup","MT5口座を無料で連携","して、チャートで確かめてください。",[711,712,713],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":182,"searchDepth":195,"depth":195,"links":715},[716,717,718,719,720,721,722],{"id":32,"depth":195,"text":33},{"id":162,"depth":195,"text":163},{"id":421,"depth":195,"text":422},{"id":525,"depth":195,"text":526},{"id":600,"depth":195,"text":601},{"id":612,"depth":195,"text":613},{"id":666,"depth":195,"text":667},"2026-10-17T00:00:00.000Z","MetaTrader 5には、EAがダウンロードなしで読み取れる経済指標カレンダーが内蔵されています。それで足りる場合と足りない場合、そして代わりに無料のカレンダーAPIを使う方法を、両方のMQL5コード付きで解説します。",false,"md",{"src":728},"\u002Fimages\u002Fblog\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api-hero.svg",{},"\u002Fja\u002Fguides\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api",{"title":5,"description":724},"ja\u002F3.guides\u002F42.news-filter-mt5-expert-advisor-built-in-calendar-or-api",null,"7pnYcDhZEpshf4A4n0-J3p06M7ufWrd0Ji-h6li-HvQ",[736,740],{"title":675,"path":737,"stem":738,"description":739,"children":-1},"\u002Fja\u002Fguides\u002Fadd-a-news-filter-to-your-mt4-expert-advisor","ja\u002F3.guides\u002F41.add-a-news-filter-to-your-mt4-expert-advisor","MetaTrader 4には、EAから使える経済指標カレンダーがありません。無料のカレンダーAPI、インクルードファイル1つ、エントリー前に呼ぶ関数1つで、10分あれば組み込めます。MQL4のコードを全文掲載、APIキーは不要です。",{"title":741,"path":742,"stem":743,"description":744,"children":-1},"cTrader cBotにニュースフィルターを組み込む方法（Cloud対応）","\u002Fja\u002Fguides\u002Fadd-a-news-filter-to-a-ctrader-cbot","ja\u002F3.guides\u002F43.add-a-news-filter-to-a-ctrader-cbot","cTraderにはcBotから読める経済指標カレンダーのAPIがなく、cTrader CloudではHTTPリクエストも送れません。デスクトップでもクラウドでも動くニュースフィルターを、WebSocketで取得する無料のカレンダーとC#の全コードつきで紹介します。",[746,748,750,752,753],{"path":747},"\u002Fguides\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api",{"path":749},"\u002Fde\u002Fguides\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api",{"path":751},"\u002Fes\u002Fguides\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api",{"path":730},{"path":754},"\u002Fzh\u002Fguides\u002Fnews-filter-mt5-expert-advisor-built-in-calendar-or-api",1794154045964]