Strategi mengikuti tren dengan beberapa persilangan EMA yang dikombinasikan dengan ekstensi Fibonacci

EMA
Tanggal Pembuatan: 2024-07-29 16:42:56 Akhirnya memodifikasi: 2024-07-29 16:42:56
menyalin: 0 Jumlah klik: 194
1
fokus pada
1166
Pengikut

Strategi mengikuti tren dengan beberapa persilangan EMA yang dikombinasikan dengan ekstensi Fibonacci

Ringkasan

Strategi ini adalah sistem pelacakan tren yang menggabungkan crossing multiple index moving averages (EMA) dan level Fibonacci expansion. Strategi ini menggunakan interaksi antara EMA dari periode yang berbeda untuk mengidentifikasi awal dan akhir tren potensial, sekaligus menggunakan level Fibonacci expansion untuk menentukan target keuntungan. Strategi ini juga mencakup aturan stop loss yang spesifik untuk mengelola risiko dan melindungi keuntungan.

Prinsip Strategi

Inti dari strategi ini adalah menggunakan EMA yang bersilang dari beberapa kerangka waktu untuk menangkap awal dan akhir tren. Secara khusus, ia menggunakan EMA 5 siklus, 10 siklus, dan 30 siklus. Strategi ini berisi empat kondisi masuk yang berbeda, masing-masing bertujuan untuk menangkap skenario pasar yang berbeda:

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

  2. Kondisi masuk kedua terjadi ketika EMA 30 siklus di atas EMA 5 siklus, dan EMA 30 siklus di bawah EMA 5 siklus dalam 6 baris terakhir K.

  3. Kondisi masuk ketiga terjadi ketika dua garis K saat ini memiliki harga tertinggi yang lebih rendah dari EMA 5 siklus masing-masing, dan EMA 5 siklus lebih rendah dari EMA 10 siklus, dan EMA 10 siklus lebih rendah dari EMA 30 siklus, sementara harga tertinggi dari garis K sebelumnya lebih rendah dari harga penutupan saat ini.

  4. Kondisi masuk keempat terjadi ketika 10 siklus EMA melewati 30 siklus EMA, dan 5 siklus EMA melewati 30 siklus EMA dalam 4 baris terakhir K, dan nilai saat ini dari 10 siklus EMA dan 5 siklus EMA lebih tinggi dari nilai sebelumnya.

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

  • Untuk kondisi pertama, jika 30 siklus EMA di atas 10 siklus EMA, maka posisi kosong.
  • Untuk kondisi lainnya, jika harga penutupan jatuh ke titik terendah dari tiga garis K teratas, maka posisi kosong.

Target profit ditetapkan berdasarkan tingkat Fibonacci Expansion, termasuk level 0.618, 0.786, 1.0 dan 1.618 . Ketika harga mencapai level ini, strategi akan melakukan posisi terbuka sesuai dengan aturan tertentu .

