Sumber daya yang dimuat... Pemuatan...

Multi-EMA Crossover dengan Fibonacci Extension Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-07-29 16:42:56
Tag:EMA

img

Gambaran umum

Strategi ini adalah sistem trend following yang menggabungkan beberapa crossover Exponential Moving Average (EMA) dengan tingkat ekstensi Fibonacci. Strategi ini memanfaatkan interaksi antara EMA dari periode yang berbeda untuk mengidentifikasi awal dan akhir tren potensial, sementara menggunakan tingkat ekstensi Fibonacci untuk menentukan target keuntungan. Strategi ini juga menggabungkan aturan stop-loss khusus untuk mengelola risiko dan melindungi keuntungan.

Prinsip Strategi

Inti dari strategi ini terletak pada penggunaan EMA crossover di beberapa kerangka waktu untuk menangkap awal dan akhir tren. Secara khusus, ia menggunakan EMA 5 periode, 10 periode, dan 30 periode. Strategi ini mencakup empat kondisi masuk yang berbeda, masing-masing dirancang untuk menangkap skenario pasar yang berbeda:

  1. Kondisi masuk pertama dipicu ketika harga menyentuh atau jatuh di bawah EMA 30 periode tetapi kemudian ditutup di atasnya, sementara EMA 10 periode berada di atas EMA 5 periode, dan EMA 30 periode 1% lebih rendah dari EMA 5 periode.

  2. Kondisi masuk kedua diaktifkan ketika EMA 5 periode melintasi EMA 30 periode, dan EMA 30 periode telah melintasi di bawah EMA 5 periode dalam 6 bar terakhir.

  3. Kondisi masuk ketiga diaktifkan ketika puncak dua bar sebelumnya berada di bawah EMA 5 periode masing-masing, EMA 5 periode berada di bawah EMA 10 periode, yang berada di bawah EMA 30 periode, dan puncak bar sebelumnya berada di bawah penutupan saat ini.

  4. Kondisi masuk keempat dipicu ketika EMA 10 periode melintasi di atas EMA 30 periode, EMA 5 periode telah melintasi di atas EMA 30 periode dalam 4 bar terakhir, dan kedua nilai EMA 10 periode dan 5 periode saat ini lebih tinggi dari nilai sebelumnya.

Untuk stop loss, strategi menetapkan aturan khusus untuk kondisi masuk yang berbeda:

  • Untuk kondisi pertama, posisi ditutup jika EMA 30 periode melintasi EMA 10 periode.
  • Untuk kondisi lain, posisi ditutup jika harga penutupan jatuh di bawah level terendah dari tiga bar sebelumnya.

Target keuntungan ditetapkan berdasarkan tingkat ekstensi Fibonacci, termasuk tingkat 0,618, 0,786, 1,0, dan 1,618.

Selain itu, strategi ini mencakup kondisi profit lock: jika titik terendah dari dua bar terakhir berada di atas EMA 5 periode dan EMA diselaraskan dalam urutan naik (5 > 10 > 30), posisi ditutup untuk mengunci keuntungan.

Keuntungan Strategi

  1. Multiple Confirmation: Dengan menggunakan beberapa EMA dan kondisi masuk, strategi dapat lebih akurat mengidentifikasi awal dan kelanjutan tren.

  2. Kemampuan beradaptasi yang tinggi: Empat kondisi masuk yang berbeda memungkinkan strategi untuk beradaptasi dengan berbagai lingkungan pasar, menangkap peluang perdagangan baik dalam terobosan cepat atau pembentukan tren yang lambat.

  3. Manajemen Risiko: Strategi ini mencakup aturan stop-loss khusus, yang membantu mengendalikan risiko untuk setiap perdagangan.

  4. Target Keuntungan yang Jelas: Menggunakan tingkat ekstensi Fibonacci sebagai target keuntungan memberikan pedagang titik keluar yang jelas. Ini membantu menghindari mengambil keuntungan prematur atau memegang posisi terlalu lama.

  5. Perlindungan Keuntungan: Kondisi kunci keuntungan membantu melindungi keuntungan yang diperoleh ketika tren mungkin berbalik, aspek penting yang sering diabaikan oleh banyak strategi mengikuti tren.

  6. Kombinasi Indikator Teknis: Strategi ini menggabungkan EMA dan alat Fibonacci, memanfaatkan kekuatan dari dua alat analisis teknis yang populer ini.

