MQL5時系列・価格取得関数辞典|CopyRates・iClose・SymbolInfo・Time系まとめ
MQL5でEAやインジケーターを開発する場合、ローソク足、価格、時刻、銘柄仕様を正しく取得できるかどうかは、シグナル判定、エントリー判定、決済判定、リスク管理、ログ確認のすべてに影響します。
特に、CopyRates、CopyOpen / CopyHigh / CopyLow / CopyClose、CopyTime、iOpen / iHigh / iLow / iClose / iTime、SymbolInfoDouble / SymbolInfoInteger / SymbolInfoString、TimeCurrent、TimeTradeServer、PeriodSeconds は、EA開発で頻繁に使う基本関数です。
この記事では、MQL5の時系列・価格取得関数を、EA開発や不具合調査で確認しやすい辞典形式で整理します。公式リファレンスの代わりに丸暗記するためではなく、どの関数を、どの場面で使い、どの戻り値・取得件数・時刻基準・ログを確認するかを整理するための記事です。
注意:この記事はMQL5開発・EA動作確認・インジケーター連携・不具合調査のための技術解説です。特定の売買判断、推奨エントリー、推奨ロット、推奨銘柄、利益保証、勝率保証、損失回避保証を行うものではありません。実運用前には、必ずデモ環境や検証環境で動作を確認してください。
- MQL5時系列・価格取得関数の全体像
- 価格取得関数は目的別に選ぶ
- CopyRates
- CopyOpen / CopyHigh / CopyLow / CopyClose
- CopyTime
- iOpen / iHigh / iLow / iClose / iTime
- SymbolInfoDouble / SymbolInfoInteger / SymbolInfoString
- SymbolInfoTick
- TimeCurrent
- TimeTradeServer
- PeriodSeconds
- 現在足と確定足
- データ不足時の確認
- EA利用者向けの確認ポイント
- MQL5開発者向けの実装確認ポイント
- 時系列・価格取得関数の辞典表
- 開発依頼前に整理する情報
- 関連するMQL5技術辞典
- 関連する技術講座
- FAQ
- まとめ
MQL5時系列・価格取得関数の全体像
MQL5の時系列・価格取得関数は、ローソク足をまとめて取得する関数、単一価格を取得する関数、銘柄仕様を取得する関数、時刻を取得する関数に分けて理解すると整理しやすくなります。
| 分類 | 主な用途 | 代表関数 | 確認すること |
|---|---|---|---|
| ローソク足一括取得 | OHLC、時刻、tick volume、spreadなどをまとめて取得する | CopyRates | 取得件数、MqlRates配列、現在足と確定足、履歴不足 |
| OHLC個別取得 | Open、High、Low、Closeを配列で取得する | CopyOpen、CopyHigh、CopyLow、CopyClose | 取得件数、start position、copy count、配列方向 |
| 時刻配列取得 | バー時刻を配列で取得する | CopyTime | bar time、新バー判定、MTF同期、履歴不足 |
| 単一バー取得 | 指定shiftの価格や時刻を簡易取得する | iOpen、iHigh、iLow、iClose、iTime | shift、0値、履歴不足、現在足と確定足 |
| 銘柄情報取得 | Bid、Ask、point、digits、spread、volume条件などを取得する | SymbolInfoDouble、SymbolInfoInteger、SymbolInfoString | 銘柄仕様、ロット条件、StopsLevel、取引可否 |
| 時刻取得 | サーバー時刻、取引サーバー時刻、時間足秒数を取得する | TimeCurrent、TimeTradeServer、PeriodSeconds | 時刻basis、無tick時間帯、サーバー時間、時間足 |
価格取得関数は目的別に選ぶ
価格取得では、何を確認したいかによって使う関数が変わります。直近の終値だけならiCloseでも確認できますが、複数本のローソク足を使う判定ではCopyRatesやCopyCloseの方が管理しやすい場合があります。
| 目的 | 使いやすい関数 | 確認ポイント |
|---|---|---|
| 直近の終値だけ確認したい | iClose | shift=0かshift=1かを明確にします。 |
| 複数本の終値を使いたい | CopyClose | 取得件数、配列方向、必要本数を確認します。 |
| OHLCをまとめて確認したい | CopyRates | MqlRates配列でtime、open、high、low、closeをまとめて扱います。 |
| 新バー判定をしたい | CopyTime、iTime | bar timeが前回値と変わったか確認します。 |
| スプレッドを確認したい | SymbolInfoInteger、SymbolInfoTick | SYMBOL_SPREAD、Bid/Ask、point換算を確認します。 |
| ロット条件を確認したい | SymbolInfoDouble | SYMBOL_VOLUME_MIN、SYMBOL_VOLUME_STEP、SYMBOL_VOLUME_MAXを確認します。 |
| 時間制御をしたい | TimeCurrent、TimeTradeServer | サーバー時刻、PC時刻、バー時刻を混同しないようにします。 |
CopyRates
CopyRatesは、指定した銘柄・時間足のローソク足情報をMqlRates配列として取得する関数です。OHLCだけでなく、バー時刻、tick volume、spread、real volumeもまとめて扱えるため、EAやインジケーターの判定で使いやすい関数です。
| 項目 | 内容 |
|---|---|
| 主な用途 | ローソク足データをまとめて取得する |
| 取得できる値 | time、open、high、low、close、tick_volume、spread、real_volume |
| 主な確認値 | CopyRates戻り値、取得件数、配列サイズ、symbol、timeframe、start position |
| よくある失敗 | 履歴不足、対象symbol/timeframe違い、必要本数不足、配列方向の誤認 |
| 確認ログ | COPYRATES_READ、RATES_COUNT、BAR_BASIS、HISTORY_WAIT |
CopyRatesで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| symbol | 取得対象の銘柄 | チャート銘柄と異なる銘柄を取得する場合、Market Watch表示や履歴ロードが関係するため |
| timeframe | 取得対象の時間足 | マルチタイムフレーム判定では、チャート時間足と異なる場合があるため |
| 取得件数 | 戻り値が期待本数以上か | 必要本数が足りないまま判定すると、配列範囲外や誤判定につながるため |
| 配列サイズ | ArraySizeで取得後の件数を確認 | コピー件数と配列アクセスの整合を取るため |
| bar time | rates[0].timeやrates[1].time | 現在足と確定足、新バー判定を確認するため |
| spread | MqlRates.spread | 過去バーのspread確認や検証条件の補助に使うため |
CopyOpen / CopyHigh / CopyLow / CopyClose
CopyOpen、CopyHigh、CopyLow、CopyCloseは、それぞれOpen、High、Low、Closeを配列で取得する関数です。終値だけ、安値だけ、高値だけなど、必要な価格だけを複数本取得したい場合に使います。
| 関数 | 取得できる値 | 使う場面 | 戻り値確認 | データ不足時の確認 | 関連ログ |
|---|---|---|---|---|---|
| CopyOpen | 始値配列 | 始値条件、ギャップ確認、ローソク足形状確認 | コピー件数 | Bars、SeriesInfoInteger、取得件数 | COPYOPEN_READ、OHLC_CHECK |
| CopyHigh | 高値配列 | ブレイク判定、高値更新、レンジ上限確認 | コピー件数 | 履歴不足、必要本数不足 | COPYHIGH_READ、BREAKOUT_CHECK |
| CopyLow | 安値配列 | 安値更新、レンジ下限確認、SL候補確認 | コピー件数 | 履歴不足、配列サイズ不足 | COPYLOW_READ、RANGE_CHECK |
| CopyClose | 終値配列 | 確定足終値判定、移動平均計算補助、連続条件 | コピー件数 | shift、現在足/確定足、取得本数 | COPYCLOSE_READ、CLOSE_BASIS |
CopyCloseでよくある確認ミス
| 症状 | よくある原因 | 確認すること |
|---|---|---|
| 終値判定がずれる | 現在足と確定足の混同 | start position、shift、bar time |
| 配列範囲外になる | 取得件数不足のままアクセスしている | CopyClose戻り値、ArraySize、必要本数 |
| 値が0になる | 履歴未ロード、対象バーなし | Bars、SeriesInfoInteger、GetLastError |
| MTFで値が合わない | チャート時間足と取得時間足のバー位置が違う | CopyTime、iBarShift、bar time |
CopyTime
CopyTimeは、指定した銘柄・時間足のバー時刻を配列で取得する関数です。新バー判定、マルチタイムフレーム同期、履歴データ確認でよく使います。
| 項目 | 内容 |
|---|---|
| 主な用途 | バー時刻の取得、新バー判定、MTF同期、履歴確認 |
| 取得できる値 | datetime配列 |
| 主な確認値 | CopyTime戻り値、bar time、配列サイズ、timeframe |
| よくある失敗 | 履歴不足、時間足違い、現在足と確定足の混同、MTFの時刻ズレ |
| 確認ログ | COPYTIME_READ、NEW_BAR_CHECK、BAR_TIME_AUDIT |
新バー判定で確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| 現在バー時刻 | time[0] または iTime(symbol,timeframe,0) | 前回処理したバーと同じか確認するため |
| 確定バー時刻 | time[1] または iTime(symbol,timeframe,1) | 確定足判定を行う場合に使うため |
| 時間足 | チャート時間足か指定時間足か | MTFでは対象時間足が変わるため |
| 履歴取得件数 | CopyTimeの戻り値 | 必要なバー時刻が取得できているか確認するため |
iOpen / iHigh / iLow / iClose / iTime
iOpen、iHigh、iLow、iClose、iTimeは、指定したsymbol、timeframe、shiftの価格や時刻を取得する関数です。単発で特定バーの値を確認したい場合に使いやすい一方、複数本を扱う場合はCopy系関数の方がログ追跡しやすい場合があります。
| 関数 | 取得できる値 | 使う場面 | 戻り値確認 | データ不足時の確認 | 関連ログ |
|---|---|---|---|---|---|
| iOpen | 指定shiftの始値 | 始値条件、ローソク足形状確認 | 0値、GetLastError | Bars、履歴ロード、対象shift | IOPEN_READ、BAR_VALUE |
| iHigh | 指定shiftの高値 | 高値更新、ブレイク、レンジ確認 | 0値、GetLastError | 履歴不足、symbol/timeframe違い | IHIGH_READ、HIGH_CHECK |
| iLow | 指定shiftの安値 | 安値更新、SL候補、レンジ確認 | 0値、GetLastError | 履歴不足、対象バーなし | ILOW_READ、LOW_CHECK |
| iClose | 指定shiftの終値 | 確定足終値、簡易条件判定 | 0値、GetLastError | 現在足/確定足、履歴不足 | ICLOSE_READ、CLOSE_BASIS |
| iTime | 指定shiftのバー時刻 | 新バー判定、MTF同期、bar time確認 | 0値、GetLastError | 履歴不足、timeframe違い | ITIME_READ、BAR_TIME |
iCloseで確認すること
| 確認項目 | 内容 | 理由 |
|---|---|---|
| shift=0 | 現在形成中の足 | 足確定前に値が変わる可能性があるため |
| shift=1 | 1本前の確定足 | 確定足基準のEA判定で使いやすいため |
| 戻り値0 | 本当に価格0なのか、取得失敗なのかを確認 | GetLastErrorや履歴状態を確認するため |
| timeframe | チャート時間足か、指定時間足か | MTF判定ではバー位置が変わるため |
SymbolInfoDouble / SymbolInfoInteger / SymbolInfoString
SymbolInfo系関数は、銘柄の価格、仕様、取引条件、文字列情報を取得するために使います。発注前のロット確認、spread確認、point換算、StopsLevel確認、銘柄名確認で重要です。
| 関数 | 取得できる値 | 使う場面 | 戻り値確認 | データ不足時の確認 | 関連ログ |
|---|---|---|---|---|---|
| SymbolInfoDouble | Bid、Ask、Point、TickValue、VolumeMin、VolumeStepなどのdouble値 | 価格確認、ロット正規化、損益計算、銘柄仕様確認 | true/false、取得値 | 銘柄選択、Market Watch、値0 | SYMBOL_DOUBLE、SYMBOL_SPEC |
| SymbolInfoInteger | Digits、Spread、TradeMode、StopsLevel、FillingModeなどの整数値 | 取引可否、SL/TP距離、spread、filling方式確認 | true/false、取得値 | 銘柄仕様、取引状態、プロパティ種別 | SYMBOL_INTEGER、TRADE_MODE_CHECK |
| SymbolInfoString | 銘柄説明、通貨、pathなどの文字列値 | 銘柄名確認、通貨確認、ログ表示 | true/false、取得文字列 | symbol違い、プロパティ種別 | SYMBOL_STRING、SYMBOL_IDENTITY |
SymbolInfoDoubleでよく確認する値
| プロパティ例 | 意味 | 使う場面 |
|---|---|---|
| SYMBOL_BID | Bid価格 | SELL決済、現在価格確認、spread計算 |
| SYMBOL_ASK | Ask価格 | BUY発注、現在価格確認、spread計算 |
| SYMBOL_POINT | 最小価格単位 | point換算、spread、SL/TP距離、pips換算補助 |
| SYMBOL_TRADE_TICK_VALUE | tick value | 損益計算、リスク計算、銘柄仕様確認 |
| SYMBOL_VOLUME_MIN | 最小ロット | ロットvalidation |
| SYMBOL_VOLUME_STEP | ロット刻み | ロット丸め、NormalizeVolume処理 |
| SYMBOL_VOLUME_MAX | 最大ロット | ロット上限確認 |
SymbolInfoIntegerでよく確認する値
| プロパティ例 | 意味 | 使う場面 |
|---|---|---|
| SYMBOL_DIGITS | 価格の小数桁 | NormalizeDouble、価格表示、SL/TP計算 |
| SYMBOL_SPREAD | スプレッド | スプレッド制限、ログ表示 |
| SYMBOL_TRADE_MODE | 取引モード | 取引可能か確認 |
| SYMBOL_TRADE_STOPS_LEVEL | SL/TPの最小距離 | TRADE_RETCODE_INVALID_STOPS対策 |
| SYMBOL_TRADE_FREEZE_LEVEL | 変更制限距離 | SL/TP変更、注文変更の確認 |
| SYMBOL_FILLING_MODE | 約定方式 | TRADE_RETCODE_INVALID_FILL対策 |
SymbolInfoTick
SymbolInfoTickは、指定銘柄の最新tick情報をMqlTick構造体で取得する関数です。Bid、Ask、last、volume、timeをまとめて確認できます。
| 項目 | 内容 |
|---|---|
| 主な用途 | 最新Bid/Ask、tick時刻、価格更新状態の確認 |
| 取得できる値 | bid、ask、last、volume、time |
| 主な確認値 | 戻り値、tick.bid、tick.ask、tick.time |
| よくある失敗 | tick未配信、休場、接続不安定、symbol未選択 |
| 確認ログ | TICK_READ、PRICE_SNAPSHOT、BID_ASK_CHECK |
TimeCurrent
TimeCurrentは、最後に受信した気配値に基づくサーバー時刻を取得する関数です。EAの時間制御、日次処理、新バー判定補助、ログ出力でよく使います。
TimeCurrentはPCローカル時刻ではありません。また、tickが来ない時間帯では更新タイミングに注意が必要です。
| 項目 | 内容 |
|---|---|
| 主な用途 | サーバー時刻基準の時間制御、日次処理、ログ |
| 取得できる値 | datetime |
| 主な確認値 | TimeCurrent値、サーバー時刻、ログ時刻、tick更新 |
| よくある失敗 | PC時刻との混同、無tick時間帯の更新誤認、日付境界の誤認 |
| 確認ログ | TIME_BASIS、SERVER_TIME、DAY_ROLLOVER |
TimeTradeServer
TimeTradeServerは、取引サーバー時刻を取得する関数です。サーバー時刻を基準にした外部制御、日次処理、カレンダー制御、稼働時間判定で確認対象になることがあります。
| 項目 | 内容 |
|---|---|
| 主な用途 | 取引サーバー時刻の取得、時間制御、外部制御との照合 |
| 取得できる値 | datetime |
| 主な確認値 | TimeTradeServer値、TimeCurrentとの差、TimeLocalとの差 |
| よくある失敗 | PC時刻との混同、時刻basis不明、外部シート時刻とのズレ |
| 確認ログ | TRADE_SERVER_TIME、TIME_BASIS、EXTCTRL_TIME |
PeriodSeconds
PeriodSecondsは、時間足を秒数へ変換して取得する関数です。バー時間幅、タイマー処理、一定時間経過確認、MTF処理の補助に使います。
| 項目 | 内容 |
|---|---|
| 主な用途 | 時間足の秒数取得、バー時間幅の確認、時間制御補助 |
| 取得できる値 | 指定時間足の秒数 |
| 主な確認値 | PERIOD_M1、PERIOD_M5、PERIOD_H1などの秒数 |
| よくある失敗 | PERIOD_CURRENT依存、対象時間足違い、バー時刻との混同 |
| 確認ログ | PERIOD_SECONDS、TIMEFRAME_BASIS、BAR_INTERVAL |
現在足と確定足
価格取得で最も重要な確認ポイントのひとつが、現在足と確定足の違いです。現在足は形成中のバーであり、価格が変化します。確定足はすでに閉じたバーであり、検証やEA判定で再現性を取りやすくなります。
| 基準 | 意味 | よく使う場面 | 注意点 |
|---|---|---|---|
| shift=0 | 現在形成中の足 | リアルタイム判定、現在価格表示、速報サイン | 足確定前に値が変化します。 |
| shift=1 | 1本前の確定足 | 確定足EA、検証重視、サイン確定後判定 | シグナルが1本遅れて見える場合があります。 |
| bar time | バー開始時刻 | 新バー判定、MTF同期、ログ照合 | チャート時間足と取得時間足を混同しないようにします。 |
| server time | サーバー時刻 | 稼働時間制御、日次処理、外部制御 | バー時刻やPC時刻とは別に扱います。 |
確認ポイント:EAの条件判定では、現在足を使うのか、確定足を使うのかを必ず決めてください。ログには、shift、bar time、TimeCurrent、取得した価格値をセットで残すと原因を追いやすくなります。
データ不足時の確認
CopyRatesやCopyCloseで必要本数が取れない場合、すぐに不具合と判断せず、履歴データ、対象symbol、timeframe、Market Watch、初回ロード中かどうかを確認します。
| 症状 | よくある原因 | 確認すること | 対応方針 |
|---|---|---|---|
| CopyRatesの件数が足りない | 履歴不足、対象symbol/timeframe違い | 戻り値、Bars、SeriesInfoInteger、GetLastError | 必要本数が揃うまで判定しない設計にします。 |
| CopyCloseが-1を返す | 履歴未同期、symbol未選択、取得条件不正 | GetLastError、Market Watch、timeframe | 履歴ロード待ち、再取得、ログ出力を行います。 |
| iCloseが0になる | 対象バーなし、履歴不足、取得失敗 | shift、GetLastError、Bars | 0を有効値と失敗値で混同しないようにします。 |
| MTFのバー位置がずれる | 時間足ごとのbar time差 | CopyTime、iTime、iBarShift | bar time基準で照合します。 |
| スプレッドが想定と違う | point換算、銘柄仕様、変動spread | SYMBOL_POINT、SYMBOL_SPREAD、Bid/Ask | point基準でログ化します。 |
| 時間制御がずれる | PC時刻、サーバー時刻、バー時刻の混同 | TimeCurrent、TimeTradeServer、TimeLocal | どの時刻basisで制御するか明記します。 |
EA利用者向けの確認ポイント
EAが想定どおりにエントリーしない、決済しない、サインとズレる場合は、価格取得や時刻基準が関係していることがあります。
| 確認すること | 内容 | 開発者へ伝えるとよい情報 |
|---|---|---|
| EA名・バージョン | 設置しているEA名と版 | 対象仕様を特定するため |
| 銘柄・時間足 | チャート左上のsymbol、M1/M5/M15など | CopyRatesやSymbolInfoの対象確認に必要です。 |
| setファイル | 読み込んだInputs設定 | 判定時間足、対象銘柄、時間制御の確認に必要です。 |
| 発生した時刻 | サーバー時刻、ログ時刻、チャート時刻 | TimeCurrentやbar timeとの照合に使います。 |
| Expertsログ | CopyRates、CopyClose、SymbolInfo、TimeCurrentなどのログ | EA内部で取得した値を確認するため |
| Journalログ | 端末側ログ、接続状態、取引サーバー関連 | データ取得や接続状態の確認に使います。 |
| スクリーンショット | チャート、設定、ログ、取引タブ | 表示とログを照合するために役立ちます。 |
MQL5開発者向けの実装確認ポイント
MQL5開発では、時系列取得、価格取得、銘柄仕様取得、時刻取得を分けて設計すると、不具合調査がしやすくなります。
| 責務 | 主な確認対象 | 実装上の注意 | 確認ログ |
|---|---|---|---|
| bar data | CopyRates、CopyOpen、CopyHigh、CopyLow、CopyClose | 必要本数、現在足/確定足、配列方向を確認します。 | RATES_READ、OHLC_READ、BAR_BASIS |
| bar time | CopyTime、iTime | 新バー判定、MTF同期、bar time照合を行います。 | BAR_TIME、NEW_BAR_CHECK |
| single value | iOpen、iHigh、iLow、iClose | shiftと0値の扱いを明確にします。 | SINGLE_PRICE_READ、SHIFT_CHECK |
| symbol spec | SymbolInfoDouble、SymbolInfoInteger、SymbolInfoString | point、digits、volume step、StopsLevelを確認します。 | SYMBOL_SPEC、LOT_SPEC、STOPS_CHECK |
| tick price | SymbolInfoTick、Bid、Ask | 発注前価格、spread、tick時刻を確認します。 | TICK_READ、BID_ASK_CHECK |
| time basis | TimeCurrent、TimeTradeServer、PeriodSeconds | サーバー時刻、バー時刻、PC時刻を分けます。 | TIME_BASIS、SERVER_TIME |
実装時の注意点
- Copy系関数の戻り値を必ず確認する
- 取得件数が必要本数に満たない場合は判定しない
- 現在足と確定足を混同しない
- shift=0とshift=1の意味をログに残す
- iCloseの0値を取得失敗と有効値で混同しない
- SymbolInfo系でpoint、digits、volume step、StopsLevelを確認する
- TimeCurrent、TimeTradeServer、TimeLocalを混同しない
- マルチタイムフレームではbar time基準で照合する
- Strategy TesterとLIVEでspreadやtick条件が違う場合を考慮する
- ログにはsymbol、timeframe、shift、bar time、取得値、戻り値をセットで残す
時系列・価格取得関数の辞典表
| 関数 | 取得できる値 | 使う場面 | 戻り値確認 | データ不足時の確認 | 関連ログ |
|---|---|---|---|---|---|
| CopyRates | MqlRates配列。time、open、high、low、close、tick_volume、spreadなど | OHLCをまとめて取得する時 | コピー件数 | Bars、SeriesInfoInteger、必要本数 | COPYRATES_READ、RATES_COUNT |
| CopyOpen | 始値配列 | 始値条件、ローソク足形状確認 | コピー件数 | 履歴不足、配列サイズ | COPYOPEN_READ |
| CopyHigh | 高値配列 | ブレイク、レンジ上限、高値更新 | コピー件数 | 履歴不足、必要本数 | COPYHIGH_READ |
| CopyLow | 安値配列 | レンジ下限、安値更新、SL候補 | コピー件数 | 履歴不足、必要本数 | COPYLOW_READ |
| CopyClose | 終値配列 | 確定足判定、連続条件、検証 | コピー件数 | 現在足/確定足、取得本数 | COPYCLOSE_READ、CLOSE_BASIS |
| CopyTime | バー時刻配列 | 新バー判定、MTF同期、履歴確認 | コピー件数 | bar time、timeframe、履歴不足 | COPYTIME_READ、BAR_TIME |
| iOpen | 指定shiftの始値 | 単発の始値確認 | 0値、GetLastError | shift、履歴不足 | IOPEN_READ |
| iHigh | 指定shiftの高値 | 単発の高値確認 | 0値、GetLastError | shift、履歴不足 | IHIGH_READ |
| iLow | 指定shiftの安値 | 単発の安値確認 | 0値、GetLastError | shift、履歴不足 | ILOW_READ |
| iClose | 指定shiftの終値 | 単発の終値確認、確定足判定 | 0値、GetLastError | shift、現在足/確定足 | ICLOSE_READ、SHIFT_CHECK |
| iTime | 指定shiftのバー時刻 | 新バー判定、bar time確認 | 0値、GetLastError | timeframe、履歴不足 | ITIME_READ、BAR_TIME |
| SymbolInfoDouble | double系銘柄情報 | 価格、point、ロット条件、tick value確認 | true/false、取得値 | symbol選択、値0、プロパティ種別 | SYMBOL_DOUBLE、SYMBOL_SPEC |
| SymbolInfoInteger | integer系銘柄情報 | digits、spread、StopsLevel、取引モード確認 | true/false、取得値 | 銘柄仕様、取引可否 | SYMBOL_INTEGER、TRADE_MODE_CHECK |
| SymbolInfoString | string系銘柄情報 | 銘柄名、通貨、path確認 | true/false、取得文字列 | symbol違い、プロパティ種別 | SYMBOL_STRING |
| SymbolInfoTick | 最新tick情報 | Bid/Ask、tick時刻、価格更新確認 | true/false、MqlTick値 | tick未配信、休場、接続状態 | TICK_READ、BID_ASK_CHECK |
| TimeCurrent | サーバー時刻 | 日次処理、時間制御、ログ | datetime値 | 無tick時間帯、PC時刻との違い | TIME_CURRENT、SERVER_TIME |
| TimeTradeServer | 取引サーバー時刻 | 外部制御、サーバー時刻照合 | datetime値 | TimeCurrentとの差、時刻basis | TRADE_SERVER_TIME |
| PeriodSeconds | 時間足の秒数 | バー時間幅、タイマー、MTF補助 | 秒数 | PERIOD_CURRENT、対象時間足 | PERIOD_SECONDS、TIMEFRAME_BASIS |
開発依頼前に整理する情報
時系列・価格取得まわりの不具合調査や改修依頼を行う場合は、次の情報を整理してください。
| 整理する情報 | 内容 | 理由 |
|---|---|---|
| 対象EA名・インジ名・バージョン | mq5/ex5名、商品名、バージョン | 対象ファイルと仕様を特定するため |
| 対象機能 | 価格取得、MTF判定、時間制御、spread制限、銘柄仕様確認など | 見るべき関数を絞るため |
| 対象銘柄・時間足 | symbol、timeframe、ブローカー表記 | CopyRates、SymbolInfo、iCloseの対象確認に必要です。 |
| 判定足 | 現在足か確定足か | shift=0 / shift=1の整理に必要です。 |
| 取得本数 | 何本分のバーを使うか | Copy系関数の必要本数確認に必要です。 |
| 時刻基準 | サーバー時刻、PC時刻、バー時刻、外部シート時刻など | 時間制御や日次処理のズレを確認するため |
| Expertsログ | CopyRates、CopyClose、SymbolInfo、TimeCurrentなどのログ | EA内部の取得状態を追うため |
| Journalログ | 端末側ログ、接続状態、取引サーバー状態 | 接続やデータ取得状態を確認するため |
| setファイル | Inputs設定 | 対象時間足、銘柄、時間制御、spread制限の再現に必要です。 |
| スクリーンショット | チャート、設定画面、ログ、取引タブ | 表示とログを照合するため |
| 再現手順 | どの操作・条件で発生したか | OnInit、OnTick、OnTimer、OnCalculateなどの発生箇所を特定するため |
送ってはいけない情報:口座パスワード、投資家パスワード、Webhook URL、GAS URL、APIキー、認証トークン、口座番号の全桁、個人情報は、そのまま送らないでください。必要に応じて必ずマスクしてください。
関連するMQL5技術辞典
時系列・価格取得の確認では、関数全体、エラーコード、インジケーター連携、注文処理、ファイル操作、チャート表示、列挙型、標準ライブラリの理解も関係します。関連するMQL5技術辞典もあわせて確認してください。
| 技術辞典 | 確認できる内容 | リンク |
|---|---|---|
| MQL5エラーコード辞典 | GetLastError、TRADE_RETCODE、コンパイルエラー、WebRequest、Strategy Tester関連エラーを確認できます。 | MQL5エラーコード辞典 |
| MQL5関数辞典 | EA・インジケーター開発で使う主要関数を、目的別・確認ログ別に確認できます。 | MQL5関数辞典 |
| MQL5注文関数・取引構造体辞典 | OrderSend、OrderCheck、MqlTradeRequest、MqlTradeResult、TRADE_RETCODEなどを確認できます。 | MQL5注文関数・取引構造体辞典 |
| MQL5ポジション・注文・約定・履歴用語辞典 | Order、Position、Deal、History、ticket、magic、commentなど、取引管理で混同しやすい用語を確認できます。 | MQL5ポジション・注文・約定・履歴用語辞典 |
| MQL5インジケーター関数辞典 | iCustom、CopyBuffer、SetIndexBuffer、OnCalculate、IndicatorRelease、buffer index、shiftなどを確認できます。 | MQL5インジケーター関数辞典 |
| MQL5ファイル操作関数辞典 | FileOpen、FileRead、FileWrite、FileClose、FILE_COMMON、CSV出力、ログ保存を確認できます。 | MQL5ファイル操作関数辞典 |
| MQL5チャートオブジェクト辞典 | ObjectCreate、ObjectSetInteger、ObjectSetString、OBJ_LABEL、OBJ_BUTTON、OnChartEventなどを確認できます。 | MQL5チャートオブジェクト辞典 |
| MQL5列挙型・定数辞典 | ENUM_TIMEFRAMES、ENUM_ORDER_TYPE、ORDER_FILLING、POSITION_TYPE、SymbolInfo系定数などを確認できます。 | MQL5列挙型・定数辞典 |
| MQL5標準ライブラリ辞典 | CTrade、CPositionInfo、COrderInfo、CDealInfo、CSymbolInfo、CAccountInfoなどを確認できます。 | MQL5標準ライブラリ辞典 |
確認ポイント:時系列・価格取得では、関数名だけで原因を断定せず、symbol、timeframe、shift、取得件数、bar time、TimeCurrent、SymbolInfo系の銘柄仕様、Expertsログ、Journalログをセットで確認してください。
関連する技術講座
| 関連ページ | 確認できる内容 |
|---|---|
| 技術講座ハブ | MT5・MQL5・EA開発関連の技術講座一覧を確認できます。 |
| MQL5時系列データ・価格取得完全ガイド | CopyRates、CopyClose、iClose、iTime、SymbolInfo系の確認に使えます。 |
| MQL5ロット・証拠金・銘柄仕様完全ガイド | SymbolInfo系、ロット条件、point、tick value、銘柄仕様の確認に使えます。 |
| MQL5マルチシンボル・マルチタイムフレーム完全ガイド | 別銘柄、別時間足、MTF同期、bar time確認に使えます。 |
| MT5ストラテジーテスター・最適化完全ガイド | バックテスト時の履歴データ、spread、時間足、検証条件確認に使えます。 |
| MT5開発依頼前に用意する資料まとめ | 開発依頼前に整理するログ、setファイル、再現条件を確認できます。 |
FAQ
CopyRatesとiCloseはどちらを使えばよいですか?
目的によります。複数本のローソク足やOHLCをまとめて扱う場合はCopyRatesが便利です。指定shiftの終値だけを簡易的に確認する場合はiCloseでも対応できます。ただし、どちらの場合も取得件数、shift、現在足・確定足の扱いを確認してください。
CopyCloseが失敗する場合は何を確認しますか?
CopyCloseの戻り値、GetLastError、対象symbol、timeframe、必要本数、Bars、SeriesInfoInteger、Market Watch表示、履歴データの有無を確認してください。
iCloseが0を返した場合はサインなしですか?
断定できません。対象バーの価格が取得できていない可能性があります。GetLastError、Bars、対象shift、symbol、timeframeを確認してください。
現在足と確定足は何が違いますか?
現在足は形成中のバーで、価格が変化します。確定足はすでに閉じたバーです。EAの再現性を重視する場合は、shift=1の確定足を使うことが多くなります。
TimeCurrentとTimeTradeServerは何が違いますか?
TimeCurrentは最後に受信した気配値に基づくサーバー時刻として扱います。TimeTradeServerは取引サーバー時刻を確認するために使います。PCローカル時刻とは別に扱ってください。
SymbolInfoDoubleでは何を確認しますか?
Bid、Ask、Point、TickValue、最小ロット、ロット刻み、最大ロットなどを確認します。ロット計算、SL/TP計算、spread確認、銘柄仕様確認で重要です。
マルチタイムフレームで値がずれる場合は何を確認しますか?
CopyTimeやiTimeでbar timeを確認し、チャート時間足と取得時間足のバー位置を照合してください。shiftだけで判断すると、時間足の違いによりズレる場合があります。
Strategy Testerとリアルで価格取得が違うことはありますか?
あります。spread、tickデータ、ヒストリーデータ、テスター条件、外部通信条件が異なる場合があります。テスター条件、Expertsログ、Journalログ、対象期間、銘柄、時間足を整理してください。
開発依頼前に何を整理すればよいですか?
EA名、インジケーター名、バージョン、対象銘柄、時間足、setファイル、判定足、取得本数、時刻基準、Expertsログ、Journalログ、スクリーンショット、再現手順を整理してください。
この記事にない項目はどのように確認すればよいですか?
まず公式リファレンス、MetaEditorのコンパイル結果、Expertsログ、Journalログ、実際のチャート表示を確認してください。価格取得が関係する場合は、symbol、timeframe、shift、取得件数、bar time、時刻basisを整理して確認します。
まとめ
MQL5の時系列・価格取得では、CopyRates、CopyOpen、CopyHigh、CopyLow、CopyClose、CopyTime、iOpen、iHigh、iLow、iClose、iTime、SymbolInfo系、TimeCurrent、TimeTradeServer、PeriodSecondsを目的別に使い分けることが重要です。
価格取得の不具合では、関数名だけで原因を断定せず、symbol、timeframe、shift、現在足・確定足、取得件数、bar time、履歴データ、SymbolInfo系の銘柄仕様をセットで確認してください。
EAの判定に使う場合は、現在足を使うのか、確定足を使うのかを明確にし、ログには取得値、取得件数、時刻、対象銘柄、対象時間足を残すと原因を追いやすくなります。
不具合調査や開発依頼を行う場合は、EA名、インジケーター名、バージョン、銘柄、時間足、setファイル、判定足、Expertsログ、Journalログ、スクリーンショット、再現手順を整理してください。

