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.
A lógica central desta estratégia inclui:
Posição aberta: abertura de posição longa com preço especificado se a posição atual for igual a 0.
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.
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.
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.
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.
Reduzir significativamente o custo de detenção, aumentando assim a capacidade de parar perdas.
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.
Personalização flexível para a lógica de pirâmide definindo parâmetros relacionados com o incremento, quantidade e intervalo, etc.
Risco controlado limitando o tempo máximo de pirâmide.
Embora a estratégia permita maior potencial de lucro com pirâmide, alguns riscos precisam de atenção:
Risco de perdas - A premissa é assumir certas perdas da pirâmide.
Risco de mergulho em penhascos - Em casos extremos, como mergulho em penhascos, as perdas podem exceder a faixa aceitável.
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.
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:
Escala de incremento mais baixa para controlar o montante das perdas de entrada única.
Reduzir o intervalo de pirâmide para obter uma redução mais rápida dos custos.
Configure o ponto de stop loss adequadamente, em vez de muito solto.
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:
Melhorar a lógica de pirâmide para tornar as entradas mais inteligentes e adaptáveis às condições de mercado.
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.
Introduzir algoritmos de aprendizagem de máquina para habilitar o ajuste automático de parâmetros.
Adicionar um mecanismo de stop loss para limitar as perdas máximas, como trailing stop loss e take profit stop orders.
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)