Selain itu, strategi ini juga mencakup kondisi penguncian keuntungan: jika dua garis K terbaru memiliki harga terendah di atas 5 siklus EMA, dan EMA menunjukkan urutan naik ((5 > 10 > 30), maka posisi terbuka untuk mengunci keuntungan.

Keunggulan Strategis

  1. Multiple confirmation: Dengan menggunakan beberapa EMA dan beberapa kondisi masuk, strategi dapat lebih akurat mengidentifikasi awal dan kelanjutan tren. Mekanisme konfirmasi ganda ini dapat mengurangi sinyal palsu dan meningkatkan akurasi perdagangan.

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

  3. Manajemen risiko: Strategi ini berisi aturan stop-loss yang spesifik, yang membantu mengendalikan risiko setiap perdagangan. Syarat masuk yang berbeda sesuai dengan strategi stop-loss yang berbeda, yang menunjukkan bahwa strategi ini mementingkan manajemen risiko.

  4. Tujuan keuntungan yang jelas: Menggunakan Fibonacci Expansion Level sebagai tujuan keuntungan, memberikan titik keluar yang jelas bagi pedagang. Hal ini membantu untuk menghindari keuntungan prematur yang berakhir atau terlalu lama.

  5. Perlindungan keuntungan: Kondisi penguncian keuntungan membantu melindungi keuntungan yang diperoleh ketika tren mungkin berbalik, aspek penting yang diabaikan oleh banyak strategi pelacakan tren.

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

Risiko Strategis

  1. Overtrading: Berbagai kondisi masuk dapat menyebabkan overtrading, terutama di pasar yang lebih berfluktuasi. Ini dapat meningkatkan biaya transaksi dan dapat menyebabkan lebih banyak sinyal palsu.

  2. Sensitivitas parameter: Strategi menggunakan beberapa periode EMA dan persentase penurunan yang tetap. Parameter ini mungkin perlu disesuaikan dengan pasar dan kerangka waktu yang berbeda, atau mungkin menyebabkan kinerja strategi yang buruk.

  3. Tergantung pada tren: Sebagai strategi pelacakan tren, mungkin tidak bekerja dengan baik di pasar yang bergeser atau bergolak. Dalam lingkungan pasar ini, mungkin terjadi beberapa sinyal palsu dan kerugian kecil.

  4. Lagging: EMA pada dasarnya merupakan indikator lagging. Dalam pasar yang berubah dengan cepat, strategi mungkin tidak dapat menangkap titik-titik perubahan tren tepat waktu.

  5. Kompleksitas: Banyaknya kondisi dan aturan dalam sebuah strategi menambah kompleksitasnya, yang dapat membuat strategi sulit dipahami dan dipertahankan, dan juga meningkatkan risiko over-fitting.

Arah optimasi strategi

  1. Penyesuaian parameter dinamis: Memperhatikan mekanisme adaptasi yang dapat menyesuaikan siklus EMA dan parameter lainnya sesuai dengan dinamika pasar yang berfluktuasi. Ini dapat meningkatkan kemampuan strategi untuk beradaptasi dalam berbagai kondisi pasar.

  2. Menambahkan indikator volume transaksi: Menggabungkan analisis volume transaksi dapat meningkatkan keakuratan keputusan masuk dan keluar. Misalnya, volume transaksi dapat ditingkatkan pada saat masuk untuk mengkonfirmasi kekuatan tren.

  3. Filter lingkungan pasar: memperkenalkan mekanisme identifikasi lingkungan pasar, seperti menggunakan ATR (Average True Range) atau indikator volatilitas, untuk menghentikan perdagangan di lingkungan pasar yang tidak sesuai untuk mengikuti tren.

  4. Optimalkan mekanisme Stop Loss: Anda dapat mempertimbangkan untuk menggunakan Tracking Stop Loss, bukan Stop Loss Fixed. Hal ini dapat melindungi keuntungan Anda dan memungkinkan keuntungan Anda untuk terus tumbuh.

  5. Tambahkan filter waktu: membatasi perdagangan pada periode waktu tertentu, menghindari periode yang lebih volatile atau kurang likuid, dapat meningkatkan stabilitas strategi.

  6. Memperkenalkan pembelajaran mesin: Menggunakan algoritma pembelajaran mesin untuk mengoptimalkan pilihan parameter dan keputusan masuk yang dapat meningkatkan kemampuan adaptasi dan kinerja strategi.

  7. Analisis multi-frame waktu: Analisis tren yang dikombinasikan dengan kerangka waktu yang lebih panjang dapat meningkatkan akurasi keputusan masuk dan menghindari masuk dalam situasi terbalik tren utama.

Meringkaskan

Strategi pelacakan tren yang menggabungkan EMA-cross-multiple dengan Fibonacci Scalping ini menampilkan sistem perdagangan yang komprehensif yang menggabungkan beberapa indikator teknis dan ide perdagangan. Dengan menggunakan beberapa EMA dan kondisi masuk, strategi ini mencoba menyeimbangkan antara menangkap tren dan mengurangi sinyal palsu. Penggunaan tingkat Fibonacci Scalping memberikan dasar yang objektif untuk menetapkan target keuntungan, sementara aturan stop loss dan profit lock yang spesifik mencerminkan perhatian yang diberikan pada manajemen risiko.

Meskipun strategi memiliki keunggulan multiple confirmation dan adaptivity, kompleksitas dan sensitivitas terhadap pilihan parameter juga menimbulkan beberapa tantangan. Untuk meningkatkan stabilitas dan kinerja strategi lebih lanjut, pengoptimalan seperti penyesuaian parameter dinamis, penyaringan lingkungan pasar, dan analisis frame waktu ganda dapat dipertimbangkan.

Secara keseluruhan, strategi ini memberikan kerangka yang menarik untuk pelacakan tren, tetapi trader perlu melakukan pengembalian dan pengoptimalan parameter yang cukup saat diterapkan secara praktis, dan melakukan penyesuaian yang tepat sesuai dengan pasar dan gaya perdagangan tertentu. Dengan pemantauan dan pengoptimalan terus-menerus, strategi ini berpotensi menjadi alat pelacakan tren yang efektif.

Kode Sumber Strategi
/*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")