Основная идея этой стратегии состоит в том, чтобы объединить индикатор импульса Lazy Bear и индикатор MFI Crypto Face, чтобы идти в длинный путь, когда тенденция растет, и идти в короткий путь, когда тенденция падает, реализуя количественную торговую стратегию, которая следует за рыночными тенденциями.
Используйте индикатор импульса Lazy Bear BlueWave, который вычисляет линейную регрессию ценового закрытия по сравнению с 20-дневным самым высоким, самым низким и близким средним для определения направления тренда.
Используйте улучшенный индикатор МФИ от Crypto Face, который рассчитывает сумму изменения цен и объема за последние 58 дней для определения денежного потока.
Когда BlueWave превышает 0 и MFI больше 0, генерируется сигнал покупки для открытия длинной позиции; когда BlueWave превышает 0 и MFI меньше 0, генерируется сигнал продажи для открытия короткой позиции.
Установите условия стоп-лосса и прибыли, чтобы следовать рыночной тенденции к прибыли, контролируя риски.
Объединение двух индикаторов позволяет более точно определить направление рыночной тенденции.
Плавная кривая BlueWave избегает предвзятости от отклонений, что делает суждение о тренде более надежным.
МФИ могут определять денежный поток, избегая потерь от ложных вырывов.
Стратегия имеет несколько параметров и легко внедряется и работает.
Гибкие параметры стоп-лосса и прибыли помогают контролировать торговые риски.
Торговые сессии могут быть настроены таким образом, чтобы избежать аномальной волатильности в определенное время на рынке.
Продолжающаяся тенденция к снижению может привести к последовательным коротким позициям и потерям.
Ложные сигналы могут привести к тому, что вы попадете в ловушку после входа на позиции.
Сверхразмерные стоп-лосс могут усиливать убытки.
Высокая волатильность может часто достигать точек остановки.
Неправильная оптимизация параметров может привести к плохой эффективности стратегии.
Слишком частые торговые сигналы могут увеличить затраты на транзакции и скольжение.
Оптимизировать параметры BlueWave и MFI для более стабильных и надежных сигналов.
Включать индикаторы тенденции, чтобы избежать длительных коротких потерь.
Динамически корректируйте коэффициенты стоп-лосс/стоп-прибыль, чтобы снизить вероятность попадания в ловушку.
Улучшить условия входа, чтобы уменьшить ложные сигналы.
Подумайте о размерах позиций, чтобы избежать погони за ралли и сбросов.
Сочетать с моделями машинного обучения для более точных пунктов входа и выхода.
Эта стратегия сочетает в себе индикаторы BlueWave и MFI для определения направления тренда, длинного на восходящие тенденции и короткого на нисходящие тенденции, эффективно следуя рыночным тенденциям для получения прибыли. Однако существуют риски в настройках параметров, стоп-лосс / принимайте прибыль, устойчивые нисходящие тенденции и т. Д., Требующие дальнейшей оптимизации на настройке параметров, механизмы стоп-лосса, условия фильтра и т. Д. Для улучшения эффективности и надежности стратегии. В целом стратегия интуитивна и хорошо работает для долгосрочного следования тренду, но могут возникнуть потери, когда вы попали в ловушку на рыночных диапазонах.
/*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")