JBravo Stratégie de tendance quantitative

Auteur:ChaoZhang est là., Date: 2023-12-27 14:53:07 Je vous en prie.
Les étiquettes:

Vue d'ensemble de la stratégie

La stratégie de tendance quantitative JBravo est une stratégie de suivi de tendance basée sur des moyennes mobiles.

Le nom de la stratégie est inspiré du personnage de dessin animé Johnny Bravo, qui représente une décision de trading confiante et décisive.

Principe de stratégie

Un signal d'achat est généré lorsque le prix de clôture dépasse la moyenne mobile simple de 9 jours; un signal de vente est généré lorsque le prix de clôture dépasse la moyenne mobile exponentielle de 20 jours.

Si les moyennes mobiles de 9 jours, 20 jours et 180 jours montent toutes et que la moyenne mobile de 9 jours est supérieure à la moyenne mobile de 20 jours, la moyenne mobile de 20 jours est supérieure à la moyenne mobile de 180 jours, un fort signal d'achat est généré.

Si les moyennes mobiles de 9 jours, 20 jours et 180 jours sont toutes en baisse et que la moyenne mobile de 9 jours est inférieure à la moyenne mobile de 20 jours, la moyenne mobile de 20 jours est inférieure à la moyenne mobile de 180 jours, un fort signal de vente est généré.

Lorsque la ligne de prix moyen pondéré par le volume traverse la moyenne mobile exponentielle à la hausse de 20 jours, un signal GoGo Long est généré; Lorsque la ligne de prix moyen pondéré par le volume traverse la moyenne mobile exponentielle à la baisse de 20 jours, un signal GoGo Short est généré.

Analyse des avantages

Cette stratégie combine les idées de suivi de tendance et de stratégie de rupture. Les moyennes mobiles peuvent clairement déterminer la direction de la tendance du marché et réduire la probabilité de mauvaises transactions. En même temps, il utilise de manière flexible l'indicateur VWAP pour déterminer le temps d'entrée, contrôlant les risques tout en favorisant les percées sur le marché.

Comparée à l'utilisation de moyennes mobiles seules, cette stratégie ajoute le mécanisme d'entrée agressif de GoGo Juice, qui peut obtenir des rendements plus élevés dans des tendances fortes.

Dans l'ensemble, cette stratégie présente de faibles recours et une rentabilité stable.

Analyse des risques

Bien que la stratégie augmente la force des entrées, les points de stop loss peuvent souvent être déclenchés sur les marchés latéraux.

Cela signifie que la stratégie peut générer un certain nombre de transactions virtuelles qui ne reflètent pas réellement les mouvements des prix du marché.

Pour réduire les risques, nous pouvons ajuster le cycle des moyennes mobiles comme il convient; ou ajouter un module de stop loss pour arrêter la perte lorsque les pertes atteignent un certain niveau.

Directions d'optimisation

La stratégie peut être optimisée dans les directions suivantes:

  1. Ajustez les paramètres de moyenne mobile et optimiser les paramètres de cycle pour trouver la combinaison optimale de paramètres

  2. Ajouter des indicateurs de volume pour éviter de faux signaux en période de fortes fluctuations des prix

  3. Augmenter les modules de stop loss et définir des règles de sortie pour contrôler les pertes par transaction

  4. Combiner les sélections de secteurs chauds du marché pour rendre les stratégies plus ciblées

  5. Optimiser les proportions de position d'ouverture, optimiser différentes échelles pour différents paramètres

Conclusion

La stratégie de tendance quantitative JBravo intègre l'analyse moyenne mobile et le jugement de tendance VWAP. Elle vise des profits stables à long terme tout en ayant un certain degré de mécanismes de négociation agressifs.

Je ne sais pas.


/*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")

Plus de