Cette stratégie utilise le volume sur le solde modifié (OBV) et le MACD pour générer des signaux de trading.
Calculer la moyenne mobile simple (SMA) pour déterminer la tendance du marché.
Il modifie le calcul de l'OBV basé sur le prix de clôture et la relation de prix de clôture précédente pour rendre l'OBV plus sensible.
Calculer le MACD sur OBV modifié. Le MACD se compose d'une ligne rapide, d'une ligne lente et d'un histogramme pour identifier le changement de momentum du volume.
Lorsque le MACD croise l'or et monte, un signal d'achat est généré.
Lorsque le MACD est à la baisse, un signal de vente est déclenché.
Vérifiez les SMA pour éviter les transactions inutiles pendant les marchés sans tendance.
Les OBV modifiés sont plus sensibles pour détecter les changements de volume précoces.
Le MACD indique clairement la variation de la dynamique du volume et les niveaux clés.
Le signal combiné de volume et de prix améliore la précision.
La SMA filtre le faux signal en déterminant la tendance du marché.
Une logique stratégique claire et un grand espace d'optimisation.
Les OBV modifiés peuvent générer de faux signaux, les besoins filtrés par d'autres indicateurs.
Un mauvais réglage des paramètres MACD peut faire échouer les transactions ou provoquer de faux signaux.
Faites attention aux spécificités des stocks pour éviter les pertes.
Surveiller l'état du marché car la stratégie peut ne pas fonctionner pour des scénarios particuliers.
Le risque d'excès d'efficacité des tests de retour peut entraîner une détérioration des performances dans le trading en direct.
Tester différentes combinaisons de périodes SMA pour optimiser la détermination de la tendance du marché.
Testez les paramètres MACD pour mieux identifier la variation de l'élan du volume.
Ajouter d'autres indicateurs comme filtre, tels que KDJ, RSI, etc.
Ajouter le stop loss à la perte limite par transaction.
Optimiser la gestion de l'argent pour améliorer la rentabilité globale.
Différences de paramètres d'essai entre les stocks
La stratégie combine OBV et MACD modifiés pour obtenir une synthèse du volume et des prix. Elle peut capturer les changements de momentum du volume tôt et générer des signaux de trading. Par rapport à l'utilisation d'OBV ou MACD seul, cette stratégie offre des opportunités de trading plus fiables. Cependant, des risques de faux signaux existent et d'autres optimisations sur les indicateurs et les paramètres, ainsi que la gestion de l'argent sont nécessaires pour obtenir des profits stables dans le trading en direct.
/*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)