Estratégia de média de custos em dólar

Autora:ChaoZhang, Data: 15 de setembro de 2023 16:52:06
Tags:

Esta estratégia é chamada de estratégia de média de custo em dólar, que visa acumular um tamanho de posição alvo através de compras periódicas de quantidade fixa, permitindo participações de longo prazo.

Como funciona:

  1. Definir uma quantia e uma frequência de compra fixas.
  2. Realizar compras periódicas do activo em intervalos fixos de acordo com o montante fixado.
  3. Vender quando o tamanho da posição acumulada atingir um limiar.
  4. Repetir para continuar a acumular posições periodicamente.

Fluxo de trabalho típico:

  1. Comprar uma quantidade fixa de ativos periodicamente (por exemplo, US$ 200 por mês).
  2. Vender tudo quando o tamanho da posição acumulada exceder um limiar (por exemplo, 200 acções).
  3. Reiniciar compras periódicas para continuar a acumular posições.

Vantagens desta estratégia:

  1. Menor custo médio através de participações a longo prazo.
  2. Redução dos riscos de retirada, evita compras em pontos altos.
  3. Fácil de executar de forma consistente sem monitorização frequente do mercado.

Riscos desta estratégia:

  1. Requer longos períodos de retenção, não pode adaptar-se a variações de preços a curto prazo.
  2. Pode enfrentar perdas durante tendências de baixa prolongadas.
  3. Um momento de saída subóptimo pode perder o melhor ponto de venda.

Em resumo, a estratégia de mediação de custos em dólares acumula ativos através de compras em lote, amigável para investidores de longo prazo.


/*backtest
start: 2022-09-08 00:00:00
end: 2023-09-14 00:00:00
period: 1d
basePeriod: 1h
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/
// © tanoshimooo

//@version=5
strategy ("DCA", initial_capital=44700, overlay=true)

// To start script at a given date
tz = 0 //timezone
timeadj = time + tz * 60 * 60 * 1000 //adjust the time (unix)
t1 = timeadj >= timestamp(2003, 03, 01, 0, 0) ? 1 : 0 //get the starting time

// Variables
var float lastRef = na
if barstate.isfirst
    lastRef := close
var float cash = 50000 // available money
var float sell_contracts = na
var bool first_trade_done = false

// Parameters
var float sell_min = 200 //200 sell more than sell_min or sell all
var float buy_dollars = 200

var int bi = 90

// LONGS
// if bar_index < bi
strategy.order("Long", strategy.long, int(buy_dollars/close))
cash := cash - int(buy_dollars/close)*close
// label.new(bar_index, na, na, xloc.bar_index, yloc.abovebar, color.blue, label.style_triangleup, color.blue, size.tiny)

//plot(cash)

// SHORTS
// if longExit  
//     if (strategy.position_size*sf*close > sell_min) and (strategy.position_size*sf >= 1)
//         strategy.order ("Long", strategy.short, strategy.position_size*sf)
//         cash := cash + strategy.position_size*sf*close
//     else 
//         strategy.order ("Long", strategy.short, strategy.position_size)
//         cash := cash + strategy.position_size*close
//     lastRef := close
//     label.new(bar_index, na, na, xloc.bar_index, yloc.belowbar, color.red, label.style_triangledown, color.red, size.tiny)

if bar_index == last_bar_index - 2 // bi
    strategy.order ("Long", strategy.short, strategy.position_size)

Mais.