Risiko Strategi

  1. Overtrading: Berbagai kondisi masuk dapat menyebabkan overtrading, terutama di pasar yang sangat volatile. Hal ini dapat meningkatkan biaya transaksi dan berpotensi menyebabkan lebih banyak sinyal palsu.

  2. Sensitivitas Parameter: Strategi menggunakan beberapa periode EMA tetap dan ambang persentase. Parameter ini mungkin perlu disesuaikan untuk pasar dan kerangka waktu yang berbeda, jika tidak, mereka mungkin menyebabkan kinerja strategi yang buruk.

  3. Trend Dependency: Sebagai strategi yang mengikuti tren, strategi ini dapat berkinerja buruk di pasar yang berkisar atau berosilasi. Dalam lingkungan pasar ini, strategi ini dapat menghasilkan beberapa sinyal palsu dan kerugian kecil.

  4. Lag: EMA secara inheren merupakan indikator yang tertinggal. Dalam pasar yang berubah dengan cepat, strategi mungkin tidak dapat menangkap titik balik tren secara tepat waktu.

  5. Kompleksitas: Keanekaragaman kondisi dan aturan strategi meningkatkan kompleksitasnya, yang dapat mempersulit pengertian dan pemeliharaan, dan juga meningkatkan risiko overfit.

Arah Optimasi Strategi

  1. Penyesuaian Parameter Dinamis: Pertimbangkan untuk memperkenalkan mekanisme adaptif untuk menyesuaikan periode EMA dan parameter lainnya secara dinamis berdasarkan volatilitas pasar.

  2. Menggabungkan Indikator Volume: Menggabungkan analisis volume dapat meningkatkan keakuratan keputusan masuk dan keluar.

  3. Penyaringan Lingkungan Pasar: Memperkenalkan mekanisme identifikasi lingkungan pasar, seperti menggunakan ATR (Average True Range) atau indikator volatilitas, untuk menghentikan perdagangan di lingkungan yang tidak cocok untuk mengikuti tren.

  4. Memoptimalkan mekanisme Stop-Loss: Pertimbangkan untuk menggunakan trailing stop alih-alih stop tetap. Ini dapat melindungi keuntungan sambil memungkinkan mereka untuk terus tumbuh.

  5. Tambahkan Penyaringan Waktu: Batasi perdagangan ke periode waktu tertentu, menghindari periode volatilitas tinggi atau likuiditas rendah, yang dapat meningkatkan stabilitas strategi.

  6. Memperkenalkan Machine Learning: Gunakan algoritma pembelajaran mesin untuk mengoptimalkan pemilihan parameter dan keputusan entri, yang dapat meningkatkan kemampuan dan kinerja strategi.

  7. Analisis Multi-Timeframe: Menggabungkan analisis tren dari jangka waktu yang lebih lama untuk meningkatkan akurasi keputusan masuk dan menghindari masuk melawan tren utama.

Kesimpulan

Multi-EMA Crossover dengan Fibonacci Extension Trend Following Strategy menunjukkan sistem perdagangan yang komprehensif yang menggabungkan beberapa indikator teknis dan konsep perdagangan. Dengan menggunakan beberapa EMA dan kondisi masuk, strategi ini mencoba untuk mencapai keseimbangan antara menangkap tren dan mengurangi sinyal palsu. Penggunaan tingkat ekstensi Fibonacci memberikan dasar obyektif untuk menetapkan target keuntungan, sementara aturan stop-loss dan kunci keuntungan khusus mencerminkan penekanan pada manajemen risiko.

Meskipun strategi ini memiliki keunggulan dalam beberapa konfirmasi dan kemampuan beradaptasi yang tinggi, kompleksitas dan sensitivitasnya terhadap pemilihan parameter juga menimbulkan tantangan tertentu. Untuk meningkatkan ketahanan dan kinerja strategi, pertimbangan dapat diberikan untuk memperkenalkan penyesuaian parameter dinamis, penyaringan lingkungan pasar, dan analisis multi-frame waktu sebagai arah optimasi.

Secara keseluruhan, strategi ini memberikan kerangka kerja yang menarik untuk mengikuti tren, tetapi pedagang perlu melakukan backtesting menyeluruh dan optimasi parameter saat menerapkannya dalam praktek, dan membuat penyesuaian yang sesuai berdasarkan pasar 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")

Berkaitan

Lebih banyak