Strategi penyepaduan pelbagai dimensi bagi tingkah laku harga

EMA HULL MACD SWING PINBAR
Tarikh penciptaan: 2025-11-25 14:02:09 Akhirnya diubah suai: 2025-11-25 14:02:09
Salin: 0 Bilangan klik: 60
2
fokus pada
319
Pengikut

Strategi penyepaduan pelbagai dimensi bagi tingkah laku harga Strategi penyepaduan pelbagai dimensi bagi tingkah laku harga

Ini bukan strategi tingkah laku harga biasa, ia adalah gabungan yang sempurna antara penunjuk teknikal.

Jangan tertipu dengan nama sederhana “Price Action”. Strategi ini menggabungkan 6 dimensi teknologi: 34 kitaran EMA, 89 kitaran Hull MA, MACD Column Graph, Swing High and Low, Pin Bar Form, dan Fakey Breakthrough Mode.Mekanisme pengesahan multidimensi yang sebenar, bukan mengikut satu-satunya petunjuk secara buta.

Logik teras strategi adalah jelas: EMA channel menilai arah trend, Hull MA memberikan pengesahan trend yang lancar, MACD pilar grafik mengenal pasti perubahan dinamik, titik titik berayun memberikan rintangan sokongan utama, Pin Bar dan Fakey bentuk sebagai pemicu masuk.Setiap isyarat memerlukan beberapa kali pengesahan, dan itulah sebabnya ia lebih dipercayai daripada strategi penunjuk tunggal tradisional.

50:20 keuntungan dan kerugian berbanding reka bentuk, kawalan risiko lebih ketat daripada kebanyakan strategi

Stop Loss 50 dan Stop Loss 20 dengan nisbah keuntungan dan risiko sebanyak 1: 2.5.Tetapan ini memberitahu anda satu fakta yang menyedihkan: walaupun anda hanya menang 40 peratus, anda masih boleh menjana keuntungan dalam jangka masa panjang.Tetapi kenyataannya adalah bahawa mekanisme pengesahan pelbagai dimensi biasanya dapat menaikkan kadar kemenangan ke dalam lingkungan 55-65%.

Hull MA’s 89-period setting is of particular interest. Berbeza dengan purata bergerak tradisional, Hull MA hampir menghapuskan ketinggalan dengan pengiraan kedua purata bergerak bertimbangan.Apabila Hull MA bertukar warna, kebarangkalian perubahan trend adalah lebih daripada 70%, yang merupakan salah satu kelebihan utama strategi tersebut.

Pin Bar mengenali logik lebih tepat daripada buku teks

Syarat pengenalan Pin Bar dalam strategi ini sangat ketat: entiti mestilah kurang dari 13 daripada keseluruhan garis K dan mesti menembusi titik tinggi dan rendah.Tidak semua garis panjang dipanggil Pin Bar, hanya yang menembusi kedudukan penting yang mempunyai nilai dagangan.

Lihatlah kesimpulan ini:(close - open < (high - low) / 3)Ia juga boleh digunakan untuk menjana pendapatan.high > swinghigh and high > high[1]Memastikan kejayaan.Ia lebih ketat daripada 90 peratus bar pin yang ada di pasaran, dan itulah sebabnya ia mempunyai kualiti isyarat yang lebih baik.

Fakey adalah model penembusan yang paling diremehkan

Pengiktirafan bentuk Fakey adalah pembunuh tersembunyi dalam strategi ini. Penembusan palsu selepas garis dalaman kemudian dibalikkan, kadar kejayaan biasanya antara 65-75%. Penghakiman Fakey ganda dalam kod strategi:fakeyIni adalah satu daripada beberapa perkara yang perlu dipertimbangkan.fakey1Kenali penembusan palsu ke bawah.

Kuncinya adalah untuk menetapkan nisbah 0.75close - low > 0.75 * (high - low)Pastikan daya baliknya cukup kuat. Parameter ini telah dioptimumkan dengan banyak pengulangan, penurunan kejayaan di bawah 0.75, dan kurangnya isyarat di atas 0.75.Parameter dua digit tepat selepas titik kecil, tidak ditetapkan secara rawak.

