O recurso está a ser carregado... Carregamento...

Tendência na sequência da estratégia da média móvel

Autora:ChaoZhang, Data: 2024-02-29 14:00:35
Tags:

img

Resumo

Esta estratégia calcula as linhas médias móveis do canal e estabelece posições longas ou curtas quando o preço atravessa as linhas do canal para seguir a tendência do preço da ação.

Princípio da estratégia

A estratégia primeiro calcula a média alta de 20 dias como a linha superior do canal, a média baixa de 20 dias como a linha inferior do canal e calcula a linha média do canal. A linha média do canal representa a tendência de preço médio recente. Quando o preço atravessa a linha média do canal para cima, uma posição longa é estabelecida. Quando o preço atravessa a linha média do canal para baixo, uma posição curta é estabelecida. Siga a tendência de preço até que o preço caia de volta para o lado oposto da faixa do canal, feche a posição.

Análise das vantagens

  • Utilizar o canal para acompanhar as tendências dos preços, evitar que os fundos fiquem bloqueados em mercados variados;
  • Os trilhos de canal ajudam a determinar os pontos de entrada e saída, facilitando o controle das entradas;
  • A gama de canais filtra algum ruído e aumenta a probabilidade de lucro;
  • Os parâmetros do canal podem ser ajustados para ajustar a sensibilidade da estratégia;

Análise de riscos

  • As rupturas significativas da linha média podem ser seguidas por testes de retração da linha média, resultando em uma armadilha;
  • As acções oscilantes não são adequadas para esta estratégia e podem conduzir a negociações de alta frequência;
  • As configurações incorretas dos parâmetros também podem afetar o desempenho da estratégia;

Orientações de otimização

  • Otimizar os parâmetros do ciclo do canal para testar os impactos de diferentes parâmetros;
  • Adicionar estratégias de captação de lucros e de stop loss para controlar as perdas individuais e totais;
  • Combinar outros indicadores como juízos auxiliares para evitar sinais errados;
  • Tomar posições em lotes para reduzir a probabilidade de ficarem presos durante os ensaios de retração;

Resumo

Em geral, esta estratégia é relativamente simples e direta. Ela julga as tendências de preços das ações através de canais de preços básicos e pertence ao tipo de tendência seguinte. As vantagens são a operação fácil, uso pleno das oportunidades de investimento trazidas pelas tendências de preços e evitar bloqueios de fundos. As desvantagens são que configurações de parâmetros inadequadas podem afetar o desempenho e há certos riscos de testes de retração. Através de otimização razoável, a estabilidade da estratégia pode ser melhorada e o desempenho comercial real pode ser melhorado.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2)
//stock strategy
strategy(title = "dc", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=.005)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 20,  overlay = true, commission_type=strategy.commission.percent,commission_value=.25,default_qty_value=20)


testStartYear = input(2000, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2019, "Backtest Start Year")
testEndMonth = input(3)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = 20

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=black, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=close > dcAverage)
strategy.close("simpleBuy",when=close < dcLower)
    
strategy.entry("simpleSell", strategy.short,when=close < dcAverage)
strategy.close("simpleSell",when=close > dcAverage)
    



Mais.