Strategi Mengikuti Tren Multi-Kerangka Waktu


Tanggal Pembuatan: 2024-01-26 15:54:45 Akhirnya memodifikasi: 2024-01-26 15:54:45
menyalin: 0 Jumlah klik: 614
1
fokus pada
1617
Pengikut

Strategi Mengikuti Tren Multi-Kerangka Waktu

Ringkasan

Strategi ini membentuk saluran harga utama, yang mewakili arah tren jangka panjang dengan menghitung harga tertinggi dan terendah dalam periode waktu yang berbeda ((50 bar dan 200 bar)). Ini juga menggabungkan garis sinyal cepat dan garis sinyal lambat untuk menentukan arah tren jangka pendek.

Prinsip Strategi

Pertama, dengan menghitung harga tertinggi dan terendah dalam 50 bar terakhir, dan harga tertinggi dan terendah dalam 200 bar terakhir, dua saluran harga dibentuk untuk mewakili arah tren jangka panjang.

Kedua, menghitung harga tertinggi dan terendah dari 7 bar terakhir untuk menentukan tren jangka pendek; menghitung harga tertinggi dan terendah dari 20 bar terakhir untuk menentukan tren jangka pendek.

Akhirnya, sinyal masuk disarankan ketika saluran sinyal cepat, saluran sinyal lambat, dan saluran harga jangka panjang berarah sama. Misalnya, semua saluran berada dalam tren naik, untuk membeli; semua saluran berada dalam tren turun, untuk menjual.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah kemampuan untuk mengidentifikasi arah tren yang bersatu dalam jangka panjang. Dengan mengkonfirmasi saluran harga dalam periode waktu yang berbeda, Anda dapat secara efektif menghindari gangguan oleh kebisingan pasar jangka pendek.

Selain itu, strategi ini menggunakan penilaian multi-frame waktu, bahkan jika terjadi pembalikan harga jangka pendek, sinyal tidak akan berubah dengan mudah, memastikan stabilitas sinyal.

Analisis risiko

Risiko utama dari strategi ini adalah bahwa ketika tren jangka pendek dan panjang berbalik, sinyal yang dihasilkan akan mengalami keterlambatan karena perlu beberapa konfirmasi saluran siklus waktu. Jika diikuti secara membabi buta, kemungkinan besar kerugian akan meningkat.

Selain itu, tidak ramah terhadap perdagangan frekuensi tinggi, tidak dapat bereaksi cepat terhadap fluktuasi harga jangka pendek. Jika terjadi situasi yang ekstrem, pengaturan kondisi stop loss yang tidak tepat juga dapat menyebabkan kerugian yang lebih besar.

Arah optimasi

Anda dapat mempertimbangkan untuk memasukkan strategi stop loss dinamis yang dapat beradaptasi, yang dapat secara efektif mengontrol risiko ketika harga menembus proporsi tertentu ke arah yang tidak menguntungkan.

Selain itu, dengan menambahkan lebih banyak saluran harga dengan panjang yang berbeda, sinyal akhir dapat ditentukan melalui voting, yang dapat meningkatkan akurasi penilaian.

Atau menggunakan algoritma pembelajaran mesin untuk mengoptimalkan parameter saluran secara otomatis agar lebih sesuai dengan lingkungan pasar saat ini.

Meringkaskan

Strategi ini memiliki konsep yang jelas dan mudah dimengerti, dan dapat mengevaluasi tren pasar melalui saluran harga multi-frame time frame, sehingga dapat menghilangkan kebisingan pasar jangka pendek secara efektif. Namun, pengendalian dan pengendalian risiko untuk berbalik arah harus diperkuat. Jika dikombinasikan dengan strategi stop loss dan pengoptimalan parameter, stabilitas strategi dan efektivitas pertempuran nyata dapat ditingkatkan lebih lanjut.

Kode Sumber Strategi
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ZoomerXeus

//@version=4
strategy("Swing High Low Price Channel V.1", overlay=true)

//========================= variable =================================//
dead_channel_source = input(title="Main swing channel source", defval="H/L", options=["H/L"])
fast_signal_length = input(title="Fast Slow Length", type=input.integer, defval=7, maxval=49, minval=1)
slow_signal_length = input(title="Slow Slow Length", type=input.integer, defval=20, maxval=49, minval=1)
is_show_only_dead_channel = input(title="Show main channel only", defval=true)
main_channel_width = input(title="Main line width", defval=2, minval=1)
signal_channel_width = input(title="Signal line width", defval=1, minval=1)

