Estratégia quantitativa de negociação baseada em médias móveis de pontos altos e baixos

Autora:ChaoZhang, Data: 2023-09-19 15:53:55
Tags:

Resumo

Esta estratégia usa médias móveis simples de pontos altos e baixos em comparação com o preço de fechamento atual para determinar entradas e saídas.

Estratégia lógica

  1. Calcular a média móvel simples de preços elevados de 4 períodos.

  2. Calcular a média móvel simples de preços baixos de 4 períodos.

  3. Vá longo quando o preço de fechamento quebra acima do ponto alto SMA.

  4. Faça curto quando o preço de fechamento for abaixo do ponto SMA mais baixo.

  5. Utilize stop loss fixos e take profit para gestão de riscos.

Análise das vantagens

  1. Utiliza indicadores simples, fáceis de compreender e implementar.

  2. A Temporal capta sinais de ruptura de preços de cruzamento da SMA.

  3. Pode filtrar rapidamente o ruído e identificar tendências.

  4. Os cálculos leves reduzem a estratégia.

  5. Adequado como estratégia de base para extensões.

Análise de riscos

  1. Requer parâmetros razoáveis para evitar hipersensibilidade.

  2. Incapaz de lidar com riscos de grandes fuga.

  3. Possibilidades de perdas de serras em intervalos.

  4. Não pode ajustar automaticamente paradas e limites.

  5. Difícil julgar o contexto da tendência a longo prazo.

Orientações de otimização

  1. Ensaiar diferentes parâmetros para efeitos na qualidade do sinal.

  2. Adicionar filtros para validar a eficácia das fuga.

  3. Incorpore análise de tendências para evitar armadilhas.

  4. Desenvolver paradas e limites dinâmicos.

  5. Otimizar as paradas para melhorar a taxa de vitórias.

  6. Teste a robustez em diferentes prazos.

Resumo

Esta estratégia usa indicadores simples para medir o ímpeto do preço e fornece uma estrutura de negociação de tendência básica. Com melhorias adicionais como otimização de parâmetros e controles de risco, a lógica de negociação é altamente extensível em um sistema quant robusto.


/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-13 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("HiLo", overlay=true)

// Testing a specific period
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(4, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2017, "Backtest Stop Year")
testStopMonth = input(5, "Backtest Stop Month")
testStopDay = input(1, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false


//HiLo Strategy
length = input(4, minval=0)
displace = input(0, minval=0)
highsma = sma(high, length)
lowsma = sma(low, length)

longCondition = close > highsma[displace]
if (longCondition)
    strategy.entry("long", true)

shortCondition = close < lowsma[displace]
if (shortCondition)
    strategy.entry("short", false)

// Exit seems with a problem. it keeps saying the order's limit (2000) was reached even if I back test it just for a day. 
// If the two lines bellow are commented, then it it works. Anyone? Any idea what's wrong?

// strategy.exit("exit", "long", profit=10, loss=5)
// strategy.exit("exit", "short", profit=10, loss=5)






    

Mais.