
Idea utama strategi ini adalah untuk menggabungkan indikator dinamik Lazy Bear dan indikator MFI Crypto Face untuk membeli semasa trend naik, dan menjual semasa trend turun, untuk mewujudkan strategi perdagangan kuantitatif yang menjejaki trend pasaran.
Menggunakan indikator dinamik Lazy Bear, BlueWave, untuk menentukan arah trend dengan mengira pengembalian linear harga tutup dengan harga tinggi, rendah dan dekat pada hari ke-20. Apabila BlueWave melewati 0, menunjukkan trend ke atas; Apabila BlueWave melewati 0, menunjukkan trend ke bawah.
Menggunakan penunjuk MFI yang diperbaiki oleh Crypto Face, yang menilai aliran dana dengan mengira kenaikan dan penurunan dalam 58 hari terakhir dan jumlah transaksi. MFI lebih besar daripada 0 menunjukkan aliran dana masuk, MFI kurang daripada 0 menunjukkan aliran dana keluar.
Apabila BlueWave melebihi 0 dan MFI lebih besar daripada 0, isyarat beli dikeluarkan, kedudukan terbuka lebih banyak; apabila BlueWave melebihi 0 dan MFI kurang daripada 0, isyarat jual dikeluarkan, kedudukan terbuka kosong.
Menetapkan syarat-syarat stop loss, mengesan trend pasaran untuk menjana keuntungan, dan mengawal risiko.
Dengan menggunakan kedua-dua penunjuk ini, anda boleh lebih tepat menilai arah trend pasaran.
BlueWave menghaluskan kurva indikator, mengelakkan data yang tidak normal, dan menilai trend pasaran dengan lebih dipercayai.
Indeks MFI dapat menilai aliran dana dan mengelakkan kerugian akibat penembusan palsu.
Lebih sedikit parameter strategi, mudah dilaksanakan dan dikendalikan.
Anda boleh menyesuaikan keadaan stop loss dan kawalan risiko perdagangan.
Anda boleh menetapkan tempoh masa untuk membeli dan menjual untuk mengelakkan turun naik pasaran yang tidak normal pada waktu tertentu.
Strategi ini mungkin akan terus berlarutan dan menyebabkan kerugian jika pasaran besar terus menurun.
Jika penunjuk menghasilkan isyarat palsu, ia mungkin ditutup selepas masuk.
Stop loss set terlalu besar, risiko kerugian meningkat.
Dalam pasaran yang terlalu bergolak, kemungkinan besar titik hentian akan ditembusi.
Parameter yang tidak dioptimumkan dengan betul boleh menyebabkan strategi tidak berkesan.
Strategi menghasilkan isyarat dagangan yang terlalu kerap, meningkatkan kos dagangan dan kos slippage.
Mengoptimumkan parameter BlueWave dan MFI, menjadikan penunjuk lebih stabil dan boleh dipercayai.
Kaedah ini juga boleh digunakan untuk menjimatkan wang dalam jangka masa yang panjang.
Secara dinamik menyesuaikan nisbah stop loss dan stop loss untuk mengurangkan kebarangkalian penutupan.
Untuk mengoptimumkan keadaan pembukaan dan mengurangkan isyarat palsu.
Pertimbangkan untuk menggunakan kawalan kedudukan untuk mengelakkan kejatuhan.
Di samping itu, ia juga menggunakan algoritma pembelajaran mesin untuk membuat titik jual beli lebih tepat.
Strategi ini menggunakan kombinasi menggunakan BlueWave dan MFI dua petunjuk untuk menentukan arah trend, melakukan lebih banyak ketika trend naik, melakukan kosong ketika turun, dapat mengikuti trend pasaran dengan berkesan. Tetapi ada juga beberapa risiko dalam pengaturan parameter, menghentikan hentian kerugian, dan terus turun, perlu mengoptimumkan lagi pengaturan parameter, mekanisme hentian kerugian, dan syarat penapisan, untuk meningkatkan keberkesanan dan kestabilan 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")