Esta estratégia identifica os fundos de curto prazo detectando volume excepcional em uma tendência de queda, e toma posições longas durante condições de sobrevenda.
Quando o volume excede 2 desvios padrão acima do volume médio baseado na SMA, ele é considerado volume pendente. Enquanto isso, o RSI abaixo de 30 indica estado de sobrevenda. Quando ambas as condições são atendidas, ele é julgado como um fundo de curto prazo e a posição longa é tomada imediatamente. A posição será fechada após um certo período de tempo (por exemplo, 10 bares).
A lógica desta estratégia é simples:
As vantagens desta estratégia incluem:
Em resumo, esta estratégia aproveita as rupturas de volume para capturar inversões de tendência, controlando estritamente os riscos.
Os principais riscos desta estratégia incluem:
Para fazer face a estes riscos, a otimização pode ser feita nos seguintes aspectos:
Esta estratégia pode ser melhorada nos seguintes aspectos:
Ao introduzir técnicas mais avançadas, pode ser alcançada uma melhoria significativa da estabilidade, da relação alfa e Sharpe.
Em resumo, esta é uma estratégia de ruptura de curto prazo muito simples, direta e lógica. Ao alavancar adequadamente o volume para detectar inversões de tendência e controlar estritamente os riscos, um desempenho sólido pode ser alcançado. Mas existem riscos de falsos sinais e robustez de parâmetros. Estes podem ser abordados incrementalmente através da introdução de técnicas mais avançadas para melhorar ainda mais a estratégia.
/*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)