
Esta estratégia é usada para determinar o momento de compra em combinação com o volume de negociação e o indicador RSI. A estratégia é usada em situações de turbulência e pode ser usada para bloquear compras repetidas em turbulências de queda de pequena magnitude.
A estratégia usa dois indicadores para identificar o momento de compra: volume de negócios e RSI. A lógica específica é emitir um sinal de compra quando o volume de negócios é superior a 2,5 vezes a média de volume de negócios dos últimos 70 dias, enquanto o RSI é inferior a 30 (nível de oversold).
Uma vez que a posição de compra é estabelecida, a estratégia define cinco diferentes objetivos de stop loss (,4%, 0,6%, 0,8%, 1,0% e 1,2%), e os stop-loss são graduados de acordo com a proporção da posição (<20%, 40%, 60%, 80% e 100%), até que toda a posição seja equilibrada. Ao mesmo tempo, define um ponto de parada de perda de 5%.
Desta forma, é possível bloquear pequenas tendências de alta por meio da configuração de paradas em lotes, evitando a perda de lucros por esperar por maiores aumentos. O stop loss pode controlar perdas individuais.
A estratégia tem as seguintes vantagens:
O uso de indicadores duplos para identificar pontos de compra evita falsas rupturas. O aumento do volume de negociação pode confirmar a pressão de resistência do fundo, e o excesso de RSI pode determinar a probabilidade de um rebote do Addon.
A estratégia de paralisação por lotes permite maximizar as oportunidades de lucro em pequenas oscilações, sem esperar por grandes aumentos.
Aplica-se a situações de turbulência, especialmente em mercados em que os preços saltam repetidamente nas áreas de unfinished da instituição. Esses mercados são difíceis de determinar a direção a curto prazo, e a estratégia pode ser lucrativa com frequência.
O ponto de parada de perda é amplo, dando ao mercado espaço suficiente para tomar decisões.
Os principais riscos desta estratégia são:
O duplo indicador confirma que há um risco de erro de avaliação, podendo comprar pontos de ruptura falsos. O risco pode ser reduzido com a otimização de parâmetros.
O bloqueio de lotes pode perder uma grande oportunidade de lucro devido ao pequeno porte de uma posição. Pode ser otimizado ajustando o ponto de bloqueio e a proporção de posição.
A maior paralisação, o maior risco de perda individual. Pode reduzir o risco de gestão de posições.
Em mercados de turbulência, os mercados fortes apresentam um maior risco de direção.
A maior frequência de transações leva a um aumento nos custos de transação.
A estratégia pode ser otimizada em:
Otimizar o volume de negociação e a combinação de parâmetros RSI, reduzindo a taxa de erro. Também pode ser introduzido MACD, KDJ e outros indicadores para confirmação.
Teste diferentes paradas de amplitude e proporções de posição para encontrar a combinação ideal de parâmetros. Também pode ser introduzido um mecanismo de paragem dinâmica.
Optimizar a estratégia de gestão de posições e reduzir a probabilidade de perdas individuais através de um sistema de gestão de posições de risco.
Adição de um módulo de julgamento de tendências, capaz de identificar a tendência de mudança e parar o prejuízo em tempo hábil.
Introdução de sistemas de transação algorítmica e de feedback quantitativo para percorrer rapidamente os diferentes parâmetros em busca da combinação ideal de parâmetros.
O modelo de controle de deslizamento e controle de custos baseado em estratégias de negociação de alta frequência em nível institucional reduz o número de transações e garante a taxa de ganho.
A dupla estratégia de inversão do ponto de compra do indicador, através do volume de negociação ponderado com o RSI e o julgamento de sobrevenda no fundo, usa o método de juros por lotes para bloquear pequenos lucros em situações de choque. O benefício é o lucro freqüente, sem precisar esperar por um grande movimento; a desvantagem é o sinal de fácil erro e a alta frequência de negociação. A qualidade do sinal pode ser confirmada através da otimização de vários indicadores, aumentando a estabilidade da estratégia através do controle de risco e controle de custos.
/*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