Эта стратегия определяет возможности покупки путем сочетания объема торговли и индикаторов RSI. Она управляет позициями с использованием поэтапных целей получения прибыли для постепенного закрепления прибыли. Стратегия хорошо работает на рынках с диапазоном и может эффективно улавливать повторяющиеся сигналы покупки в пределах небольших колебаний цен.
Стратегия использует два индикатора для выявления сигналов покупки - объем торговли и RSI. В частности, она становится длинной, когда объем превышает 2,5 раза средний объем 70 дней, вместе с RSI, падающим ниже 30 (уровни перепродажи).
После установления длинной позиции стратегия устанавливает 5 целей получения прибыли на уровне 0,4%, 0,6%, 0,8%, 1,0% и 1,2%; она постепенно закрывает позиции на основе коэффициента позиции (20%, 40%, 60%, 80% и 100%) до полного выхода.
Принимая прибыль поэтапно, он стремится зафиксировать прибыль на фоне незначительных подъемных движений, вместо того, чтобы ждать более крупных ходов, которые могут не осуществиться.
Ключевыми преимуществами этой стратегии являются:
Использование двойных индикаторов предотвращает ложные прорывы.
Приобретение прибыли в партии позволяет максимизировать небольшие доходы в пределах диапазонов.
Частые небольшие прибыли могут быть зафиксированы при отсутствии тренда.
Широкий стоп-лосс позволяет рынкам выйти из краткосрочных ретриксов.
Основными рисками являются:
Двойная неверная интерпретация сигнала приводит к ложным записям.
Оптимизация уровня прибыли и коэффициентов позиций помогает.
Широкие остановки приводят к потенциально большим потерям на одной сделке.
Сильные тенденции рынков создают риски направленного уклонения.
Высокая частота торговли увеличивает затраты на транзакции.
Возможные направления оптимизации включают:
Оптимизация объема и комбинации RSI для уменьшения ложных сигналов, добавление подтверждений, таких как MACD и KDJ.
Испытание различных уровней прибыли и соотношения позиций для идеальных конфигураций, потенциально с динамическими механизмами.
Внедрение правил размещения позиций для сокращения максимального риска на одну сделку с помощью систем управления рисками.
Включение показателей тренда для выявления обратных сдвигов для своевременной остановки потерь.
Использование алгоритмического обратного тестирования для быстрой итерации параметров для лучших конфигураций.
Учиться у институциональных моделей управления сдвигом/затратами в сфере финансовых операций с высоким оборотом, чтобы повысить эффективность.
Эта двойная индикаторная стратегия реверсии среднего показателя определяет нижние сигналы с ростом объема и перепроданным RSI для покупки, получая постепенную прибыль среди диапазонов через поэтапные выходы. Она часто приносит прибыль, не требуя больших пробегов. Недостатки включают риски неправильной интерпретации сигнала и высокий оборот. Оптимизация подтверждения и контроль рисков / затрат улучшают устойчивость. Отлично подходит для краткосрочного получения прибыли на нестабильных рынках.
/*backtest start: 2023-12-27 00:00:00 end: 2024-01-03 00:00:00 period: 1m basePeriod: 1m 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/ // © wielkieef //@version=5 strategy(title='BTFD strategy [3min]', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) // Volume vol_sma_length = input.int(70, title='Volume lenght ', minval=1) Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5 // Rsi rsi_lenght = input.int(20, title='RSI lenght', minval=0) rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght) rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght) rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down) rsi_overs = rsi_value <= 30 rsi_overb = rsi_value >= 70 // logic tp_1 = input.float(0.4," TP 1", minval=0.1, step=0.1) tp_2 = input.float(0.6," TP 2", minval=0.2, step=0.1) tp_3 = input.float(0.8," TP 3", minval=0.3, step=0.1) tp_4 = input.float(1.0," TP 4", minval=0.4, step=0.1) tp_5 = input.float(1.2," TP 5", minval=0.5, step=0.1) q_1 = input.int(title=' % TP 1 Q ', defval=20, minval=1, step=10) q_2 = input.int(title=' % TP 2 Q ', defval=40, minval=1, step=10) q_3 = input.int(title=' % TP 3 Q ', defval=60, minval=1, step=10) q_4 = input.int(title=' % TP 4 Q ', defval=80, minval=1, step=10) q_5 = input.int(title=' % TP 5 Q ', defval=100, minval=1, step=10) sl = input.float(5.0, '% Stop Loss', step=0.1) long_cond = Volume_condt and rsi_overs // this code is from author RafaelZioni, modified by wielkieef per(procent) => strategy.position_size != 0 ? math.round(procent / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) // -------------------------------------------------------------------------------------------------------------------- if long_cond strategy.entry('BUY', strategy.long) strategy.exit('TP 1', qty_percent=q_1, profit=per(tp_1), loss=per(sl) ) strategy.exit('TP 2', qty_percent=q_2, profit=per(tp_2), loss=per(sl) ) strategy.exit('TP 3', qty_percent=q_3, profit=per(tp_3), loss=per(sl) ) strategy.exit('TP 4', qty_percent=q_4, profit=per(tp_4), loss=per(sl) ) strategy.exit('TP 5', qty_percent=q_5, profit=per(tp_5), loss=per(sl) ) // by wielkieef