Estratégia curta de 3 minutos de consultores especialistas

Autora:ChaoZhang, Data: 2023-11-24 15:58:01
Tags:

img

Resumo

Esta é uma estratégia de consultor especialista de curto prazo de apenas 3 minutos para futuros (ES) E-mini S&P500. Ela gera sinais de negociação calculadores de uma série de médias móveis exponenciais e combinando condições específicas de padrão.

Princípios

O indicador central desta estratégia é a linha média T3. O T3 primeiro calcula um conjunto de médias móveis exponenciais xe1 ~ x6 com base no parâmetro T3 definido pelo usuário. Em seguida, calcula a média ponderada dessas EMAs usando coeficientes específicos como a linha média final T3.

Quando o preço de fechamento está abaixo da linha média T3, um sinal de compra é gerado. Quando o preço de fechamento está acima da linha média T3, um sinal de venda é gerado. Além disso, a estratégia também julga padrões específicos de velas como condições de entrada suplementares. As ordens de negociação só serão enviadas quando as condições do padrão e os sinais T3 surgirem ao mesmo tempo.

Forças

A maior força desta estratégia reside no design de múltiplos filtros e otimização de parâmetros. Por um lado, a combinação de filtros de ação de preços e padrões de gráficos pode reduzir as negociações de ruído. Por outro lado, parâmetros-chave como T3 e regras de julgamento de padrões podem ser otimizados para se adaptar a diferentes mercados e melhorar a precisão de entrada.

Em comparação com as médias móveis simples, o mecanismo de suavização tripla do indicador T3 é eficaz na filtragem do ruído do mercado e na identificação de pontos de reversão da tendência.

Riscos e soluções

Os principais riscos desta estratégia vêm de ajuste inadequado de parâmetros e período de retenção de tamanho excessivo. Se o parâmetro T3 for definido muito grande, os indicadores ficarão para trás do mercado; se for definido muito pequeno, ele aumenta a probabilidade de negociações de ruído. Além disso, as operações de 3 minutos podem enfrentar grandes perdas sem stop loss oportuno.

Para controlar os riscos, a primeira coisa é fazer repetidos backtests para determinar a faixa de parâmetros ideal para diferentes produtos.

Melhorias

Existem várias direcções para melhorar a estratégia:

  1. Otimizar o parâmetro T3 para encontrar o intervalo ideal para diferentes instrumentos de negociação

  2. Melhorar a lógica de julgamento de padrões para aumentar a precisão do reconhecimento de padrões

  3. Adicionar mecanismos de stop loss mais avançados como trailing stop loss

  4. Adicionar módulo de gestão de dinheiro baseado no fator de lucro ou extração máxima

  5. Adicionar módulo de entrada assistida por aprendizagem de máquina

Através destas melhorias, a estabilidade e a rentabilidade da estratégia podem ser aumentadas gradualmente.

Conclusão

Como uma estratégia de negociação intradiária de curto prazo, esta estratégia tem vantagens como enorme espaço de otimização, múltiplos filtros e execução rápida de ordens.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("ES 3m Short Only (Triple RED)", overlay=true)
// Alert Message '{{strategy.order.alert_message}}'
//3min
T3 = input(150)//to 600

xPrice3 = close
xe1 = ta.ema(xPrice3, T3)
xe2 = ta.ema(xe1, T3)
xe3 = ta.ema(xe2, T3)
xe4 = ta.ema(xe3, T3)
xe5 = ta.ema(xe4, T3)
xe6 = ta.ema(xe5, T3)

b3 = 0.7
c1 = -b3*b3*b3
c2 = 3*b3*b3+3*b3*b3*b3
c3 = -6*b3*b3-3*b3-3*b3*b3*b3
c4 = 1+3*b3+b3*b3*b3+3*b3*b3
nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3

// Buy Signal - Price is below T3 Average
buySignal3 = xPrice3 < nT3Average
sellSignal3 = xPrice3 > nT3Average

//NinjaTrader Settings.
acct = "Sim101"
ticker = "ES 12-23"
qty = 1
takeProfitTicks = 4
stopLossTicks = 16
tickSize = 0.25

takeProfitShort = close - takeProfitTicks * tickSize
stopLossShort = close + stopLossTicks * tickSize

OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }'
CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }'

IsUp = close > open
IsDown = close < open
PatternPlot = IsDown[2] and IsDown[1] and IsDown and close[1] <= high[0] and close[1] > close[0] and low[1] > low[0] and high[2] > high[1] and low[2] <= low[1]
if (PatternPlot and sellSignal3)
    strategy.entry('Short', strategy.short, alert_message=OCOMarketShort)
    strategy.exit('Close Short', 'Short', profit=takeProfitTicks, loss=stopLossTicks, alert_message=CloseAll)

//plotshape(PatternPlot, title="Custom Pattern", style=shape.circle, location=location.abovebar, color=color.red, size=size.small)


Mais.