Sistem warna carta MACD, perubahan dinamik visual

Strategi menggunakan warna untuk menunjukkan keadaan pasaran secara intuitif: hijau menunjukkan peningkatan momentum kenaikan, merah menunjukkan peningkatan momentum penurunan, oren menunjukkan penurunan momentum.Ini bukan hiasan mewah, ini adalah isyarat isyarat dagangan dalam masa nyata.

hisupdanhisdownVariabel menjejaki perubahan berturut-turut dalam carta MACD. Apabila carta berturut-turut berkembang dan berada di atas paksi sifar, pergerakan berbilang kepala disahkan; sebaliknya, pergerakan kosong disahkan.Ia lebih baik 1-2 kitaran daripada hanya melihat MACD.

Sistem titik tinggi dan rendah yang bergoyang, mengenal pasti rintangan sokongan utama secara automatik

5 Pengiktirafan titik ayunan kitaran:high <= high[2] and high[1] <= high[2] and high[3] <= high[2] and high[4] <= high[2]Logik ini memastikan bahawa ketinggian yang diiktiraf adalah ketinggian tempatan yang sebenar, bukan perubahan rawak.

Nilai titik ayunan adalah untuk menyediakan tahap rintangan sokongan yang objektif.Tidak perlu garis subjektif, sistem secara automatik mengenal pasti dan terus diperbaharui. Apabila harga menembusi kedudukan penting ini, ia biasanya bermaksud permulaan sebenar trend.

Analisis Kebolehgunaan: Bukan Ubat Kesemuanya, Tetapi Cakupan Yang Cukup

Yang paling sesuai:Pengesanan trend di peringkat garis masa, terutamanya mata wang asing, pasangan mata wang utama, dan indeks saham.

Amaran penggunaan:Pasar frekuensi tinggi bergolak dan keadaan turun naik yang melampau dalam mata wang kripto. Pin Bar dan Fakey mudah menghasilkan isyarat palsu dalam turun naik yang berlebihan.

Elakkan sepenuhnya:Varian minoriti dengan kadar jualan yang sangat rendah dan peristiwa berita yang padat. Analisis teknikal dalam keadaan ini mempunyai kebarangkalian kegagalan yang tinggi.

Ruang Optimasi Parameter: Potensi untuk Dipupuk

34 kitaran EMA boleh disesuaikan dengan julat 30-40 mengikut jenis perdagangan, 89 kitaran Hull MA boleh menguji julat 80-100.Tetapi tidak disyorkan untuk menyimpang secara besar-besaran, parameter ini telah disahkan oleh pasaran dalam jangka masa yang panjang.

Perkadaran stop loss boleh disesuaikan mengikut kebolehan varieti. Varieti berfluktuasi tinggi boleh diperluaskan menjadi 60:25, dan varieti berfluktuasi rendah boleh diperketat menjadi 40:15.Kuncinya adalah untuk mengekalkan nisbah risiko-kebalasan yang lebih baik daripada 2:1.

Petua Risiko: Pemantauan Masa Lalu Tidak Bererti Pendapatan Masa Depan

Mana-mana strategi mempunyai risiko kerugian berterusan, dan sistem multidimensi ini tidak terkecuali.Adalah disyorkan untuk mengawal risiko individu dalam 1-2% akaun, tegaskan penangguhan kerugian, dan jangan melemahkan pengurusan risiko kerana pengesahan berulang.

Perubahan dalam persekitaran pasaran boleh mempengaruhi prestasi strategi, terutamanya dalam keadaan yang melampau di mana petunjuk teknikal mungkin tidak berfungsi pada masa yang sama.Mengkaji semula prestasi strategi secara berkala, jika perlu, berhenti berdagang dan menunggu keadaan pasaran yang lebih baik.

