
A estratégia de acréscimo dinâmico atinge o objetivo de compensação de stop loss ao acréscimo no momento da perda, atingindo a redução do custo médio. Quando o preço desencadeia a condição de acréscimo, a estratégia aumenta o acréscimo em uma determinada quantidade e intervalo, além de definir o número máximo de acréscimos, evitando o risco de acréscimo ilimitado.
A lógica central da estratégia é:
Comprar e abrir posição: Se a posição é 0 (zero), a posição deve ser aberta ao preço indicado.
Condição de acréscimo de posição: se o número de acréscimos de posição atual for menor que o número máximo de acréscimos de posição e o preço for inferior a uma queda predeterminada no preço da posição anterior, o acréscimo de posição é acionado.
Método de acúmulo: o número de acúmulo aumenta por um fator de escalação do número anterior, e o intervalo de acúmulo diminui por um fator de escalação do intervalo anterior.
Condição de parada: Se um margem de lucro predeterminada no preço médio da posição for acionada, a posição será parada.
Assim, quando o mercado é desfavorável, a estratégia pode reduzir o custo de manutenção da posição através de ações, obtendo ganhos adicionais ao mesmo tempo em que corrige o stop loss. Quando o mercado se vira para cima, as condições de stop loss são acionadas e todas as posições são lucrativas.
A maior vantagem desta estratégia é que, através da acumulação de ativos, é possível reduzir o custo médio e obter maiores ganhos, tolerando certas perdas, o que é especialmente evidente no mercado de touros. Em particular, existem as seguintes vantagens:
Pode reduzir significativamente os custos de manutenção de posições e aumentar a capacidade de parar perdas. Quando o preço se corre, a estratégia aumenta a posição, diluindo o alumínio de alumínio simples que foi comprado a preços mais altos, reduzindo o custo total.
Aumentar a margem de lucro. Depois de reduzir os custos, a margem de lucro será ampliada, desde que os preços se recuperem.
Flexível configuração da lógica de acréscimo, pode ser personalizado. A política permite a configuração de parâmetros como a amplitude, quantidade e intervalo de acréscimo, que o usuário pode ajustar de acordo com suas preferências.
Risco controlado, limite máximo de adição de risco. O limite máximo de adição de risco permite que a estratégia não adicione risco ilimitado e controle o risco.
Embora a estratégia tenha permitido um maior espaço de lucro por meio de ações de risco, há alguns riscos que devem ser observados:
Risco de perdas. A estratégia é assumir perdas como premissa de risco. Se a situação continuar negativa, os prejuízos podem se expandir.
Risco de queda. Em situações extremas, o preço pode cair acima da capacidade de suporte da estratégia. Isso requer uma configuração razoável de parâmetros de risco e pontos de parada.
A reação não é oportuna. A reação do preço não necessariamente desencadeia a paralisação, e a falta de paralisação é uma estratégia curta.
Riscos de configuração de parâmetros. A configuração incorreta de parâmetros como o coeficiente de alavancagem e o parâmetro de suspensão pode levar à falha da estratégia.
Estes riscos podem ser mitigados através das seguintes medidas:
Reduzir adequadamente a acumulação de depósitos e controlar as perdas individuais.
A redução do intervalo de acumulação e a redução rápida dos custos.
Estabeleça um limite razoável. Se o limite for muito grande, a perda pode aumentar.
Considerando a natureza da estratégia de obter maiores ganhos com o aumento de risco, sua orientação de otimização se concentra principalmente em controlar melhor os riscos e obter ganhos. Em particular, existem as seguintes principais direções de otimização:
Melhorar os algoritmos de logística de aquisição para torná-los mais inteligentes e de acordo com a situação. Pode-se considerar a ação de aquisição com base em indicadores como a taxa de flutuação e o salto de preço.
Otimizar o modo de travagem para obter uma travagem mais eficiente. Pode ser combinado com o modo de travagem móvel, travagem em série, etc., para reduzir a impossibilidade de travagem de reboque.
A introdução de algoritmos de aprendizagem de máquina para otimizar a auto-adaptação dos parâmetros. Os parâmetros-chave não são mais estáticos, mas são ajustados dinamicamente de acordo com a situação em tempo real e o feedback.
Aumentar o mecanismo de stop loss, controlar o máximo de perdas. O método de stop loss pode considerar o stop loss móvel, o stop loss pendente, etc., evitando a expansão de perdas causadas por situações extremas.
A estratégia de acréscimo dinâmico, através da aquisição de posições para alcançar a redução do custo-médio, obtém maior receita com o pressuposto de adequado controle do risco. Esta estratégia, baseada em assumir certos prejuízos, é especialmente popular entre os investidores com maior capacidade de tolerar perdas. A direção de otimização futura será feita em torno de uma forma mais inteligente de acréscimo, um mecanismo de suspensão mais eficiente, etc.
/*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)