//========================= indicator function =================================//
dead_cross_high_50 = highest(high, 50) 
dead_cross_high_200 = highest(high, 200) 
//========================================
dead_cross_low_50 = lowest(low, 50) 
dead_cross_low_200 = lowest(low, 200) 
//========================================
medain_dead_cross_50 = ((dead_cross_high_50-dead_cross_low_50)*0.5)+dead_cross_low_50
medain_dead_cross_200 = ((dead_cross_high_200-dead_cross_low_200)*0.5)+dead_cross_low_200


//========================================
fasthighest = highest(high, fast_signal_length)
fastlowest = lowest(low, fast_signal_length)
//========================================
slowhighest = highest(high, slow_signal_length)
slowlowest = lowest(low, slow_signal_length)
//========================================

    
//========================= plot =================================//
plot(dead_channel_source == "H/L" ? dead_cross_high_50 : na,title="50 bar highest", color=color.red, linewidth=main_channel_width)
plot(dead_channel_source == "H/L" ? dead_cross_high_200 : na,title="200 bar highest", color=color.aqua, linewidth=main_channel_width)
plot(dead_channel_source == "H/L" ? dead_cross_low_50 : na,title="50 bar lowest", color=color.red, linewidth=main_channel_width)
plot(dead_channel_source == "H/L" ? dead_cross_low_200 : na,title="200 bar lowest", color=color.aqua, linewidth=main_channel_width)
plot(dead_channel_source == "H/L" ? medain_dead_cross_200 : na,title="200 bar middle lowest", color=color.orange, linewidth=main_channel_width)
plot(dead_channel_source == "H/L" ? medain_dead_cross_50 : na,title="50 bar middle lowest", color=color.lime, linewidth=main_channel_width)
//===========================================
plot(is_show_only_dead_channel == false ? fasthighest : na,title="fast signal highest", color=#ff00f9, linewidth=signal_channel_width)
plot(is_show_only_dead_channel == false ? fastlowest : na,title="fast signal lowest", color=#ff00f9, linewidth=signal_channel_width)
plot(is_show_only_dead_channel == false ? slowhighest : na,title="slow signal highest", color=color.white, linewidth=signal_channel_width)
plot(is_show_only_dead_channel == false ? slowlowest : na,title="slow signal lowest", color=color.white, linewidth=signal_channel_width)
//===========================================
plot(crossover(medain_dead_cross_50, medain_dead_cross_200) ? medain_dead_cross_200 : na, title="Dead cross buy plot", style=plot.style_circles, linewidth=6, color=color.lime)
plot(crossunder(medain_dead_cross_50, medain_dead_cross_200) ? medain_dead_cross_200 : na, title="Dead cross sell plot", style=plot.style_circles, linewidth=6, color=color.red)
plot(is_show_only_dead_channel and (medain_dead_cross_50 < medain_dead_cross_200) and high == slowhighest ? high : na, title="Follow trend short term  sell plot zone", style=plot.style_circles, linewidth=3, color=color.orange)
plot(is_show_only_dead_channel and (medain_dead_cross_50 > medain_dead_cross_200) and low == slowlowest ? low : na, title="Follow trend short term buy plot zone", style=plot.style_circles, linewidth=3, color=color.green)
plot(is_show_only_dead_channel and high == slowhighest and (high == dead_cross_high_200) ? high : na, title="Not follow trend short term  sell plot zone", style=plot.style_circles, linewidth=3, color=color.orange)
plot(is_show_only_dead_channel and low == slowlowest and (low == dead_cross_low_200) ? low : na, title="Not follow trend short term buy plot zone", style=plot.style_circles, linewidth=3, color=color.green)

//===================== open close order condition =========================================================//
strategy.entry("strong buy", true, 1, when=low == dead_cross_low_200)
strategy.exit("close strong buy 50%", "strong buy", qty_percent=50, when=high==slowhighest)
strategy.entry("strong sell", false, 1, when=high == dead_cross_high_200)
strategy.exit("close strong sell 50%", "strong sell", qty_percent=50, when=low==slowlowest)