Trend Mengikut Strategi Berdasarkan Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2024-01-18 12:23:59
Tag:

img

Ringkasan

Strategi ini adalah strategi mengikut trend berdasarkan purata bergerak. Ia menggunakan garis EMA dari tempoh yang berbeza untuk membina pelbagai set isyarat perdagangan untuk penjejakan trend. Apabila harga pecah di bawah purata bergerak tempoh yang lebih lama, strategi akan secara beransur-ansur membina kedudukan panjang untuk menurunkan kos purata. Strategi ini juga menetapkan syarat stop loss berdasarkan pusingan purata bergerak tempoh pendek untuk mendapatkan keuntungan.

Logika Strategi

Strategi ini menggunakan 5 garis EMA dari tempoh yang berbeza untuk membina isyarat dagangan, iaitu 10 hari, 20 hari, 50 hari, 100 hari dan 200 hari EMA. Strategi ini menentukan 4 syarat pembelian berdasarkan hubungan harga dengan garis EMA ini untuk melaksanakan perdagangan piramid.

Apabila harga berada di bawah 20 hari EMA manakala di atas 50 hari EMA, isyarat beli pertama dicetuskan. Apabila di bawah 50 hari EMA manakala di atas 100 hari EMA, isyarat beli kedua dicetuskan. Isyarat beli ketiga dan keempat dicetuskan apabila harga jatuh di bawah 100 hari EMA dan 200 hari EMA masing-masing. Saiz kedudukan juga berkembang secara progresif dari qt1 ke qt4.

Pada bahagian jual, terdapat dua kumpulan keadaan stop loss. Yang pertama adalah untuk menghentikan kerugian apabila harga melebihi EMA 10 hari sementara EMA 10 hari berada di atas garis EMA lain. Yang kedua adalah sama tetapi keluar apabila harga jatuh di bawah penutupan 10 hari EMA sebelumnya. Kedua-dua syarat ini adalah untuk mendapatkan keuntungan jangka pendek semasa trend.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah keupayaan untuk mengesan trend pasaran secara automatik untuk tahan jangka panjang. Dengan menggunakan pelbagai keadaan kemasukan dan pembinaan kedudukan progresif, ia sentiasa mengurangkan asas kos untuk menghasilkan pulangan yang berlebihan. Ia juga mempelbagaikan risiko penetapan harga yang berkaitan dengan tahap harga kemasukan tunggal.

Di sisi stop loss, strategi ini menjejaki titik perubahan purata bergerak jangka pendek untuk dengan cepat mengambil keuntungan dan mengelakkan kerugian lanjut.

Analisis Risiko

Risiko terbesar yang dihadapi oleh strategi ini adalah terjebak dalam penyatuan jangka panjang atau trend penurunan. Apabila pasaran keseluruhan memasuki saluran berkisar atau menurun, isyarat purata bergerak menjadi kurang boleh dipercayai. Ini boleh menyebabkan kerugian berterusan dari pembinaan panjang yang berterusan.

Satu lagi titik risiko adalah bahawa purata bergerak tidak selalu menentukan giliran dengan tepat. jurang harga atau pergerakan letupan boleh mengakibatkan isyarat yang rosak. Ini memerlukan penunjuk teknikal tambahan untuk pengesahan dan pengoptimuman.

Arahan pengoptimuman

Penunjuk teknikal lain seperti jumlah atau Bollinger Bands boleh dimasukkan ke dalam syarat pembelian untuk meningkatkan lebih lanjut ketepatan kemasukan.

Layar kedua stop loss berdasarkan Bollinger Upper Band atau kawasan sokongan utama juga boleh ditambah. Ini membantu mengelakkan berhenti kecil yang tidak perlu. Melaksanakan stop loss adaptif untuk harga jejak adalah satu lagi bidang peningkatan untuk melindungi keuntungan dengan lebih baik.

Kesimpulan

Strategi ini melaksanakan trend selepas perdagangan melalui sistem purata bergerak. Melalui pembinaan kedudukan piramid, ia bertujuan untuk memaksimumkan pulangan daripada trend berterusan sambil memastikan pelestarian modal dengan mekanisme stop loss berganda. Ini adalah strategi yang layak untuk mengesan dan menguji secara langsung. Parameter dan model boleh dioptimumkan secara beransur-ansur berdasarkan prestasi praktikal.


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

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Lebih lanjut