MT4チャートはどのように計算されるか:数式、入力、制限
「MT4チャートの計算」とは通常どういう意味か
MT4では、「calculated(計算された)」という言葉は、次のように理解するのが最も適切です。つまり、プラットフォームが受信した市場データ(ティック、またはすでに形成されたバー)を、チャート上でプロットされる系列を構成する値へと変換する、ということです。これらのプロットされた系列が、その後、画面上で見えるもの(ローソク足、ライン、出来高、そして多くのオーバーレイ)を決めます。
チャートは単一の計算ではありません。通常は、次の3つの工程からなるパイプラインです:
- データ準備:プラットフォームが時間に沿って価格データを保存し、整理します。
- バー/時間足の構築:データを固定の時間間隔にグループ化します(例:5分足)。
- 系列の計算と表示:各視覚要素が何を表すか(例:各バーのOHLCフィールド)を計算し、値を座標へマッピングします。
入力データとチャート設定が変わるため、正確な算術はチャートの種類と時間足によって変わります。
基本メカニズム:バー構築とOHLCの定義
あなたが遭遇する「MT4チャート」の視覚要素の多くは、バーから作られています。バーは、選択した時間足における1つの時間間隔に対応します。各バーについて、チャートでは一般にOHLCの値を使います:
- O(Open):その間隔で最初に約定した価格。
- H(High):その間隔で観測された最大の約定価格。
- L(Low):その間隔で観測された最小の約定価格。
- C(Close):その間隔で最後に約定した価格。
これを簡単に表す方法は、バー間隔 ([t_k, t_{k+1})) と、その中に入るティック価格の集合を定義することです。(P_i)を、時刻が (t_k \le t_i < t_{k+1}) を満たすティックの約定価格列(または、プラットフォームのフィード定義に応じてミッド価格)とします。 すると:
- (O_k = P_{first})
- (H_k = \max(P_i))
- (L_k = \min(P_i))
- (C_k = P_{last})
このOHLCの構築が、多くの標準的なチャートモードにおける、表示されるローソク足の実体とヒゲの背後にある実質的な計算です。
出来高とティックのカウント(表示される場合)
チャートが出来高(またはティックベースの出来高)を表示する場合、よくある概念的な定義は次のとおりです:
- バーkの出来高は、([t_k, t_{k+1})) の中にあるティック数、またはフィードがサイズを提供する場合は報告されたサイズの合計に等しい。
どの厳密な意味が適用されるかは、プラットフォームのデータフィードが何を提供しているか、そしてどの出来高オプションが選択されているかに依存します。
バー系列からラインチャートが導かれる方法
ラインチャートは、各バー系列の中で選ばれたソースから計算されることが多いです。たとえば:
- 「クローズライン」の概念は、時間に対して (C_k) をプロットします。
- 「典型価格」ライン(いくつかのチャート設定では)の概念は、((H_k + L_k + C_k)/3) のような平均を使います。
したがって一般的なパターンは、各バーのOHLC(と場合によっては出来高)の関数 (f) を選び、次をプロットすることです: (S_k = f(O_k,H_k,C_k,L_k,\text{Volume}_k))。
一般的な価格ラインでは、(f)は単に1つの構成要素(たとえばクローズ)を選択するだけです。別の派生系列では、(f)は値を平均化したり変換したりするかもしれませんが、それでもバーごとに動作します。
明示的な仮定による例(自己確認可能)
時間足が1分で、単一の1分間隔 ([t_0, t_0+1m)) に対するティック価格があると仮定します。その間隔内で、ティック列(時系列順)が次のとおりだとします:
- (P_1 = 1.1000)
- (P_2 = 1.1010)
- (P_3 = 1.0995)
- (P_4 = 1.1020)
すると、そのバーのOHLC値は次のとおりです:
- (O = 1.1000)(最初のティック)
- (H = 1.1020)(最大)
- (L = 1.0995)(最小)
- (C = 1.1020)(最後のティック)
もしあなたのチャートがクローズラインを使うなら、その1分のプロット点は (S=C=1.1020) です。
独立した検証の考え方:チャートが使用している基礎となるティックまたはバーのデータにアクセスできるなら(たとえば、プラットフォームのデータエクスポートや、タイムスタンプと価格を提供するAPIを通じて)、同じ間隔境界を使ってOHLCを再計算し、表示されるローソク足が一致するか確認できます。
材料的な制限と失敗パターン
上記のOHLC数式があっても、いくつかの理由でチャートの値は異なることがあります:
-
履歴が欠落している、または不完全 ある時間足に対してティックデータが存在しない場合、OHLCは利用可能な部分集合からしか計算できません。すると (O)、(H)、(L)、(C) が変わります。プラットフォームがすべてのティックを受信しなかったため、期待しているものと比べてローソク足が「ずれて」見えることがあります。
-
時間の整合性とタイムゾーン/時計の違い バーは固定の時間間隔から作られます。チャートのサーバー時刻が、あなたが想定しているタイムスタンプと異なる場合、ティックが別の分(または別の時間)にグループ化される可能性があります。各間隔に含まれるティック集合が変わるため、OHLCも変わります。
-
「価格」の定義はフィードとモードで異なる プラットフォームとデータモードによって、系列はビッド/アスク、最終約定、または構築されたミッド価格から導かれる場合があります。あなたの期待がある定義を前提としているのに、フィードが別の定義を供給していると、再計算結果は一致しません。
-
コストと約定(実行)は過去のローソク足の中に表現されない ローソク足は、過去の時間間隔において観測または記録された価格を表します。ローソク足は本質的に、将来のコスト(約定時のスプレッド、スリッページ、コミッション)を考慮しません。したがって、表示されているチャート履歴をネット結果の予測として扱う推論は、別の概念を混ぜてしまいます。
-
インジケーターのようなオーバーレイは追加パラメータに依存する もし「MT4 Charts」に移動平均、オシレーター、またはカスタムオーバーレイが含まれるなら、計算には追加のパラメータ(参照期間の長さ、平滑化手法、適用価格、そしてオーバーレイがバーのクローズのみを使うのか、イントラバーのデータを使うのか)が含まれます。最終的にプロットされる値は、OHLCの構築だけでなく、それらの設定によって決まります。
見えている計算を検証する方法
単一の提供者の挙動を前提にしない、実用的な検証方法は次のとおりです:
- チャートの種類(ローソク足かラインか)と時間足を特定する。
- チャートが使用している基礎となるバーのデータまたはティックをエクスポートする、または入手する。
- 間隔境界と仮定した価格定義を使って、1つのバーのOHLCを再計算する。
- 再計算した (O,H,L,C) と、(クローズラインのような)プロットされた系列を、チャートに表示されているものと比較する。
比較が一致しない場合、どの仮定が変わったかを確認します:間隔境界、入力価格の定義、あるいは履歴が不完全かどうか。
次に聞くべきこと
あなたが次を教えてくれれば:
- チャートの種類(ローソク足、ライン、または特定のオーバーレイ)、
- 時間足、
- そして使用しているデータソース(ティックかバーか、さらにビッド/アスク/ラスト/ミッドのどれか)、 そのセットアップに対して、正確な関数 (S_k = f(\cdot)) を言い換え、最終的に再計算するために必要な具体的な入力を列挙できます。
DOCUMENT END