
Esta estratégia de script de pin realiza uma estratégia de custo médio diário na plataforma TradingView, combinando o sinal de toque do indicador EMA para determinar o ponto de entrada. A estratégia segue a regra de investimento de custo médio, fazendo compras por dia com um valor fixo para dispersar o risco. Ao mesmo tempo, orienta o momento de entrada específico através do sinal de toque do EMA.
A estratégia tem as seguintes características:
A Lei do Custo Diário
Indicadores da EMA determinam o ponto de entrada
Mecanismo de parada dinâmica
Limitação de posição máxima
Concretamente, a estratégia investe um valor fixo por dia, calculado de acordo com o preço de fechamento do dia, para o número de ações que podem ser compradas. Com base nisso, se o preço de fechamento do dia atravessar qualquer um dos EMAs de 5, 10 e 20 dias, um sinal de compra será acionado. Uma vez que a posição acumulada atinja o limite máximo de 300 pennies, não haverá novas compras.
A estratégia tem as seguintes vantagens:
Distribuição de investimentos, redução do risco de investimentos individuais
EMA combina e evita ajustes de curto prazo
Cessos dinâmicos e controle de perdas
Limitação da posição máxima e controlo do risco
A EMA intuitiva mostra que é fácil de avaliar
Altura personalizável
A estratégia também apresenta alguns riscos que devem ser lembrados:
Risco sistêmico difícil de evitar
Os riscos de um investimento fixo
A EMA não pode responder a situações extremas
A restrição de posições também limita a margem de lucro
A configuração do ponto de parada requer experiência e habilidade.
A estratégia também tem espaço para uma maior otimização:
Aumentar a dinâmica de ajuste do montante de entrada diária
Combinação de mais critérios de admissão
Média móvel do índice
Ajuste dinâmico da posição máxima
Adoptando um stop-loss progressivo
Em geral, a estratégia de custo diário médio, combinada com o sinal de toque do EMA, permite o investimento em lotes de longo prazo. Em comparação com a abertura de posições de um só investidor, o risco pode ser dispersado e evitar a festa no auge. A inclusão do EMA também evita, em certa medida, o risco causado pelo ajuste de curto prazo, tomando medidas de parada para controlar o máximo de perdas.
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Daily DCA Strategy with Touching EMAs", overlay=true, pyramiding=10000)
// Customizable Parameters
daily_investment = input(50000, title="Daily Investment")
start_year = input(2022, title="Start Year")
start_month = input(1, title="Start Month")
start_day = input(1, title="Start Day")
end_year = input(2023, title="End Year")
end_month = input(12, title="End Month")
end_day = input(1, title="End Day")
trade_count_limit = input(10000, title="Pyramiding Limit")
enable_sell = input(true, title="Enable Sell")
start_date = timestamp(start_year, start_month, start_day)
var int trade_count = 0
// Calculate the number of shares to buy based on the current closing price
shares_to_buy = daily_investment / close
// Check if a new day has started and after the start date
isNewDay = dayofmonth != dayofmonth[1] and time >= start_date
// Buy conditions based on EMA crossovers
ema5_cross_above = crossover(close, ema(close, 5))
ema10_cross_above = crossover(close, ema(close, 10))
ema20_cross_above = crossover(close, ema(close, 20))
ema50_cross_above = crossover(close, ema(close, 50))
ema100_cross_above = crossover(close, ema(close, 100))
ema200_cross_above = crossover(close, ema(close, 200))
if isNewDay and (ema5_cross_above or ema10_cross_above or ema20_cross_above or ema50_cross_above or ema100_cross_above or ema200_cross_above) and trade_count < trade_count_limit
strategy.entry("Buy", strategy.long, qty=shares_to_buy)
trade_count := trade_count + 1
// Dynamic sell conditions (optional)
sell_condition = true
if enable_sell and sell_condition
strategy.close_all()
// EMA Ribbon for visualization
plot(ema(close, 5), color=color.red, title="EMA 5")
plot(ema(close, 10), color=color.orange, title="EMA 10")
plot(ema(close, 20), color=color.yellow, title="EMA 20")
plot(ema(close, 50), color=color.green, title="EMA 50")
plot(ema(close, 100), color=color.blue, title="EMA 100")
plot(ema(close, 200), color=color.purple, title="EMA 200")