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.
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:
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.
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.
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.
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:
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.
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.
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.
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.
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.
Perlindungan keuntungan: Kondisi penguncian keuntungan membantu melindungi keuntungan yang diperoleh ketika tren mungkin berbalik, aspek penting yang diabaikan oleh banyak strategi pelacakan tren.
Kombinasi Indikator Teknis: Strategi ini menggabungkan EMA dan Fibonacci, memanfaatkan keunggulan dari kedua alat analisis teknis yang sangat populer.
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.
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.
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.
Lagging: EMA pada dasarnya merupakan indikator lagging. Dalam pasar yang berubah dengan cepat, strategi mungkin tidak dapat menangkap titik-titik perubahan tren tepat waktu.
Kompleksitas: Banyaknya kondisi dan aturan dalam sebuah strategi menambah kompleksitasnya, yang dapat membuat strategi sulit dipahami dan dipertahankan, dan juga meningkatkan risiko over-fitting.
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.
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.
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.
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.
Tambahkan filter waktu: membatasi perdagangan pada periode waktu tertentu, menghindari periode yang lebih volatile atau kurang likuid, dapat meningkatkan stabilitas strategi.
Memperkenalkan pembelajaran mesin: Menggunakan algoritma pembelajaran mesin untuk mengoptimalkan pilihan parameter dan keputusan masuk yang dapat meningkatkan kemampuan adaptasi dan kinerja strategi.
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.
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.
/*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")