Estratégia de negociação de otimização de crossover de média móvel


Data de criação: 2023-12-19 13:37:33 última modificação: 2023-12-19 13:37:33
cópia: 0 Cliques: 683
1
focar em
1621
Seguidores

Estratégia de negociação de otimização de crossover de média móvel

Visão geral

A estratégia utiliza a estratégia de cruzamento de média móvel convencional, definindo três médias móveis de diferentes períodos, construindo uma forma de golden forks usando médias móveis de 9 períodos, 50 períodos e 100 períodos, e formando um sinal de compra de golden forks em condições de tendência ascendente na linha média média, atravessando a linha média média na linha média média curta. O nome da estratégia é “Otimizada estratégia de negociação de golden forks de média móvel cruzada”.

Princípio da estratégia

A estratégia usa três médias móveis de 9 períodos, 50 períodos e 100 períodos. Dentre elas, a média móvel de 9 períodos é a média de curto prazo, a média móvel de 50 períodos é a média de médio prazo e a média móvel de 100 períodos é a média de longo prazo. O sinal de negociação da estratégia vem do cruzamento da média de curto prazo com a média de médio prazo.

Análise de vantagens

Em comparação com a estratégia de cruzamento de duas médias móveis convencionais, a estratégia adiciona condições para o julgamento de tendências de médio e longo prazo antes de gerar um sinal de negociação, podendo filtrar efetivamente parte dos sinais inativos. Em caso de tendências de longo prazo não claras, a estratégia não produzirá sinais e pode evitar ser encaixada. Além disso, a estratégia é adequada para capturar comportamentos tendenciais em curto e médio prazo, reduzindo a probabilidade de entrar em agitação.

Análise de Riscos

A estratégia requer ajustes na combinação de períodos da linha média ao definir os parâmetros. Diferentes combinações de períodos afetam o efeito da estratégia. Se os parâmetros de ciclo forem mal definidos, há o risco de produzir muitos sinais falsos. Além disso, os comerciantes precisam estar atentos ao potencial risco sistemático e parar os prejuízos a tempo para evitar o risco.

Direção de otimização

Pode ser considerado em combinação com outros indicadores para auxiliar a julgar a tendência do mercado, como MACD, BOLL, etc., para definir condições de entrada mais rigorosas, ou em combinação com os indicadores de taxa de flutuação para construir uma média móvel adaptável, permitindo que os parâmetros podem ser ajustados automaticamente de acordo com o ambiente do mercado, para otimizar ainda mais a estratégia.

Resumir

A estratégia baseia-se no cruzamento de médias móveis duplas convencionais, adicionando o julgamento de medias e condições de filtro de longo prazo, que filtram efetivamente os falsos sinais, e é adequada para capturar a tendência de curto e médio prazo. É uma estratégia de acompanhamento de tendências simples e prática.

Código-fonte da estratégia
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// Input
switch1=input(true, title="Enable Bar Color?")
switch2=input(false, title="Show Fast Moving Average")
switch3=input(true, title="Show Slow Moving Average")

//Calculate Moving Averages
movingaverage_fast = sma(close, input(9))
movingaverage_slow = sma(close, input(100))
movingaverage_normal= sma(close, input(50))

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// Calculation
bullish_cross = crossover(movingaverage_fast, movingaverage_normal)
bearish_cross = crossunder(movingaverage_fast, movingaverage_normal)

//Entry and Exit
if bullish_cross and window() and movingaverage_slow > movingaverage_normal
    strategy.entry("long", strategy.long)

strategy.close("long", when = bearish_cross and window())

// Colors
bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue
barcolor(switch1?bartrendcolor:na)

// Output
plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)

bgcolor(color = showDate and window() ? color.gray : na, transp = 90)