Strategi ini adalah sistem mengikuti trend yang menggabungkan pelbagai persimpangan Exponential Moving Average (EMA) dengan tahap lanjutan Fibonacci. Ia menggunakan interaksi antara EMA dari tempoh yang berbeza untuk mengenal pasti permulaan dan akhir trend yang berpotensi, sementara menggunakan tahap lanjutan Fibonacci untuk menentukan sasaran keuntungan. Strategi ini juga menggabungkan peraturan berhenti rugi khusus untuk menguruskan risiko dan melindungi keuntungan.
Inti strategi ini terletak pada penggunaan persilangan EMA di pelbagai jangka masa untuk menangkap permulaan dan pengakhiran trend. Khususnya, ia menggunakan EMA 5-periode, 10-periode, dan 30-periode. Strategi ini merangkumi empat syarat kemasukan yang berbeza, masing-masing direka untuk menangkap senario pasaran yang berbeza:
Keadaan kemasukan pertama diaktifkan apabila harga menyentuh atau jatuh di bawah EMA 30 tempoh tetapi kemudian ditutup di atasnya, sementara EMA 10 tempoh di atas EMA 5 tempoh, dan EMA 30 tempoh adalah 1% lebih rendah daripada EMA 5 tempoh.
Keadaan kemasukan kedua diaktifkan apabila EMA 5 tempoh melintasi di atas EMA 30 tempoh, dan EMA 30 tempoh telah melintasi di bawah EMA 5 tempoh dalam 6 bar terakhir.
Keadaan kemasukan ketiga diaktifkan apabila paras tertinggi dua bar sebelumnya berada di bawah EMA 5 tempoh masing-masing, EMA 5 tempoh berada di bawah EMA 10 tempoh, yang di bawah EMA 30 tempoh, dan paras tertinggi bar sebelumnya berada di bawah penutupan semasa.
Keadaan kemasukan keempat diaktifkan apabila EMA 10 tempoh melintasi di atas EMA 30 tempoh, EMA 5 tempoh telah melintasi di atas EMA 30 tempoh dalam 4 bar terakhir, dan kedua-dua nilai EMA 10 tempoh dan 5 tempoh
Untuk stop-loss, strategi menetapkan peraturan khusus untuk syarat kemasukan yang berbeza:
Sasaran keuntungan ditetapkan berdasarkan tahap lanjutan Fibonacci, termasuk 0.618, 0.786, 1.0, dan 1.618 tahap. Strategi menutup kedudukan apabila tahap ini dicapai, mengikut peraturan tertentu.
Tambahan pula, strategi ini merangkumi syarat kunci keuntungan: jika paras terendah dua bar terakhir berada di atas EMA 5 tempoh dan EMA diselaraskan mengikut susunan menaik (5 > 10 > 30), kedudukan ditutup untuk mengunci keuntungan.
Pelbagai pengesahan: Dengan menggunakan beberapa EMA dan syarat kemasukan, strategi dapat mengenal pasti permulaan dan kesinambungan trend dengan lebih tepat.
Kebolehsesuaian yang tinggi: Empat keadaan kemasukan yang berbeza membolehkan strategi menyesuaikan diri dengan pelbagai persekitaran pasaran, menangkap peluang perdagangan sama ada dalam pecah cepat atau pembentukan trend yang perlahan.
Pengurusan Risiko: Strategi ini merangkumi peraturan stop-loss khusus, yang membantu mengawal risiko untuk setiap perdagangan.
Sasaran keuntungan yang jelas: Menggunakan tahap lanjutan Fibonacci sebagai sasaran keuntungan memberikan peniaga titik keluar yang jelas. Ini membantu mengelakkan mengambil keuntungan terlalu awal atau memegang kedudukan terlalu lama.
Perlindungan Keuntungan: Keadaan kunci keuntungan membantu melindungi keuntungan yang diperoleh apabila trend mungkin berbalik, aspek penting yang sering diabaikan oleh banyak strategi trend.
Gabungan Penunjuk Teknikal: Strategi ini menggabungkan EMA dan alat Fibonacci, memanfaatkan kekuatan kedua-dua alat analisis teknikal yang popular ini.
Overtrading: Keadaan kemasukan yang berbilang boleh menyebabkan overtrading, terutamanya di pasaran yang sangat tidak menentu. Ini boleh meningkatkan kos transaksi dan berpotensi membawa kepada lebih banyak isyarat palsu.
Sensitiviti Parameter: Strategi menggunakan beberapa tempoh EMA tetap dan ambang peratusan. Parameter ini mungkin perlu diselaraskan untuk pasaran dan jangka masa yang berbeza, jika tidak, mereka mungkin membawa kepada prestasi strategi yang buruk.
Kebergantungan Trend: Sebagai strategi trend-mengikuti, ia mungkin berprestasi buruk dalam pasaran yang berkisar atau berayun. Dalam persekitaran pasaran ini, ia mungkin menghasilkan beberapa isyarat palsu dan kerugian kecil.
Lag: EMA secara semula jadi penunjuk yang tertinggal. Dalam pasaran yang berubah dengan cepat, strategi mungkin tidak dapat menangkap titik perubahan trend dengan cara yang tepat.
Kerumitan: Kepelbagaian syarat dan peraturan strategi meningkatkan kerumitan, yang mungkin menjadikannya sukar untuk difahami dan dipelihara, dan juga meningkatkan risiko terlalu sesuai.
Penyesuaian Parameter Dinamik: Pertimbangkan untuk memperkenalkan mekanisme penyesuaian untuk menyesuaikan tempoh EMA secara dinamik dan parameter lain berdasarkan turun naik pasaran.
Menggabungkan Penunjuk Volume: Menggabungkan analisis jumlah boleh meningkatkan ketepatan keputusan kemasukan dan keluar. Sebagai contoh, memerlukan peningkatan jumlah pada kemasukan untuk mengesahkan kekuatan trend.
Penapisan persekitaran pasaran: Memperkenalkan mekanisme pengenalan persekitaran pasaran, seperti menggunakan ATR (Average True Range) atau penunjuk turun naik, untuk menghentikan perdagangan dalam persekitaran yang tidak sesuai untuk mengikuti trend.
Mengoptimumkan mekanisme Stop-Loss: Pertimbangkan untuk menggunakan trailing stop dan bukannya stop tetap. Ini boleh melindungi keuntungan sambil membolehkan mereka terus berkembang.
Tambah Penapisan Masa: Batasi perdagangan kepada tempoh masa tertentu, mengelakkan tempoh yang sangat tidak menentu atau kecairan yang rendah, yang dapat meningkatkan kestabilan strategi.
Memperkenalkan Pembelajaran Mesin: Gunakan algoritma pembelajaran mesin untuk mengoptimumkan pemilihan parameter dan keputusan kemasukan, yang dapat meningkatkan kemampuan dan prestasi strategi.
Analisis Pelbagai Jangka Masa: Menggabungkan analisis trend dari jangka masa yang lebih lama untuk meningkatkan ketepatan keputusan kemasukan dan mengelakkan memasuki terhadap trend utama.
Multi-EMA Crossover dengan Fibonacci Extension Trend Following Strategy menunjukkan sistem perdagangan yang komprehensif yang menggabungkan pelbagai penunjuk teknikal dan konsep perdagangan. Dengan menggunakan pelbagai EMA dan syarat kemasukan, strategi ini berusaha untuk mencapai keseimbangan antara menangkap trend dan mengurangkan isyarat palsu. Penggunaan tahap sambungan Fibonacci memberikan asas objektif untuk menetapkan sasaran keuntungan, sementara peraturan stop-loss dan kunci keuntungan khusus mencerminkan penekanan pada pengurusan risiko.
Walaupun strategi ini mempunyai kelebihan dalam pengesahan berganda dan kebolehsesuaian yang tinggi, kerumitan dan kepekaan terhadap pemilihan parameter juga menimbulkan beberapa cabaran. Untuk meningkatkan lagi ketahanan dan prestasi strategi, pertimbangan dapat diberikan untuk memperkenalkan penyesuaian parameter dinamik, penapisan persekitaran pasaran, dan analisis pelbagai jangka masa sebagai arah pengoptimuman.
Secara keseluruhan, strategi ini menyediakan rangka kerja yang menarik untuk mengikuti trend, tetapi peniaga perlu menjalankan pengujian balik dan pengoptimuman parameter yang menyeluruh semasa menerapkannya dalam amalan, dan membuat penyesuaian yang sesuai berdasarkan pasaran dan gaya perdagangan tertentu.
/*backtest start: 2024-06-01 00:00:00 end: 2024-06-30 23:59:59 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Combined Strategy with Specific Stop Loss", overlay=true) // Define the EMAs ema30 = ta.ema(close, 30) ema10 = ta.ema(close, 10) ema5 = ta.ema(close, 5) // Define the conditions for opening an order open_condition1 = low <= ema30 and close > ema30 and ema10 > ema5 and ema30 * 1.01 < ema5 open_condition2 = ta.crossover(ema5, ema30) and (ta.crossover(ema30[1], ema5[1]) or ta.crossover(ema30[2], ema5[2]) or ta.crossover(ema30[3], ema5[3]) or ta.crossover(ema30[4], ema5[4]) or ta.crossover(ema30[5], ema5[5]) or ta.crossover(ema30[6], ema5[6]) ) open_condition3 = high[2] < ema5[2] and high[1] < ema5[1] and ema5 < ema10 and ema10 < ema30 and high[1] < close open_condition4 = ta.crossover(ema10, ema30) and (ta.crossover(ema5[0], ema30[0]) or ta.crossover(ema5[1], ema30[1]) or ta.crossover(ema10[2], ema30[2]) or ta.crossover(ema10[3], ema30[3])) and ema10[1] < ema10 and ema5[1] <ema5 // Calculate the lowest low of the previous two bars lowest_low_prev_two_bars = ta.lowest(low, 3) // Track the entry price and the lowest low of the previous two bars for open_condition3 var float entry_price = na var float low_entry_price = na var float entry_lowest_low1 = na var float entry_lowest_low2 = na var float entry_lowest_low3 = na var float entry_lowest_low4 = na var bool order1 = false var bool order2 = false var bool order3 = false var bool order4 = false // Fibonacci extension levels based on the last significant swing var float fib_extension_level_0_618 = na var float fib_extension_level_0_786 = na var float fib_extension_level_1 = na var float fib_extension_level_1_618 = na // Calculate Fibonacci extension levels var float swing_low = na var float swing_high = na // Here we assume the latest swing low and swing high, adjust based on your logic swing_low := ta.lowest(low, 20) swing_high := ta.highest(high, 20) // Open a long order when any of the conditions are met if open_condition1 and not order2 and not order1 and not order3 and not order4 strategy.entry("Long", strategy.long, comment="<ema30") entry_lowest_low1 := lowest_low_prev_two_bars low_entry_price := low fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618 fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618 entry_price := close order1 := true if open_condition2 and not order2 and not order1 and not order3 and not order4 strategy.entry("Long", strategy.long, comment="ema5xema30") entry_lowest_low2 := lowest_low_prev_two_bars low_entry_price := low fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618 fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618 entry_price := close order2 := true if open_condition3 and not order2 and not order1 and not order3 and not order4 strategy.entry("Long", strategy.long, comment="high<ema5") entry_price := close low_entry_price := low entry_lowest_low3 := lowest_low_prev_two_bars fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618 fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618 order3 := true if open_condition4 and not order2 and not order1 and not order3 and not order4 strategy.entry("Long", strategy.long, comment="high<ema5444") entry_price := close low_entry_price := low entry_lowest_low4 := lowest_low_prev_two_bars fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618 fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618 order4 := true // Set a stop loss only if the order was opened with the specified conditions if (not na(entry_price)) if order1 if ta.crossover(ema30,ema10) strategy.close("Long", comment="stop loss1" ) entry_price := na order1 := false low_entry_price := na if order2 if close < entry_lowest_low2 strategy.close("Long", comment="stop loss2" ) entry_price := na order2 := false low_entry_price := na if order3 if close < entry_lowest_low3 strategy.close("Long", comment="stop loss3" ) entry_price := na order3 := false low_entry_price := na if order4 if close < entry_lowest_low4 strategy.close("Long", comment="stop loss4" ) entry_price := na order4 := false low_entry_price := na if low[1] > ema5[1] and low > ema5 and ema5 > ema10 and ema10 > ema30 strategy.close("Long", comment="profit low > ema5") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na // Take profit at Fibonacci extension levels if high >= fib_extension_level_0_618 and close <= fib_extension_level_0_618 strategy.close("Long", comment="at 0.618 Fib") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na if high >= fib_extension_level_0_786 and close < fib_extension_level_0_786 strategy.close("Long", comment="at 0.786 Fib") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na if high >= fib_extension_level_1 and close < fib_extension_level_1 strategy.close("Long", comment="at 1 Fib") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na if high >= fib_extension_level_1_618 strategy.close("Long", comment="at 1 Fib") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na // Plot the EMAs for visual reference plot(ema30, color=color.blue, title="EMA 30") plot(ema10, color=color.orange, title="EMA 10") plot(ema5, color=color.red, title="EMA 5")