Kod sumber strategi
/*backtest
start: 2025-07-01 00:00:00
end: 2025-11-24 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_OKX","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Price Action", shorttitle="Price Action", overlay=true)

// --- Inputs ---
onlybuy    = input.bool(false, "Only Buy")
onlysell   = input.bool(false, "Only Sell")
SL_input   = input.float(50.00, title="Chốt lời (Pip)", step=1)
rr_input   = input.float(20.00, title="Cắt lỗ (Pip)", step=1)
useTPandSL = input.bool(true, title="Sử dụng chốt lời và cắt lỗ?")

// --- EMAs ---
HiLoLen = 34
pacL = ta.ema(low, HiLoLen)
pacC = ta.ema(close, HiLoLen)
pacH = ta.ema(high, HiLoLen)
signalMA = ta.ema(close, 89)

col1 = pacC > signalMA ? color.lime : pacC < signalMA ? color.red : color.yellow
plot(signalMA, color=col1, title="SignalMA")

// --- Hull MA ---
n = 89
n2ma = 2 * ta.wma(close, int(math.round(n / 2)))
nma = ta.wma(close, n)
diff = n2ma - nma
sqn = int(math.round(math.sqrt(n)))

n2ma1 = 2 * ta.wma(close[1], int(math.round(n / 2)))
nma1 = ta.wma(close[1], n)
diff1 = n2ma1 - nma1
sqn1 = int(math.round(math.sqrt(n)))

n1 = ta.wma(diff, sqn)
n2 = ta.wma(diff1, sqn)

condDown = n2 >= n1
condUp = condDown != true
col = condUp ? color.lime : condDown ? color.red : color.yellow
plot(n1, title="Hull MA", color=col, linewidth=1)

// --- MACD Barcolor ---
fastlength = 12
slowlength = 26
MACDLength = 9
MACD = ta.ema(close, fastlength) - ta.ema(close, slowlength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD

hisup = 0
hisup := delta > delta[1] and delta > 0 ? 1 : delta < delta[1] ? -1 : nz(hisup[1], 0)

hisdown = 0
hisdown := delta < delta[1] and delta < 0 ? 1 : delta > delta[1] ? -1 : nz(hisdown[1], 0)

// --- Swing High/Low ---
// Logic updated for v6 strict comparisons
ktswinghigh = (high <= high[2] and high[1] <= high[2] and high[3] <= high[2] and high[4] <= high[2])
sh = ktswinghigh ? high[2] : na

// Replacement for fixnan using var
var float swinghigh = na
if not na(sh)
    swinghigh := sh

colorsh = swinghigh == swinghigh[1] ? color.white : na
plot(swinghigh, color=colorsh, title="Swing High", style=plot.style_line, offset=-2)

ktswinglow = (low >= low[2] and low[1] >= low[2] and low[3] >= low[2] and low[4] >= low[2])
sl = ktswinglow ? low[2] : na

// Replacement for fixnan using var
var float swinglow = na
if not na(sl)
    swinglow := sl

colorsl = swinglow == swinglow[1] ? color.white : na
plot(swinglow, title="Swing Low", color=colorsl, style=plot.style_line, offset=-2)

// --- Pinbar & Patterns ---
ema21 = ta.ema(close, 13)
beariskpinbar = (close - open < (high - low) / 3 and open - close < (high - low) / 3) and ((high > swinghigh and high > high[1] and high > high[2] and high > high[3] and close < swinghigh))
bullishpibar  = (close - open < (high - low) / 3 and open - close < (high - low) / 3) and ((low < swinglow and low < low[1] and low < low[2] and low < low[3] and close > swinglow))

// Helper function for Inside Bar
Inside(pos) => high <= high[pos] and low >= low[pos]

outsidebar = (high >= high[1] and low <= low[1])
barcolor((high <= high[1] and low >= low[1]) ? color.white : na)

// MACD Color Logic
barcolor(hisup == 1 and MACD > 0 ? color.lime : hisdown == 1 and MACD < 0 ? color.red : hisup == -1 and MACD > 0 ? color.green : color.orange)
barcolor(bullishpibar or beariskpinbar ? color.white : na)

secLast = 1
fakey = (high[1] <= high[2] and low[1] >= low[2] and high > high[2] and close >= low[2] and close < high[2]) or (high[2] <= high[3] and low[2] >= low[3] and high[1] > high[2] and close < high[2] and close > low[3] and high - close > 0.75 * (high - low))
fakey1 = (high[1] <= high[2] and low[1] >= low[2] and low < low[2] and close > low[2] and close <= high[1]) or (high[2] <= high[3] and low[2] >= low[3] and low[1] < low[2] and close > low[2] and close < high[3] and close - low > 0.75 * (high - low))
barcolor(fakey or fakey1 ? color.white : na)

// Soldiers and Crows
onewhitesoliderbear = close < open and high[1] - close > 0.5 * (high[1] - low[1]) and (open - close) > 2.0 / 3.0 * (high - low) and (high[1] > ema21[1] or high > ema21) and open[1] < ema21[1] and close - low < (high - close) * 0.3 and (open[2] < ema21[2] or close[2] < ema21[2]) and close < ema21 and low[2] < low[1] and low[3] < low[2]
onewwhitesoliderbull = close > open and close - low[1] > 0.5 * (high[1] - low[1]) and (close - open) > 2.0 / 3.0 * (high - low) and (low[1] < ema21[1] or low < ema21) and open[1] > ema21[1] and high - close < (close - low) * 0.3 and (open[2] > ema21[2] or close[2] > ema21[2]) and close > ema21 and high[2] > high[1] and high[3] > high[2]

insidebar = ((high[1] <= high[2] and low[1] >= low[2]) and not outsidebar)
barcolor(outsidebar and high[1] <= high[2] and low[1] >= low[2] ? color.white : na)
bearishibbf = (insidebar and (high > high[1] and close < high[1]))
bullishibbf = (insidebar and (low < low[1] and close > low[1]))

barcolor((onewwhitesoliderbull or onewhitesoliderbear) and not insidebar ? color.white : na)

whitesoldierreversal = ((low[1] < low[2] and low[2] < low[3]) or (high[1] < high[2] and high[2] < high[3])) and low[3] < low[8] and low[8] < ema21[8] and high[2] < ema21[2] and high[1] < ema21[1] and high[3] < ema21[3] and close - low[1] > (high[1] - close) and (open < close[1] or open < open[1]) and close - open > 0.3 * (high - low) and high - close < 0.5 * (close - open)
blackcrowreversal = ((high[1] > high[2] and high[2] > high[3]) or (low[1] > low[2] and low[2] > low[3])) and high[3] > high[8] and high[8] > ema21[8] and low[2] > ema21[2] and low[1] > ema21[1] and low[3] > ema21[3] and close - low[1] < (high[1] - close) and (open > close[1] or open > open[1]) and open - close > 0.3 * (high - low) and close - low < 0.5 * (open - close)

barcolor(blackcrowreversal or whitesoldierreversal ? color.white : na)

pinbarreversalbull = ((low[1] < low[2] and low[2] < low[3]) or (high[1] < high[2] and high[2] < high[3])) and low[3] < low[8] and low[8] < ema21[8] and high[2] < ema21[2] and high[1] < ema21[1] and high[3] < ema21[3] and close - open < (high - low) / 3 and open - close < (high - low) / 3 and high - close < close - low and low < low[1]
pinbarreversalbear = ((high[1] > high[2] and high[2] > high[3]) or (low[1] > low[2] and low[2] > low[3])) and high[3] > high[8] and high[8] > ema21[8] and low[2] > ema21[2] and low[1] > ema21[1] and low[3] > ema21[3] and close - open < (high - low) / 3 and open - close < (high - low) / 3 and high - close > close - low and high > high[1]

barcolor(pinbarreversalbear or pinbarreversalbull ? color.white : na)

plotshape(fakey and (not outsidebar or not (high[1] <= high[2] and low[1] >= low[2])) and not blackcrowreversal, title="Fakey Bearish", location=location.abovebar, color=color.white, style=shape.arrowdown, text="Fakey", size=size.tiny)
plotshape(fakey1 and (not outsidebar or not (high[1] <= high[2] and low[1] >= low[2])) and not whitesoldierreversal, title="Fakey Bullish", location=location.belowbar, color=color.white, style=shape.arrowup, text="Fakey", size=size.tiny)

// --- Strategy Logic ---
conmua = 0
conmua := hisup == 1 and MACD > 0 ? 1 : (hisdown[1] == 1 and MACD[1] < 0 and pacC[1] > signalMA[1]) or (n1[2] < n1[3] and pacC[1] > signalMA[1]) ? -1 : nz(conmua[1], 1)

conmua1 = 0
conmua1 := conmua == 1 and (hisdown == 1 and MACD < 0 and pacC > signalMA) or (n1[1] < n1[2] and pacC > signalMA) ? 1 : (close[1] > n1[1] and pacC[1] > signalMA[1] and open[1] < n1[1] and close[1] > pacC[1]) or ta.crossunder(pacC, signalMA) ? -1 : nz(conmua1[1], 1)

conmua2 = 0
conmua2 := conmua1 == 1 and hisup == 1 and MACD > 0 and close > n1 ? 1 : high[1] < high[3] and high[2] < high[3] ? -1 : nz(conmua2[1], 1)

conmua3 = 0
conmua3 := conmua2 == 1 and high < high[2] and high[1] < high[2] ? 1 : (close[1] > swinghigh[1] and hisup[1] == 1 and MACD[1] > 0) or (MACD < 0) ? -1 : nz(conmua3[1], 1)

mua = conmua3 == 1 and hisup == 1 and MACD > 0 and conmua2 == -1 and conmua1 == -1
mua2 = conmua1 == 1 and (close > n1 and pacC > signalMA and open < n1 and close > pacC) and conmua[1] == -1

// ENTRY BUY
if (mua2 and not onlysell)
    strategy.entry("Buy", strategy.long)

conban = 0
conban := hisdown == 1 and MACD < 0 ? 1 : (hisup[1] == 1 and MACD[1] > 0 and pacC[1] < signalMA[1]) or (n1[2] > n1[3] and pacC[1] < signalMA[1]) ? -1 : nz(conban[1], 1)

conban1 = 0
conban1 := conban == 1 and (hisup == 1 and MACD > 0 and pacC < signalMA) or (n1[1] > n1[2] and pacC < signalMA) ? 1 : (close[1] < n1[1] and pacC[1] < signalMA[1] and open[1] > n1[1] and close[1] < pacC[1]) or ta.crossover(pacC, signalMA) ? -1 : nz(conban1[1], 1)

conban2 = 0
conban2 := conban1 == 1 and hisdown == 1 and MACD < 0 and close < n1 ? 1 : low[1] > low[3] and low[2] > low[3] ? -1 : nz(conban2[1], 1)

conban3 = 0
conban3 := conban2 == 1 and low[1] > low[2] and low > low[2] ? 1 : (close[1] < swinglow[1] and hisdown[1] == 1 and MACD[1] < 0) or (MACD > 0) ? -1 : nz(conban3[1], 1)

ban = conban3 == 1 and hisdown == 1 and MACD < 0 and conban2 == -1
ban2 = conban1 == 1 and (close < n1 and pacC < signalMA and open > n1 and close < pacC) and conban[1] == -1

// ENTRY SELL
if (ban2 and not onlybuy)
    strategy.entry("Sell", strategy.short)

plotshape(conmua1 == 1 and conmua[1] == -1, style=shape.triangleup, color=color.lime, location=location.bottom, size=size.tiny)
plotshape(conban1 == 1 and conban[1] == -1, style=shape.triangledown, color=color.red, location=location.bottom, size=size.tiny)
plotshape(mua2, style=shape.labelup, color=color.lime, location=location.bottom, size=size.tiny)
plotshape(ban2, style=shape.labeldown, color=color.red, location=location.bottom, size=size.tiny)

// --- TP and SL ---
Stop = rr_input * 10
Take = SL_input * 10

if (useTPandSL)
    strategy.exit("ExitBuy", "Buy", 1, profit=Take, loss=Stop)
    strategy.exit("ExitSell", "Sell", 1, profit=Take, loss=Stop)