Estratégia de aquisição de preços de base com dois indicadores

Autora:ChaoZhang, Data: 2024-01-04 17:39:13
Tags:

img

Resumo

Esta estratégia identifica oportunidades de compra combinando volume de negociação e indicadores RSI. Ela gerencia posições usando metas de lucro por etapas para bloquear ganhos gradualmente.

Estratégia lógica

A estratégia utiliza dois indicadores para identificar os sinais de compra - volume de negociação e RSI. Especificamente, ele vai longo quando o volume excede 2,5 vezes o volume médio de 70 dias, juntamente com o RSI caindo abaixo de 30 (níveis de sobrevenda).

Uma vez estabelecida uma posição longa, a estratégia estabelece 5 metas de lucro de 0,4%, 0,6%, 0,8%, 1,0% e 1,2%.

Ao obter lucros em etapas, ele visa bloquear ganhos em meio a pequenos movimentos ascendentes, em vez de esperar por corridas maiores que podem não se materializar.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. O uso de indicadores duplos evita falhas, o volume elevado confirma a convicção de fundo, enquanto os sinais de RSI sobrevendidos significam probabilidades de reversão.

  2. Tomar lucros em lotes permite maximizar pequenas captações de ganhos dentro de intervalos.

  3. Excelência em mercados de gama limitada, especialmente aqueles presos em torno de áreas institucionais inacabadas.

  4. O stop loss amplo permite que os mercados tenham espaço para flutuações antes de serem interrompidos, evitando a saída prematura de retracements de curto prazo.

Análise de riscos

Os principais riscos são:

  1. Interpretação errada de sinal duplo levando a entradas falsas.

  2. Otimizar os níveis de lucro e os rácios de posição ajuda.

  3. As paradas largas levam a perdas potencialmente elevadas em operações individuais.

  4. Os mercados com tendências fortes representam riscos de viés direcional.

  5. A utilização de corretores de baixa comissão é preferível.

Orientações de otimização

As possibilidades de otimização incluem:

  1. Otimizar as combinações de volume e RSI para reduzir os sinais falsos, adicionando confirmações como MACD e KDJ.

  2. Testar diferentes níveis de lucro e proporções de posição para configurações ideais, potencialmente com mecanismos dinâmicos.

  3. Introdução de regras de dimensionamento de posições para reduzir o risco máximo por transação através de sistemas de gestão de riscos.

  4. Incorporar métricas de tendência para detectar reversões para parar perdas em tempo hábil.

  5. Aproveitar o backtesting algorítmico para iterar rapidamente parâmetros para melhores configurações.

  6. Aprender com os modelos institucionais de controlo do deslizamento/dos custos das TIC para melhorar a eficiência apesar da elevada rotatividade.

Conclusão

Esta estratégia de reversão de média de indicador duplo identifica sinais de baixo com aumentos de volume e RSI de sobrevenda para compra, obtendo lucros graduais em meio a intervalos através de saídas escalonadas. Ele lucra com frequência sem exigir grandes corridas. As desvantagens incluem riscos de má interpretação de sinal e alta rotatividade. A otimização de confirmação e os controles de risco / custo melhoram a robustez. Excelente para a colheita de ganhos de curto prazo em mercados agitados.


/*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


Mais.