JBravo Estratégia de tendência quantitativa

Autora:ChaoZhang, Data: 2023-12-27 14:53:07
Tags:

Estratégia geral

A Estratégia de Tendência Quantitativa JBravo é uma estratégia de tendência baseada em médias móveis.

O nome da estratégia é inspirado no personagem de desenho animado Johnny Bravo, representando uma decisão de negociação confiante e decisiva.

Princípio da estratégia

Um sinal de compra é gerado quando o preço de fechamento cruza acima da média móvel simples de 9 dias; Um sinal de venda é gerado quando o preço de fechamento cruza abaixo da média móvel exponencial de 20 dias.

Se as médias móveis de 9 dias, 20 dias e 180 dias estiverem todas em ascensão, e a média móvel de 9 dias estiver acima da média móvel de 20 dias, a média móvel de 20 dias estiver acima da média móvel de 180 dias, é gerado um forte sinal de compra.

Se as médias móveis de 9 dias, 20 dias e 180 dias estiverem todas em baixa e a média móvel de 9 dias estiver abaixo da média móvel de 20 dias, a média móvel de 20 dias estiver abaixo da média móvel de 180 dias, é gerado um forte sinal de venda.

Quando a linha de preço médio ponderado por volume cruza a média móvel exponencial de 20 dias para cima, um sinal GoGo Long é gerado; Quando a linha de preço médio ponderado por volume cruza a média móvel exponencial de 20 dias para baixo, um sinal GoGo Short é gerado.

Análise das vantagens

Esta estratégia combina as idéias de tendência seguindo e estratégias de ruptura. médias móveis podem determinar claramente a direção da tendência do mercado e reduzir a probabilidade de negócios errados. Ao mesmo tempo, ele usa flexivelmente o indicador VWAP para determinar o tempo de entrada, controlando os riscos enquanto favorece avanços no mercado.

Em comparação com o uso de médias móveis sozinhas, esta estratégia adiciona o mecanismo de entrada agressivo do GoGo Juice, que pode obter retornos mais elevados em tendências fortes.

Em geral, esta estratégia apresenta baixos tiros e uma rendibilidade estável.

Análise de riscos

Apesar da estratégia aumentar a força das entradas, os pontos de stop loss podem ser frequentemente acionados em mercados laterais.

Isto significa que a estratégia pode gerar um certo número de transações virtuais que não refletem realmente os movimentos dos preços de mercado.

Para reduzir os riscos, podemos ajustar o ciclo das médias móveis conforme apropriado; ou adicionar um módulo de stop loss para parar a perda quando as perdas atingem um certo nível.

Orientações de otimização

A estratégia pode ser otimizada nas seguintes direcções:

  1. Ajustar os parâmetros da média móvel e otimizar os parâmetros do ciclo para encontrar a combinação de parâmetros ideal

  2. Adicionar indicadores de volume para evitar sinais falsos em tempos de violentas flutuações de preços

  3. Aumentar os módulos de stop loss e definir regras de saída para controlar por perda de negociação

  4. Combinar selecções de setores de mercado acelerados para tornar as estratégias mais direcionadas

  5. Otimizar as proporções da posição de abertura, otimizar diferentes escalas para diferentes parâmetros

Conclusão

A JBravo Quantitative Trend Strategy integra análise média móvel e julgamento de tendência VWAP. Ela busca lucros estáveis a longo prazo, tendo um certo grau de mecanismos de negociação agressivos. A estratégia é adequada para participações de médio e longo prazo, com riscos médios e altos e altos retornos. Pode se tornar uma parte das estratégias de negociação de carteira com muito boa adaptabilidade ao mercado.

[/trans]


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © bradvaughn

//@version=4
strategy("JBravo Swing", overlay = false)

var buy_in_progress = false


//Moving Averages
smaInput1 = input(title="Display SMA 9", type=input.bool, defval=true)
smaInput2 = input(title="Display EMA 20", type=input.bool, defval=true)
smaInput4 = input(title="Display SMA 180", type=input.bool, defval=true)
colored_180 = input(false, title="Color-code 180 trend direction")
vwapInput = input(title="Display VWAP", type=input.bool, defval=true)

sma9 = sma(close, 9)
ema20 = ema(close, 20)
sma180 = sma(close, 180)

//Plot Moving Averages
plot(smaInput1 ? sma9 : na, color= color.red, title="SMA 9")
plot(smaInput2 ? ema20 : na, color = color.yellow, title="EMA 20")

// Plot VWAP
vwap1 = vwap(hlc3)
plot(vwapInput ? vwap1 : na, color = color.blue, title="VWAP")
vwaplong = vwap1 > ema20
vwapshort = vwap1 < ema20

//Color SMA 180 trend direction if selected
sma180_uptrend = sma(close, 180) > sma(close[2], 180)
colr = sma180_uptrend == true or colored_180 == false ? color.white : colored_180 == true ? color.gray : na
plot(smaInput4 ? sma180 : na, color = colr, title="SMA 180")

//Get value of lower end of candle
buyLow = iff(lowest(open, 1) < lowest(close, 1), lowest(open, 1), lowest(close, 1))
sellLow = lowest(close, 1)

// Find the lower MA for crossover sell condition
sellma = iff((sma9<ema20), sma9, ema20)


//SMA 9 trend direction
sma9_uptrend = sma(close, 9) > sma(close[2], 9)
//EMA 20 trend direction
ema20_uptrend = ema(close, 20) > sma(close[2], 20)

//Buy or sell if conditions are met
// Buy when the candle low is above the SMA9
// Sell when the candle low is below the lower of SMA9 and EMA20
Buy = iff(buy_in_progress == false and buyLow > sma9 == true, true, false)
Sell = iff(buy_in_progress == true and sellLow < sellma == true, true, false)

// Determine stong buy and strong sell conditions.
// If moving averages are all up, then this will qualify a buy as a strong buy.
// If the moving averages are not up (ie. down) then this will qualify a sell as a strong sell
StrongBuy = iff (Buy and sma9_uptrend and sma180_uptrend and ema20_uptrend and (sma9 > ema20) and (ema20 > sma180), true, false)
StrongSell = iff (Sell and not sma9_uptrend and not sma180_uptrend and not ema20_uptrend and (sma9 < ema20) and (ema20 < sma180), true, false)

//Update Trading status if bought or sold
if Buy
    buy_in_progress := true
if Sell
    buy_in_progress := false
    
// Clear Buy and Sell conditions if StrongBuy or StrongSell conditions exist.  
// This disables plotting Buy and Sell conditions
if StrongBuy
    Buy := false
if StrongSell
    Sell := false
    

//Display BUY/SELL indicators

plotshape(Buy,title="Buy", color=color.green, style=shape.arrowup,location=location.belowbar, text="Buy")
plotshape(StrongBuy,title="Strong Buy", color=color.green, style=shape.arrowup,location=location.belowbar, text="Strong Buy")
plotshape(Sell,title="Sell", color=color.red, style=shape.arrowdown,text="Sell")
plotshape(StrongSell,title="Strong Sell", color=color.red, style=shape.arrowdown,text="Strong Sell")

strategy.entry("GoGo Long", strategy.long, 1, when=vwaplong and vwapInput)
strategy.entry("GoGo Short", strategy.short, 1, when=vwapshort and vwapInput)

strategy.close("GoGo Long", when = vwapshort and vwapInput)
strategy.close("GoGo Short", when = vwaplong and vwapInput)


alertcondition(Buy, title="Buy Signal", message="Buy")
alertcondition(Sell, title="Sell Signal", message="Sell")

Mais.