Student Wyckoff · Elliott Wave

ブログと実践

エリオットのデータ実習:MT4・MT5・Pine・Python

確定OHLC、転換点の確認遅延、六つの価格点を扱う三つの教材。

Student Wyckoff編集部

公開日: (UTC+3)

Русский · English · Deutsch · Español · Français · Italiano · 繁體中文 · 日本語 · 한국어

カウントを実装する前に入力、バー順序、判明時点を定義します。以下の独自例は部分処理であり、完全な波動検出器ではありません。Pro/Light連携を立証せず、注文も送信しません。

MT4・MT5・MQL5のOHLCデータ

MQL4/MQL5のCopyRatesはstart_pos=0で未確定の現在バーを含みます。下例は位置1からD1を三本要求し、戻り値が正確に3か検査します。エラーや未取得履歴なら停止して再確認します。ArraySetAsSeries(false)で古い順に読みますが、CopyRatesはフラグによらず物理メモリの先頭に古い値を置きます。

銘柄、業者の時刻帯、セッション、調整設定、OHLC、出来高単位を保存します。ティック数と取引所の実取引量は互換ではありません。MqlRates取得は波動検出やPro互換CSVの証拠にはならず、取込形式は別途確認します。本例は端末での実行実測を主張しません。

void OnStart() {
  MqlRates rates[];
  ArraySetAsSeries(rates, false);
  int n = CopyRates(_Symbol, PERIOD_D1, 1, 3, rates);
  if(n != 3) { Print("Need 3 completed bars; received ", n); return; }
  for(int i=0; i<n; i++)
    Print(rates[i].time, " ", rates[i].open, " ", rates[i].high,
          " ", rates[i].low, " ", rates[i].close);
}

Pine Script:転換点と判明時点

ta.pivothigh(high,2,2)には右側二本が必要です。10番の高値が判明するのは12番の確定時です。offset=-2は絵を10番へ戻すだけで、知識を過去へ移しません。ラベルは確認時に作り、両方の番号を残します。

スクリプト追加後に画面でアラートを作り、確定時動作を確認します。内部波、階級、修正モデルを検証するコードではありません。標準ツールと本例PineはExtraLightと区別します。現行ExtraLightページは将来の公開予定で、有料アクセスは未開放です。

//@version=6
indicator("Confirmed pivot record", overlay=true, max_labels_count=100)
p = ta.pivothigh(high, 2, 2)
confirmed = barstate.isconfirmed and not na(p)
plot(confirmed ? p : na, style=plot.style_cross, offset=-2)
if confirmed
    label.new(bar_index, high, str.format("pivot {0}; available {1}", bar_index-2, bar_index))
    alert("Confirmed high pivot", alert.freq_once_per_bar_close)

Python:CSVと価格条件の検査

csv.DictReaderのフィールドは文字列です。Decimalにはfloatを介さず原文字列を渡します。ファイルはopen(path,newline="",encoding="utf-8")で読みます。六つの架空価格で通常の上昇インパルスの一部価格条件のみを検査します。

100→120→110→145→125→150なら推進波長は20・35・25で、第3波は最短でなく第4波は120より上です。125を119へ変えると非重複条件に反します。Trueは内部波、階級、ピボット選択、収益性の証明ではなく、ダイアゴナルには別規則が必要です。

f>dは本例を非短縮の第5波に限定する追加条件です。短縮第5波は第3波高値を超えない場合があるため、この関数の拒否だけで他の有効なインパルスを否定できません。

import csv, io
from decimal import Decimal as D

csv_text = "point,price\n0,100\n1,120\n2,110\n3,145\n4,125\n5,150\n"
with io.StringIO(csv_text, newline="") as stream:
    p = [D(row["price"]) for row in csv.DictReader(stream)]

def upward_price_subset(p):
    if len(p) != 6: return False
    a,b,c,d,e,f = p
    l1,l3,l5 = b-a,d-c,f-e
    return (b>a and a<c<b and d>b and b<e<d and f>d
            and l3 >= min(l1,l5))

assert upward_price_subset(p)
assert not upward_price_subset(p[:4]+[D("119"),p[5]])
print(upward_price_subset(p))  # True: price subset only

MT4とMT5指標:バッファの仕様を特定する

MQL4 iCustomはmodeとshiftで選んだ指標バッファ値を返します。MQL5 iCustomはhandleを返し、CopyBufferで値を取得します。これらのインターフェースは名称不明のカスタム指標によるエリオット検出を証明しません。数値を解釈する前に、指標ファイルの識別情報、入力、バッファの意味、欠損値方針、確定足期限を保存します。

両実行で同じ業者系列と保存足を使います。ZigZag極値、波動ラベル、取引シグナルは別の検証が必要です。遅延転換点と過去の変更を調べ、未解決結果を未解決のまま残します。以前のCopyRates例はデータを取得するだけです。このインターフェース例は特定のカスタムバイナリ、無料ライセンス、ProのMT4/MT5連携、自動発注動作を主張しません。

インターフェース返されるオブジェクト
MT4 / iCustomdouble: mode + shift
MT5 / iCustomhandle → CopyBuffer
P4=119 / P1=120できません。非重複条件に失敗します。他の構造検査は別に行います。

TradingView:形成済みパターン・設定・アラート

TradingView自身のElliott Waves文書は直近600本で推進波とジグザグを探索すると説明します。2段階のラベルは入れ子で、歴史的エリオット次数を自動確定したものではありません。適したピボットから大きな値動きを優先し、全候補を網羅しません。文書確認日は2026年10月25日で、利用者口座へのインストール試験を主張していません。

変更前に市場付き銘柄、足、尺度、最後の確定足、全入力、画像を保存します。アラート画面では条件にこの指標を選び、文書の3種類のイベントを選択します。一部が形成済みと通知されても、完全なエリオット形状の確認ではありません。利用可否は口座次第で、特定無料プランでの提供は保証しません。

設定・イベント意味と再現検証
Invert pattern探索方向を逆転し下降推進波と上昇ジグザグを探す。同じ保存データ範囲で切り替える。
In progress未完成構造を含める。完成と認識された形状だけ比較するなら無効にするが、その後のデータで修正もあり得る。
Length type: Absolute / PercentAbsoluteは価格差、Percentは相対変化。長さの順位と規則判定が変わるので選択を先に固定。
Show projectionsIn progressでフィボナッチに基づく次波候補を表示。描画された予想値は観測価格ではない。
Pivots / 最終波点は適したピボット、進行中最終波は局所高安を使う。各点が分かった時刻と後の移動を保存。
New pattern新規形状、または同時に2点以上を移す再構築。最初の1点の移動は数えない。
New potential wave形成中波の追加、または最後の形成済み波が移動して再形成を始める。
Wave formed以前進行中だった波が形成。時刻・イベント・状態を保存し、収益保証としない。
再計算新データは既存形状を更新し、入力を1つ変えるだけでも全再計算。同じ保存入力で結果を比較。

出典と限界