Idea utama strategi ini adalah menggabungkan penunjuk momentum Lazy Bear
Gunakan penunjuk momentum Lazy Bear
Gunakan penunjuk MFI yang dipertingkatkan oleh Crypto Face, yang mengira jumlah perubahan harga dan jumlah selama 58 hari yang lalu untuk menentukan aliran wang.
Apabila BlueWave melintasi di atas 0 dan MFI lebih besar daripada 0, isyarat beli dihasilkan untuk membuka kedudukan panjang; apabila BlueWave melintasi di bawah 0 dan MFI kurang daripada 0, isyarat jual dihasilkan untuk membuka kedudukan pendek.
Tetapkan syarat stop loss dan mengambil keuntungan untuk mengikuti trend pasaran untuk keuntungan, sambil mengawal risiko.
Menggabungkan dua penunjuk dapat menentukan arah trend pasaran dengan lebih tepat.
Kurva halus BlueWave
MFI boleh menentukan aliran wang, mengelakkan kerugian daripada pelarian palsu.
Strategi ini mempunyai beberapa parameter dan mudah dilaksanakan dan beroperasi.
Tetapan stop loss dan mengambil keuntungan yang fleksibel membantu mengawal risiko perdagangan.
Sesi dagangan boleh ditetapkan untuk mengelakkan turun naik yang tidak normal semasa waktu pasaran tertentu.
Trend penurunan yang berterusan boleh membawa kepada kedudukan pendek dan kerugian berturut-turut.
Isyarat palsu boleh membawa kepada terperangkap selepas memasuki kedudukan.
Stop loss yang terlalu besar boleh meningkatkan kerugian.
Volatiliti yang tinggi boleh sering mencapai titik stop loss.
Pengoptimuman parameter yang tidak betul boleh membawa kepada prestasi strategi yang buruk.
Isyarat dagangan yang terlalu kerap boleh meningkatkan kos transaksi dan slippage.
Mengoptimumkan parameter BlueWave dan MFI untuk isyarat yang lebih stabil dan boleh dipercayai.
Menggabungkan penunjuk trend untuk mengelakkan kerugian pendek yang berterusan.
Sesuaikan secara dinamik nisbah stop loss/take profit untuk mengurangkan kemungkinan terperangkap.
Memperbaiki keadaan masuk untuk mengurangkan isyarat palsu.
Pertimbangkan saiz kedudukan untuk mengelakkan mengejar perhimpunan dan membuang penurunan.
Gabungkan dengan model pembelajaran mesin untuk titik masuk dan keluar yang lebih tepat.
Strategi ini menggabungkan BlueWave dan penunjuk MFI untuk menentukan arah trend, pergi panjang pada trend menaik dan pendek pada trend menurun, dengan berkesan mengikuti trend pasaran untuk keuntungan. Walau bagaimanapun, terdapat risiko dalam tetapan parameter, hentikan kerugian / mengambil keuntungan, penurunan berterusan dan lain-lain, yang memerlukan pengoptimuman lebih lanjut pada penyesuaian parameter, mekanisme hentikan kerugian, keadaan penapis dan lain-lain untuk meningkatkan prestasi strategi dan ketahanan. Secara keseluruhan, strategi ini intuitif dan berfungsi dengan baik untuk trend jangka panjang, tetapi kerugian mungkin timbul apabila terperangkap dalam pasaran yang berbeza.
/*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")