Strategi Pembalikan Trend Berdasarkan Purata Bergerak, Corak Harga dan Volume

Penulis:ChaoZhang, Tarikh: 2024-01-17 17:48:40
Tag:

img

Ringkasan

Strategi ini menggabungkan purata bergerak, corak harga dan jumlah untuk mengenal pasti titik pembalikan trend yang berpotensi di pasaran. Ia menjadi panjang apabila purata bergerak pantas melintasi di atas purata bergerak perlahan, corak engulfing bullish muncul, tahap rintangan pecah, dan jumlah dagangan meningkat. Ia menjadi pendek apabila keadaan yang bertentangan berlaku.

Prinsip-prinsip

Idea utama strategi ini adalah menggunakan gabungan purata bergerak, corak tindakan harga dan jumlah sebagai isyarat untuk pembalikan yang akan datang. Khususnya, salib emas dan salib kematian purata bergerak boleh menunjukkan perubahan trend. corak bullish / bearish engulfing biasanya menunjukkan pembalikan jangka pendek ke hadapan. lonjakan dalam jumlah perdagangan juga sering menandakan pembalikan trend. Dengan menggabungkan ketiga-tiga jenis isyarat, strategi ini bertujuan untuk menangkap dengan tepat titik perubahan pembalikan.

Dari segi logik, strategi pertama mengira purata bergerak cepat dan perlahan. Kemudian ia menentukan keadaan untuk mengenal pasti corak bullish/bearish engulfing. Tahap sokongan dan rintangan dimasukkan bersama-sama dengan pengembangan jumlah sebagai syarat tambahan. Isyarat beli mencetuskan apabila MA cepat melintasi di atas MA perlahan, corak bullish muncul, rintangan pecah, dan lonjakan jumlah. Syarat bertentangan mencetuskan isyarat jual.

Kelebihan

Kelebihan terbesar strategi ini adalah menggunakan gabungan pelbagai isyarat untuk mengesahkan pembalikan, yang membantu mengelakkan isyarat palsu. Bergantung hanya pada satu petunjuk seperti purata bergerak atau corak lilin cenderung menghasilkan perdagangan yang salah. Dengan memerlukan penyelarasan ketiga-tiga faktor, kemungkinan menangkap pembalikan dengan tepat meningkat dengan ketara.

Selain itu, strategi ini menggunakan kedua-dua konsep trend dan pembalikan. Pembalikan hanya dicari selepas trend yang sedia ada. Dengan kata lain, strategi hanya mencari retracements kontra trend dalam pasaran trend. Ini membantu mengurangkan rawak dan meningkatkan keuntungan.

Risiko

Risiko terbesar strategi ini adalah pembalikan yang gagal, di mana harga terus bergerak menentang arah perdagangan selepas isyarat kemasukan. Ini biasanya berlaku apabila isyarat pembalikan ternyata palsu, atau hanya pembetulan jangka pendek dalam trend yang berterusan.

Penyelesaian termasuk menyesuaikan tempoh purata bergerak untuk menentukan trend yang lebih baik, menggunakan kerugian berhenti yang lebih luas, dan menggabungkan lebih banyak faktor pengesahan sebelum isyarat pembalikan perdagangan.

Peningkatan

Peluang pengoptimuman untuk strategi ini termasuk:

  1. Penyesuaian tempoh purata bergerak untuk mengenal pasti trend jangka pendek / jangka panjang yang optimum.

  2. Uji kaedah pengiraan sokongan / rintangan yang berbeza seperti Titik Pivot.

  3. Mencuba penunjuk jumlah lain seperti Chaikin Aliran Wang, Volume Oscillator.

  4. Menggabungkan lebih banyak faktor pengesahan pembalikan seperti corak carta jangka panjang, lonjakan jumlah besar dan sebagainya.

  5. Menggunakan niaga hadapan indeks saham untuk mengesahkan isyarat merentasi pasaran.

Melalui ujian gabungan parameter yang ketat, peningkatan prestasi yang lebih lanjut dapat dicapai.

Kesimpulan

Strategi ini menggabungkan rata-rata bergerak, tindakan harga dan jumlah untuk membalikkan perdagangan hanya di pasaran trend. Dengan mengoptimumkan parameter dan menambah lebih banyak pengesahan isyarat, ia boleh menjadi sistem yang kukuh untuk perdagangan kontra trend jangka pendek.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Profit Table Strategy", overlay=true)

// Input parameters
fastLength = input(10, title="Fast MA Length")
slowLength = input(20, title="Slow MA Length")
takeProfitPercent = input(1, title="Take Profit (%)") / 100
stopLossPercent = input(1, title="Stop Loss (%)") / 100
trailingStopPercent = input(1, title="Trailing Stop (%)") / 100

// Price action conditions
bullishEngulfing = close > open and close > open[1] and open < close[1] and open[1] > close[1]
bearishEngulfing = close < open and close < open[1] and open > close[1] and open[1] < close[1]

// Support and resistance levels
supportLevel = input(100, title="Support Level")
resistanceLevel = input(200, title="Resistance Level")

// Volume conditions
volumeCondition = volume > ta.sma(volume, 20)

// Calculate moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)

// Buy condition
buyCondition = (fastMA > slowMA) and (close > resistanceLevel) and bullishEngulfing and volumeCondition

// Sell condition
sellCondition = (fastMA < slowMA) and (close < supportLevel) and bearishEngulfing and volumeCondition

// Strategy logic
strategy.entry("Buy", strategy.long, when=buyCondition)
strategy.close("Buy", when=sellCondition)

// Calculate take profit, stop loss, and trailing stop levels
takeProfitLevel = strategy.position_avg_price * (1 + takeProfitPercent)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPercent)
trailingStopLevel = strategy.position_avg_price * (1 - trailingStopPercent)

// Plotting levels on the chart
plot(supportLevel, color=color.blue, style=plot.style_line, linewidth=2, title="Support Level")
plot(resistanceLevel, color=color.purple, style=plot.style_line, linewidth=2, title="Resistance Level")
plot(takeProfitLevel, color=color.green, style=plot.style_line, linewidth=2, title="Take Profit Level")
plot(stopLossLevel, color=color.red, style=plot.style_line, linewidth=2, title="Stop Loss Level")
plot(trailingStopLevel, color=color.orange, style=plot.style_line, linewidth=2, title="Trailing Stop Level")

// Plotting buy and sell signals on the chart
plotshape(series=buyCondition, title="Buy Signal", color=color.green, style=shape.labelup, location=location.belowbar)
plotshape(series=sellCondition, title="Sell Signal", color=color.red, style=shape.labeldown, location=location.abovebar)


Lebih lanjut