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.
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.
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)