Stratégie de négociation à double MACD StochRSI

Auteur:ChaoZhang est là., Date: le 22 septembre 2023 à 16h55
Les étiquettes:

Résumé

Cette stratégie combine les deux indicateurs MACD et l'oscillateur StochRSI pour les signaux commerciaux. Le double MACD utilise différents paramètres pour des effets rapides et lents, tandis que StochRSI vérifie la divergence de momentum.

La logique de la stratégie

Les signaux commerciaux sont basés sur:

  • MACD double: le MACD rapide utilise une courte période de rétrospective, le MACD lent utilise une longue période de rétrospective pour des effets de lissage.

  • StochRSI: Calcule la fourchette haute/basse du RSI pour identifier les niveaux de surachat/survente.

Règles d'entrée:

  • Long: le MACD rapide franchit la ligne zéro et le MACD lent la ligne zéro.

  • Short: le MACD rapide passe sous la ligne zéro et le MACD lent passe sous la ligne zéro.

Les avantages

  • Le double MACD évite les fausses ruptures pour une meilleure qualité du signal.

  • StochRSI identifie les niveaux de surachat/survente pour éviter les poursuites.

  • Considère l'orientation générale de la tendance afin de réduire les pertes de contre-tendance.

  • La validation intertemporelle améliore l'efficacité du signal.

  • Le stop-loss contrôle le risque.

Les risques

  • Le MACD est sujet à de faux signaux, nécessite une validation supplémentaire.

  • Des paramètres StochRSI médiocres peuvent manquer les transactions.

  • Les niveaux d'arrêt des pertes peuvent être trop conservateurs ou agressifs.

  • Manque de gestion de position pour les arrêts dynamiques.

Améliorations:

  1. Ajoutez des filtres comme le volume ou la pente MA.

  2. Optimiser ou ajouter d'autres oscillateurs.

  3. Suivi dynamique de la perte.

  4. Ajoutez la taille de la position en fonction des performances.

Optimisation

Principaux domaines à optimiser:

  1. Optimiser les paramètres des indicateurs.

  2. Ajoutez des filtres pour éliminer les faux signaux.

  3. Optimisez les arrêts pour une traînée dynamique.

  4. Incorporer une dimensionnement des positions basé sur les performances de la stratégie.

  5. Ajoutez l'apprentissage automatique pour l'optimisation automatique.

Résumé

La stratégie combine plusieurs indicateurs pour des signaux plus forts, mais nécessite une optimisation des paramètres, du filtrage, des arrêts dynamiques pour réduire les transactions indésirables et améliorer la rentabilité.


/*backtest
start: 2023-09-14 00:00:00
end: 2023-09-21 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2



//This strategy is an ongoing work in progress. Last updated 8/6/16.
//Feel free to modify it as you see fit, if you do borrow code then send me a link so I 
//can see and maybe borrow some of your code to improve this.
//Thanks to ChrisMoody who I stole the code for setting custom resolution from.
//
//more info in comments at end of script





strategy("MACDouble & StochRSI w/ safeties v0.3", overlay=true)

source = close
useCurrentRes = input(true, title="Uncheck to use custom res./intrv. for 2nd MACD indicator")
resCustom = input(title="Resolution/interval to use for 2nd MACD:",  defval="45")
res = useCurrentRes ? timeframe.period : resCustom

useCurrentRes2 = input(true, title="Uncheck to use custom res/intrv for StochRSI")
resCustom2 = input(title="Resolution to use for StochRSI indicator:",  defval="45")
res2 = useCurrentRes2 ? timeframe.period : resCustom2


//MACD1
fastLength = input(10, title="MACD fast length")
slowlength = input(21, title="MACD slow length")
sigLength = input(9, title="MACD signal length")

MACD = ema(source, fastLength) - ema(source, slowlength)
signal = sma(MACD, sigLength)
delta = MACD - signal



//MACD2
fastLength2 = input(31, title= "2nd MACD fast length")
slowlength2 = input(63, title= "2nd MACD slow length")
sigLength2 = input(30, title= "2nd MACD signal length")

MACD2 = ema(source, fastLength2) - ema(source, slowlength2)
signal2 = sma(MACD2, sigLength2)
delta2 = MACD2 - signal2

MACDRes = security(syminfo.tickerid, res, MACD2)
signalRes = security(syminfo.tickerid,res, signal2)
deltaRes = security(syminfo.tickerid, res, delta2)


uptrend = (close + high)/(close[1] + high[2])
downtrend = (close + low)/(close[1] + low[2])

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(11, minval=1)
lengthStoch = input(11, minval=1)
src = close

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
RSI_buyTrig = input(90)
RSI_sellTrig = input(20)

kRes = security(syminfo.tickerid, res2, k)
dRes = security(syminfo.tickerid, res2, d)


if (delta > 0) and (year>2012) and (deltaRes > 0) and (uptrend > 1) and (  kRes and dRes < RSI_buyTrig) and (kRes > dRes)
    strategy.entry("buy", strategy.long, comment="buy")
    

if (delta < 0) and (year>2012) and (deltaRes < 0) and (downtrend < 1) and ( kRes and dRes > RSI_sellTrig) and (kRes < dRes)
    strategy.entry("sell", strategy.short, comment="sell")
	strategy.exit("sell", loss = 9000)



//  RELEASE NOTES, ETC
//
// The core starting idea for this backtesting script came from the desire to have two traditional
//MACD indicators: one 'fast' and one 'slow'. The slow one is to pretty much smooth out noisy signals
//so that short term changes in price are ignored (ideally). 
//	A brief version history
//		v0.1 - Basic two MACD indicators script
//      v0.2 - Added StochRSI indicator
//      v0.21- Added primitive uptrend/downtrend safety condition 
//      v0.22- Added changable time resolution for MACDslow
//      v0.23- Added exit safeties conditional on loss threshold   
//      v0.3 - Added changeable resolution for StochRSI
//	Future changes planned for next release:
//		-Fine tuning exit safeties
//      -Major overhaul of trade logic/triggers (may be forked as a different script)
//
//I am more than happy to discuss any difficulties you are having, questions about the script, or improvement suggestions.
//I am not a coder and my background is actually in economics, so feel free to debug ;)
//Feel free to tip me on the indcluded bitcoin address on TV as well
// tradingview.com/u/RyanMartin 
// rjmarti2@millersville.edu


Plus de