艾略特資料與程式實驗:MT4、MT5、Pine與Python
以三個教學範例說明已收盤OHLC、確認轉折與六點價格檢查。
發布日期: (UTC+3)
Русский · English · Deutsch · Español · Français · Italiano · 繁體中文 · 日本語 · 한국어
撰寫波浪程式前,先確定輸入、K棒順序與結果何時可知。以下原創範例只實作局部步驟,並非完整波浪辨識器,也不證明與Pro或Light已整合,不會送出交易指令。
MT4、MT5與MQL5:先定義OHLC資料
MQL4與MQL5的CopyRates在start_pos=0時包含尚未收盤的當前棒。下例從位置1取三根D1棒,須確認回傳正好3根;錯誤或歷史尚未下載完整時應停止並重查。ArraySetAsSeries(false)按舊到新讀取;CopyRates不論序列旗標都將舊資料置於實體記憶體開頭。
保存商品、券商時區、交易時段、調整設定、OHLC及量的單位。Tick volume與交易所實際成交量不能互換。取得MqlRates不等於辨識波浪,也不證明CSV可由Pro匯入;實際匯入格式須另行核對。本例不宣稱作者已在終端完成實測。
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,但不會把資訊移回過去。標籤在確認時建立,同時記錄兩個索引。
加入腳本後須在介面建立警報並檢查收盤行為。這段程式不驗證推動浪內部、浪級或修正模型。TradingView原生工具及本例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,第三浪不是最短,第四浪仍高於120。把125改為119即違反不重疊。True不能證明子浪、浪級、轉折選擇或獲利;斜浪須採另一組規則。
f>d額外把範例限定為未截短的第五浪。截短第五浪可能未超過第三浪高點,因此本函數回傳False本身不能排除另一種有效推動浪。
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 onlyMT4與MT5指標:確認緩衝區介面
MQL4 iCustom依mode與shift傳回選定指標緩衝區值;MQL5 iCustom傳回handle,再由CopyBuffer讀取值。這些介面不能證明未具名自訂指標能偵測艾略特波浪。解讀數字前,先保存指標檔案身分、輸入、緩衝區含義、缺值政策與已完成柱截止點。
兩次運行使用相同券商序列與已保存價格柱。ZigZag極值、波浪標記及交易訊號須分別驗證。檢查延遲轉折與歷史修改;未解決結果保持未解決。先前CopyRates範例僅取得資料。此介面範例不主張特定自訂二進位檔、免費授權、Pro與MT4/MT5整合或自動下單行為。
| 介面 | 傳回物件 |
|---|---|
| MT4 / iCustom | double: mode + shift |
| MT5 / iCustom | handle → CopyBuffer |
| P4=119 / P1=120 | 沒有。不重疊檢查失敗;其他結構檢查仍須分開。 |
TradingView:已形成型態、設定與警報
TradingView自有Elliott Waves文件說明在最近600根K棒搜尋推動浪與鋸齒。兩層標記表示巢狀關係,並非自動判定歷史艾略特級別。選定樞紐偏向大幅價格移動,不代表全部可能浪數。文件檢查日期為2026年10月25日,未聲稱已在使用者帳戶安裝測試。
改設定前保存含交易場所的商品代碼、週期、刻度、最後收完的K棒、全部參數與截圖。在警報對話框選此指標作條件,再選三種文件記載事件之一。某部分被標為已形成不等於完整艾略特型態已確認。可用性依帳戶而定,本文不保證特定免費方案可用。
| 設定或事件 | 意義與可重現檢查 |
|---|---|
| Invert pattern | 反轉搜尋方向:下行推動浪與上行鋸齒。切換時保留相同資料視窗。 |
| In progress | 納入未完成結構。關閉後只比較被辨識為完成的型態;後續資料仍可能修訂它們。 |
| Length type: Absolute / Percent | Absolute用價格差,Percent用相對變化。先固定選項,因長度排序與規則檢查可能改變。 |
| Show projections | 在In progress模式用費波那契關係顯示可能下一浪。畫出的投射不是已觀察價格。 |
| Pivots / 最後一浪 | 點綁定適合的樞紐,進行中最後一浪使用局部高低點。記錄每點何時可知及後續移動。 |
| New pattern | 出現新型態,或重建同時移動至少兩點;最初第一點的變化不列入此數。 |
| New potential wave | 加入新的形成中浪,或最後已形成浪換點後再次形成。 |
| Wave formed | 先前形成中的一浪已形成。保存時間、事件與狀態,不代表報酬保證。 |
| 重新計算 | 新資料修訂先前型態;任一輸入變更都觸發完整重算。以同一保存輸入比較結果。 |