Backtest Estratégia de negociação de ruptura de canal

Autora:ChaoZhang, Data: 2023-09-20 17:02:40
Tags:

Resumo

Esta estratégia constrói canais longos e curtos, backtesting breakouts de canal sistematicamente.

Estratégia lógica

  1. Construir um canal longo com os preços mais altos durante um período, e um canal curto com os preços mais baixos.

  2. Compre quando o preço ultrapassar a linha superior do canal.

  3. Venda quando o preço for abaixo da linha inferior do canal.

  4. Pode definir um intervalo de datas de backtest para verificar a estratégia.

  5. Regras simples e claras para a troca de canais.

Vantagens

  1. Os canais definem visualmente os intervalos de preços.

  2. Alta probabilidade de impulso ascendente depois de fuga.

  3. O backtesting verifica historicamente a eficácia da estratégia.

  4. O conceito de fuga do canal é simples e intuitivo.

  5. Código conciso, fácil de modificar e otimizar.

Riscos

  1. Riscos de falhas e retrações após a fuga inicial.

  2. Não há forma eficaz de definir paradas e saídas.

  3. Parâmetros de canal inadequados afetam negativamente o desempenho.

  4. Os resultados dos exames de retrospectiva podem ter um viés de previsão.

  5. O desempenho real das negociações pode diferir muito do backtest.

Reforço

  1. Parâmetros de ensaio para encontrar combinações ideais.

  2. Adicione outros fatores para filtrar falhas.

  3. Construir mecanismos de stop loss e take profit.

  4. Manipula os dados dos backtests adequadamente para eliminar preconceitos.

  5. Verificar a estratégia em várias condições de mercado através de backtest.

  6. Negociação em papel para configurar parâmetros para negociação ao vivo.

Conclusão

Esta estratégia testa regras simples de ruptura de canal, fáceis de operar, mas que exigem refinamento para estabilidade.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-08-30 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//strategy(title = "Backtest Donchian Teixeira", default_qty_type = strategy.fixed, default_qty_value = 100, overlay = true, commission_type = strategy.commission.cash_per_order, commission_value = 2.50, precision = 2, calc_on_every_tick = true, pyramiding = 0, initial_capital = 10000)

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

testEndYear = input(2018, "Backtest End Year")
testEndMonth = input(12, "Backtest End Month")
testEndDay = input(1, "Backtest End Day")
testPeriodEnd = timestamp(testStartYear, testStartMonth, testStartDay, 23, 59)

window()  => true //nao funciona

length1 = input(20, minval=1, title="Upper Channel")
length2 = input(20, minval=1, title="Lower Channel")

dcUpper = highest(length1)
dcLower = lowest(length2)

plot(dcLower, style=line, linewidth=1, color=red, offset=1)
plot(dcUpper, style=line, linewidth=1, color=lime, offset=1)
plot(dcLower, style=line, linewidth=1, color=gray)

if (strategy.position_size == 0)
    strategy.entry("COMPRA", true, stop = dcUpper)
    
if (strategy.position_size > 0)
    strategy.exit("VENDA", stop = dcLower)

Mais.