Эта стратегия идентифицирует краткосрочные дно, обнаруживая выдающийся объем в нисходящем тренде, и принимает длинные позиции в условиях перепроданности.
Если объем превышает 2 стандартных отклонения над средним объемом, основанным на SMA, он считается непогашенным. Между тем, RSI ниже 30 указывает на состояние перепроданности. Когда оба условия выполнены, он рассматривается как краткосрочный дно и длинная позиция принимается немедленно. Позиция будет закрыта после определенного периода времени (например, 10 бар).
Логика этой стратегии проста:
Преимущества этой стратегии включают:
В целом, эта стратегия использует преимущества объемных прорывов, чтобы уловить изменение тренда, строго контролируя риски.
К основным рискам этой стратегии относятся:
Для устранения этих рисков оптимизация может осуществляться в следующих аспектах:
Эта стратегия может быть дополнительно оптимизирована в следующих аспектах:
При внедрении более продвинутых методов можно достичь значительного улучшения стабильности, альфа и отношения Шарпе.
В общем, это очень простая, простая и логичная краткосрочная стратегия прорыва. При правильном использовании объема для обнаружения обратных тенденций и строгом контроле рисков можно достичь стабильной производительности. Но существуют риски ложных сигналов и устойчивости параметров. Эти риски могут быть устранены постепенно путем внедрения более продвинутых методов для дальнейшего улучшения стратегии.
/*backtest start: 2024-01-10 00:00:00 end: 2024-01-17 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/ // © footlz //@version=4 strategy("Bottom catch strategy", overlay=true) v_len = input(20, title="Volume SMA Length") mult = input(2) rsi_len = input(20, title="RSI Length") oversold = input(30, title="Oversold") close_time = input(10, title="Close After") v = volume basis = sma(v, v_len) dev = mult * stdev(v, v_len) upper_volume = basis + dev rsi = rsi(close, rsi_len) long = v > upper_volume and rsi < oversold strategy.entry("Long", true, when=long) passed_time = 0.0 if strategy.position_size != 0 passed_time := 1 else passed_time := 0 if strategy.position_size != 0 and strategy.position_size[1] != 0 passed_time := passed_time[1] + 1 if passed_time >= close_time strategy.close_all() // If want to enable plot, change overlay=false. v_color = close >= close[1] ? color.new(#3eb370, 0) : color.new(#e9546b, 0) // plot(v, title="volume", color=v_color, style=plot.style_columns) // plot(upper_volume, title="Threshold", color=color.aqua)