Stratégie de trading quantitative basée sur l'OBV et le MACD modifiés


Date de création: 2023-11-15 17:58:42 Dernière modification: 2023-11-15 17:58:42
Copier: 0 Nombre de clics: 858
1
Suivre
1617
Abonnés

Stratégie de trading quantitative basée sur l’OBV et le MACD modifiés

Aperçu

La stratégie est basée sur l’indicateur de marée d’énergie modifié (OBV) et le MACD pour juger des signaux de négociation. Elle appartient à la stratégie de synthèse quantitative. Elle intègre l’indice boursier MACD et l’OBV modifié comme signal de synthèse quantitative, visant à trouver des opportunités de négociation de ruptures fortes et faibles dans le prix des actions.

Principe de stratégie

  1. Calculer une moyenne mobile simple (SMA) pour déterminer la tendance du marché boursier

  2. Il modifie la manière dont l’OBV est calculé en fonction de la relation entre le prix de clôture et le prix de clôture de la veille, ce qui le rend plus sensible.

  3. Calculer la MACD sur un OBV modifié. La MACD est composée de lignes rapides, lentes et de colonnes de MACD, qui permettent de détecter la tendance à la variabilité quantitative.

  4. Si le MACD est en hausse, c’est un signal d’achat.

  5. Le MACD est considéré comme un signal de vente lorsqu’il est en position de mort et en direction du bas.

  6. Le prix de l’option est fixé par la SMA, qui a décidé d’éviter toute transaction inutile.

Analyse des avantages

  1. Les modifications de l’OBV sont plus sensibles et permettent de détecter à l’avance les variations de la quantité d’énergie.

  2. Le MACD est un indicateur de la tendance et des points critiques.

  3. Signal de synthèse de prix et de quantité pour améliorer la précision du signal.

  4. Le SMA aide à détecter les tendances de la bourse et à filtrer les signaux erronés.

  5. Les stratégies sont claires et faciles à comprendre, et les paramètres ont beaucoup de place.

Analyse des risques

  1. La modification de l’OBV est susceptible de générer de faux signaux et nécessite un filtrage avec d’autres indicateurs.

  2. Un paramètre MACD mal réglé peut entraîner des opportunités manquées ou des signaux erronés.

  3. Il est nécessaire de se concentrer sur l’information sur les actions elles-mêmes pour éviter les pertes causées par des problèmes individuels.

  4. Il faut tenir compte de l’environnement du marché et ne s’applique pas à des situations exceptionnelles.

  5. Les données de retouche sont adaptées aux risques, et les disques fixes peuvent être moins efficaces.

Direction d’optimisation

  1. Test de différentes combinaisons de cycles SMA afin d’optimiser les tendances des marchés majeurs.

  2. Testez les paramètres MACD pour déterminer si la quantité d’optimisation peut changer.

  3. Ajout d’autres indicateurs pour filtrer les signaux de faille, tels que KDJ, RSI, etc.

  4. Ajouter des stratégies de stop-loss pour contrôler les pertes individuelles

  5. Optimiser les stratégies de gestion des fonds et améliorer l’efficacité globale des bénéfices.

  6. Tester la différence entre les paramètres de différentes stratégies boursières.

Résumer

La stratégie de fusion modifie les indicateurs OBV et MACD, permettant une combinaison de prix et de quantités capables de capturer à l’avance les changements dans la dynamique quantitative des actions, générant ainsi un signal de négociation. Comparé à l’utilisation de l’OBV ou du MACD seul, la stratégie peut offrir des opportunités de vente et d’achat plus fiables.

Code source de la stratégie
/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-14 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/
// © stocktechbot

//@version=5
strategy("Altered OBV On MACD", overlay=true, margin_long=100, margin_short=100)

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © stocktechbot
//@version=5
//SMA Tredline
out = ta.sma(close, 200)
outf = ta.sma(close, 50)
outn = ta.sma(close, 90)
outt = ta.sma(close, 21)
outthree = ta.sma(close, 9)
//sma plot
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)
plot(out, color=color.blue, title="MA200", offset=offset)
plot(outf, color=color.maroon, title="MA50", offset=offset)
plot(outn, color=color.orange, title="MA90", offset=offset)
plot(outt, color=color.olive, title="MA21", offset=offset)
plot(outthree, color=color.fuchsia, title="MA9", offset=offset)

fast_length = input(title="Fast Length", defval=12)
slow_length = input(title="Slow Length", defval=26)
chng = 0
obv = ta.cum(math.sign(ta.change(close)) * volume)
if close < close[1] and (open < close)
    chng := 1
else if close > close[1]
    chng := 1
else
    chng := -1
obvalt = ta.cum(math.sign(chng) * volume)
//src = input(title="Source", defval=close)
src = obvalt
signal_length = input.int(title="Signal Smoothing",  minval = 1, maxval = 50, defval = 9)
sma_source = input.string(title="Oscillator MA Type",  defval="EMA", options=["SMA", "EMA"])
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"])

// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal
//hline(0, "Zero Line", color=color.new(#787B86, 50))
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below)))
//plot(macd, title="MACD", color=col_macd)
//plot(signal, title="Signal", color=col_signal)
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
//BUY Signal
mafentry =ta.sma(close, 50) > ta.sma(close, 90)
//matentry = ta.sma(close, 21) > ta.sma(close, 50)
matwohun = close > ta.sma(close, 200)
twohunraise = ta.rising(out, 2)
twentyrise = ta.rising(outt, 2)
macdrise = ta.rising(macd,2)
macdlong = ta.crossover(macd, signal)
longCondition=false
if macdlong and macdrise
    longCondition := true

if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)
//Sell Signal
mafexit =ta.sma(close, 50) < ta.sma(close, 90)
matexit = ta.sma(close, 21) < ta.sma(close, 50)
matwohund = close < ta.sma(close, 200)
twohunfall = ta.falling(out, 3)
twentyfall = ta.falling(outt, 2)
shortmafall = ta.falling(outthree, 1)
macdfall = ta.falling(macd,1)
macdsell = macd < signal
shortCondition = false
if macdfall and macdsell and (macdLine < signalLine) and ta.falling(low,2)
    shortCondition := true


if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)