Estratégia dinâmica de pirâmide

Autora:ChaoZhang, Data: 2023-12-22 14:36:30
Tags:

img

Resumo

A estratégia de pirâmide dinâmica visa reduzir o custo médio de detenção por meio de pirâmide de posições adicionais quando o preço cai. Pode ajudar a mitigar perdas e obter lucros adicionais quando o preço se recupera. A estratégia abrirá posições adicionais com certa quantidade e intervalo quando as condições de pirâmide forem desencadeadas. Enquanto isso, o número máximo de pirâmides é definido para limitar o risco.

Estratégia lógica

A lógica central desta estratégia inclui:

  1. Posição aberta: abertura de posição longa com preço especificado se a posição atual for igual a 0.

  2. Condição de pirâmide: trigger de pirâmide se os tempos de pirâmide atuais forem inferiores ao valor máximo e o preço cair abaixo do último preço de entrada a uma percentagem pré-estabelecida.

  3. Modo de pirâmide: Aumente a quantidade de pirâmide em um fator de escala do anterior e reduza o intervalo em um fator de escala.

  4. Condição de obtenção de lucro: fechar todas as posições se for activado o objetivo de lucro baseado no preço médio de detenção.

Ao fazer uma pirâmide com o preço caindo, esta estratégia diminui o custo médio dinamicamente. Ele para a perda de forma eficiente e deixa mais espaço para lucro quando a tendência se inverte. Quando a condição de lucro é acionada, todas as posições saem com lucro.

Análise das vantagens

A maior vantagem desta estratégia é a obtenção de um maior potencial de lucro com perdas aceitáveis, reduzindo o custo médio de detenção através da pirâmide.

  1. Reduzir significativamente o custo de detenção, aumentando assim a capacidade de parar perdas.

  2. Aumentar a faixa de lucro depois de reduzir o custo. Se o preço se recuperar, o potencial de lucro é expandido e abre caminho para obter lucro.

  3. Personalização flexível para a lógica de pirâmide definindo parâmetros relacionados com o incremento, quantidade e intervalo, etc.

  4. Risco controlado limitando o tempo máximo de pirâmide.

Análise de riscos

Embora a estratégia permita maior potencial de lucro com pirâmide, alguns riscos precisam de atenção:

  1. Risco de perdas - A premissa é assumir certas perdas da pirâmide.

  2. Risco de mergulho em penhascos - Em casos extremos, como mergulho em penhascos, as perdas podem exceder a faixa aceitável.

  3. Tarde ou falta de lucro - O rebote do preço nem sempre pode desencadear a condição de lucro, que é a deficiência da estratégia.

  4. Risco de ajuste de parâmetros - Ajustes inadequados em parâmetros como coeficiente de pirâmide e percentagem de lucro pode levar ao fracasso.

As seguintes medidas podem ajudar a mitigar os riscos:

  1. Escala de incremento mais baixa para controlar o montante das perdas de entrada única.

  2. Reduzir o intervalo de pirâmide para obter uma redução mais rápida dos custos.

  3. Configure o ponto de stop loss adequadamente, em vez de muito solto.

Orientações de otimização

Tendo em conta a natureza de obter um maior potencial de lucro com a pirâmide, as orientações de otimização concentram-se principalmente num melhor controlo dos riscos e na melhoria da rendibilidade:

  1. Melhorar a lógica de pirâmide para tornar as entradas mais inteligentes e adaptáveis às condições de mercado.

  2. Otimizar os mecanismos de captação de lucro para maior eficiência, como captação de lucro, fechamento parcial, etc., para reduzir a chance de recuperação do preço.

  3. Introduzir algoritmos de aprendizagem de máquina para habilitar o ajuste automático de parâmetros.

  4. Adicionar um mecanismo de stop loss para limitar as perdas máximas, como trailing stop loss e take profit stop orders.

Conclusão

A estratégia de pirâmide dinâmica reduz o custo médio de detenção por entradas adicionais, permitindo um maior potencial de lucro dada uma tolerância de perda aceitável.


/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-18 19:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("DCA Bot Emulator", overlay=true, pyramiding=99, default_qty_type=strategy.cash, commission_value = 0.02)

// Date Ranges
from_month = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
from_day   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
from_year  = input(defval = 2021, title = "From Year")
to_month   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
to_day     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
to_year    = input(defval = 9999, title = "To Year")
start  = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window = time >= start and time <= finish ? true : false // create function "within window of time"

// Strategy Inputs
price_deviation = input(2, title='Price deviation to open safety orders', maxval=0)/100
take_profit = input(1.5, title='Target Take Profit', minval=0)/100

// base order
base_order  = input(100000, title='base order') 
safe_order  = input(200, title='safe order') 
safe_order_volume_scale  = input(2, title='Safety order volume scale') 
safe_order_step_scale  = input(1, title='Safety order step scale') 

max_safe_order = input(10, title='max safe order') 
var current_so = 1
var initial_order = 0.0

// Calculate our key levels
pnl = (close - strategy.position_avg_price) / strategy.position_avg_price

take_profit_level = strategy.position_avg_price * (1 + take_profit)

// First Position
if(strategy.position_size == 0 and window)
    strategy.entry("Long", strategy.long, qty = base_order/close)
    initial_order := close
    current_so := 1

// Average Down!
if current_so > 0 and close  < initial_order * (1 - price_deviation * current_so * safe_order_step_scale) and current_so <= max_safe_order
    so_name = "SO " + tostring(current_so) 
    strategy.entry(so_name, long=strategy.long , qty = safe_order * safe_order_volume_scale /close)
    current_so := current_so + 1
    
// Take Profit!
strategy.close_all(when=take_profit_level <= close  and strategy.position_size > 0)


Mais.