
Gagasan utama dari strategi ini adalah menggabungkan indikator momentum Lazy Bear dan indikator MFI Crypto Face untuk membeli saat tren naik, dan menjual saat tren turun, untuk mencapai strategi perdagangan kuantitatif yang melacak tren pasar.
Menggunakan indikator dinamika Lazy Bear, BlueWave, untuk menentukan arah tren dengan menghitung regresi linier harga dekat dengan harga 20 hari tinggi, rendah dan dekat. Ketika BlueWave melewati 0, berarti tren naik; Ketika BlueWave melewati 0, berarti tren turun.
Menggunakan indikator MFI yang disempurnakan oleh Crypto Face, yang menilai aliran dana dengan menghitung kenaikan dan penurunan dalam 58 hari terakhir dan volume transaksi. MFI lebih besar dari 0 menunjukkan aliran dana masuk, MFI lebih kecil dari 0 menunjukkan aliran dana keluar.
Ketika BlueWave di atas mencapai 0 dan MFI lebih besar dari 0, sinyal beli dikeluarkan, posisi terbuka lebih banyak; ketika BlueWave di bawah mencapai 0 dan MFI kurang dari 0, sinyal jual dikeluarkan, posisi terbuka kosong.
Mengatur kondisi stop loss, melacak tren pasar untuk mendapatkan keuntungan, dan mengontrol risiko.
Kombinasi dua indikator ini dapat memberikan penilaian yang lebih akurat tentang arah tren pasar.
Indikator BlueWave meluruskan kurva, menghindari bias data yang tidak biasa, dan menilai tren pasar dengan lebih andal.
Indikator MFI dapat menilai aliran dana dan menghindari kerugian akibat terobosan palsu.
Lebih sedikit parameter kebijakan, lebih mudah untuk diterapkan dan dioperasikan.
Fleksibilitas pengaturan kondisi Stop Loss Stop and Control Trading Risk.
Anda dapat mengatur periode pembelian dan penjualan untuk menghindari fluktuasi pasar yang tidak biasa pada waktu tertentu.
Strategi ini dapat terus mengejar shorting dan mengalami kerugian jika harga saham terus turun.
Jika indikator menghasilkan sinyal palsu, mungkin ditutup setelah masuk.
Stop loss set terlalu besar, risiko kerugian meningkat.
Jika pasar terlalu bergejolak, kemungkinan besar titik-titik stop loss akan ditembus.
Parameter yang tidak dioptimalkan dengan benar dapat menyebabkan strategi yang tidak efektif.
Strategi ini menghasilkan sinyal perdagangan yang terlalu sering, meningkatkan biaya transaksi dan biaya slippage.
Optimalkan parameter BlueWave dan MFI untuk membuat indikator lebih stabil dan dapat diandalkan.
Menggabungkan indikator tren untuk menghindari kerugian terus-menerus dari shorting.
Dinamika penyesuaian stop loss stop loss rasio, mengurangi probabilitas terkuak.
Optimalkan kondisi untuk membuka posisi dan mengurangi sinyal palsu.
Pertimbangkan untuk menambahkan kontrol posisi untuk menghindari kebocoran.
Dengan menggunakan algoritma pembelajaran mesin, ini akan membuat titik jual beli lebih akurat.
Strategi ini menggunakan kombinasi menggunakan BlueWave dan MFI dua indikator untuk menentukan arah tren, melakukan lebih banyak ketika tren naik, melakukan lebih banyak ketika tren turun, dapat secara efektif melacak tren pasar untuk mendapatkan keuntungan. Namun, ada juga beberapa risiko pengaturan parameter, stop loss, dan terus turun, perlu lebih mengoptimalkan pengaturan parameter, mekanisme stop loss, dan kondisi penyaringan, untuk meningkatkan efektivitas dan stabilitas strategi.
/*backtest
start: 2022-11-07 00:00:00
end: 2023-11-13 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// @version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Bunghole 2021
strategy(title="Crypto Squeeze Strategy", initial_capital = 100000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, currency = 'USD', overlay=true)
//// Stoploss and Take Profit Parameters
// Enable Long Strategy
enable_long_strategy = input(true, title="Enable Long Strategy", group="SL/TP For Long Strategy",inline="1")
long_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_stoploss_percentage = (close * (long_stoploss_value / 100)) / syminfo.mintick
long_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Long Strategy",inline="2")
long_takeprofit_percentage = (close * (long_takeprofit_value / 100)) / syminfo.mintick
// Enable Short Strategy
enable_short_strategy = input(true, title="Enable Short Strategy", group="SL/TP For Short Strategy",inline="3")
short_stoploss_value = input(defval=50, title='Stoploss %', type=input.float, minval=0.1, group= "SL/TP For Short Strategy",inline="4")
short_stoploss_percentage = (close * (short_stoploss_value / 100)) / syminfo.mintick
short_takeprofit_value = input(defval=50, title='Take Profit %', type=input.float, minval=0.1, group="SL/TP For Short Strategy",inline="4")
short_takeprofit_percentage = (close * (short_takeprofit_value / 100)) / syminfo.mintick
// Plot Stoploss & Take Profit Levels
long_stoploss_price = strategy.position_avg_price * (1 - long_stoploss_value/100)
long_takeprofit_price = strategy.position_avg_price * (1 + long_takeprofit_value/100)
short_stoploss_price = strategy.position_avg_price * (1 + short_stoploss_value/100)
short_takeprofit_price = strategy.position_avg_price * (1 - short_takeprofit_value/100)
plot(enable_long_strategy and not enable_short_strategy ? long_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Long SL Level")
plot(enable_long_strategy and not enable_short_strategy ? long_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Long TP Level")
plot(enable_short_strategy and not enable_long_strategy ? short_stoploss_price: na, color=#ff0000, style=plot.style_linebr, linewidth=2, title="Short SL Level")
plot(enable_short_strategy and not enable_long_strategy ? short_takeprofit_price: na, color=#008000, style=plot.style_linebr, linewidth=2, title="Short TP Level")
// Date Range
start_date = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31, group="Date Range")
start_month = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
start_year = input(title="Start Year", type=input.integer, defval=1804, minval=1800, maxval=3000, group="Date Range")
end_date = input(title="End Date", type=input.integer, defval=1, minval=1, maxval=3, group="Date Range")
end_month = input(title="End Month", type=input.integer, defval=1, minval=1, maxval=12, group="Date Range")
end_year = input(title="End Year", type=input.integer, defval=2077, minval=1800, maxval=3000, group="Date Range")
in_date_range = (time >= timestamp(syminfo.timezone, start_year, start_month, start_date, 0, 0)) and (time < timestamp(syminfo.timezone, end_year, end_month, end_date, 0, 0))
//// Indicator Inputs
// Lazy Bear's Momentum Indicator
BlueWave = linreg(close - avg(avg(highest(high, 20), lowest(low, 20)), sma(close, 20)), 20, 0)
// Replicated version of Crypto Face's MFI Indicator
mfiUpper = sum(volume * (change(hlc3) <= 0 ? 0 : hlc3), 58)
mfiLower = sum(volume * (change(hlc3) >= 0 ? 0 : hlc3), 58)
_mfiRsi(mfiUpper, mfiLower) =>
if mfiLower == 0
100
if mfiUpper == 0
0
100.0 - (100.0 / (1.0 + mfiUpper / mfiLower))
mf = _mfiRsi(mfiUpper, mfiLower)
mfi = (mf - 50) * 3
//// Strategy
// Creating Long and Short Strategy
buy_signal = crossover(BlueWave, 0) and mfi > 0
sell_signal = crossunder(BlueWave, 0) and mfi < 0
// Long Strategy
if buy_signal and in_date_range and enable_long_strategy == true
strategy.entry("Long", true, when=buy_signal, alert_message="Open Long Position")
strategy.exit("Long SL/TP", from_entry="Long", loss=long_stoploss_percentage, profit=long_takeprofit_percentage, alert_message="Your Long SL/TP Limit As Been Triggered.")
strategy.close("Long", when=sell_signal, alert_message="Close Long Position")
// Short Strategy
if sell_signal and in_date_range and enable_short_strategy == true
strategy.entry("Short", false, when = sell_signal, alert_message="Open Short Position")
strategy.exit("Short SL/TP", from_entry="Short", loss=short_stoploss_percentage, profit=short_takeprofit_percentage, alert_message="Your Short SL/TP Limit As Been Triggered.")
strategy.close("Short", when=buy_signal, alert_message="Close Short Position")