Stratégie de négociation quantitative basée sur le Brainstorming et le MACD

Auteur:ChaoZhang est là., Date: 2024-02-23 14h30
Les étiquettes:

基于布林带和MACD的量化交易策略

Résumé

La stratégie est une stratégie de trading quantitative basée sur les indices Brin et MACD. Elle combine les transactions de rupture de Brin et le suivi des tendances du MACD, dans le but d'améliorer la qualité des signaux de trading.

Les principes stratégiques

La stratégie est basée principalement sur les signaux de trading des indicateurs Brin et MACD.

L'indicateur de la courbe de Brin consiste en une courbe intermédiaire, une courbe ascendante et une courbe descendante. Il génère des signaux d'achat lorsque le prix dépasse la courbe; il génère des signaux de vente lorsque le prix dépasse la courbe.

L'indicateur MACD reflète la relation entre les moyennes mobiles à court et à long terme et détermine le moment de l'achat et de la vente à travers la ligne de décalage et la ligne de signal. Cette stratégie est combinée à l'utilisation de l'indicateur MACD pour filtrer les signaux de négociation de la bande de coupe, produisant des signaux d'achat plus efficaces lorsque la ligne de signal dépasse la ligne de décalage.

Dans l'ensemble, la stratégie combine le suivi des tendances de la courbe de Brynne avec l'avantage de la moyenne mobile du MACD, visant à capturer les plus grandes fluctuations du marché dans une tendance forte.

Les avantages stratégiques

  1. Les signaux de négociation sont plus fiables en combinaison avec le Brainstorm et le MACD.

  2. Dans les marchés tendance, le suivi de la tendance de la courbe de Bryn et l'intersection de la moyenne mobile du MACD peuvent produire des signaux d'entrée plus forts.

  3. Les deux indicateurs permettent de filtrer efficacement les faux signaux et de réduire le risque de transaction.

  4. Les paramètres stratégiques optimisent l'espace et peuvent être ajustés en fonction de différentes variétés et cycles.

Risque stratégique

  1. Les signaux de négociation générés par les Brin Bands et le MACD peuvent être fréquents et entraîner un risque d'effet de levier dans les marchés turbulents.

  2. Le MACD est en zone basse, avec trois signaux d'achat de la fourche dorée, et peut être confronté à un risque de baisse inverse.

  3. Les stratégies utilisent plus d'indicateurs, l'optimisation des paramètres et le test des stratégies sont plus difficiles.

Les risques ci-dessus peuvent être maîtrisés par des méthodes telles que l'ajustement approprié du temps de possession, la mise en place d'une ligne de stop-loss, l'optimisation des paramètres.

Optimisation stratégique

  1. Test des paramètres de la courroie de Bryn pour des cycles plus longs et réduire la fréquence des transactions.

  2. Optimiser les paramètres de la ligne moyenne rapide du MACD pour améliorer la sensibilité de l'indicateur.

  3. L'ajout de filtres pour d'autres indicateurs, tels que KDJ, RSI, etc., améliore la qualité du signal.

  4. Il est possible de configurer des stop-loss dynamiques, des stop-loss automatiques et de contrôler le risque d'une seule transaction.

Résumé

Cette stratégie, qui intègre le filtrage de l'indicateur MACD et les opérations de rupture de la courroie de Braille, permet en théorie de produire des signaux de trading de haute qualité. Des résultats de retouche meilleurs peuvent être obtenus grâce à l'optimisation des paramètres et au contrôle des risques.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Nabz-BBMACD-2022-V1.1", shorttitle="BBM-Nabz", overlay=true)


// My 1st Pine Scrpt Indicator
// Work on best on 1Hr Chart
// Open for Help/Donations.


var float lastentry=1
int result = 0
float x = 0
drawshape = false

/////////////EMA
shortest = ta.ema(close, 20)
short = ta.ema(close, 50)
longer = ta.ema(close, 100)
longest = ta.ema(close, 200)

plot(shortest, color = color.red)
plot(short, color = color.orange)
plot(longer, color = color.aqua)
plot(longest, color = color.blue)

///////////// RSI
RSIlength = input(6,title="RSI Period Length") 
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = ta.rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input.int(200, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = ta.sma(price, BBlength)
BBdev = BBmult * ta.stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = ta.crossover(source, BBlower)
sellEntry = ta.crossunder(source, BBupper)



////////////// MACD
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na


///////////Strategy

bool tcu = not (ta.crossunder(price[0],shortest[0]))


if (((price[1]<BBlower[1]) and (ta.crossover(price,BBlower))))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 1st IF")
    
if (((ta.crossover(delta, 0.0) and (ta.crossover(price,BBlower)))))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 2nd IF")    
    
if (((ta.crossover(delta, 0.0)) and (low[0]>shortest[0])) and (price[1]<low))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 3rd IF")   //else

if (((ta.crossover(delta, 0.01)) and (high[1]<BBupper)) and (tcu))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 4th IF")

       
if ((ta.crossunder(low[0],shortest[0]) and close<shortest))
    strategy.close(id="RSI_BB_L", comment="Close by 1st IF")
    
    
    
if (price<lastentry)
    drawshape := true
    
if (price<strategy.opentrades.entry_price(0)/1.01175734321249)
    strategy.close(id="RSI_BB_L", comment="Close by 2nd IF")



plot(strategy.opentrades.entry_price(0), color=color.yellow)


En savoir plus