L'oscillateur dynamique est basé sur l'indicateur Dynamo proposé par E. Marshall Wall dans un article publié dans le magazine Futures en juillet 1996.
Les principaux avantages de cette stratégie sont les suivants:
En utilisant l'indicateur Dynamo, il élimine l'impact des tendances et génère des signaux de trading plus fiables.
En combinant les zones de surachat et de survente, il peut produire des signaux relativement précis aux points tournants.
Les principaux risques de cette stratégie sont les suivants:
La stratégie peut être optimisée dans les aspects suivants:
/*backtest start: 2023-01-15 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 10/04/2017 // In July 1996 Futures magazine, E. Marshall Wall introduces the // Dynamic Momentum Oscillator (Dynamo). Please refer to this article // for interpretation. // The Dynamo oscillator is a normalizing function which adjusts the // values of a standard oscillator for trendiness by taking the difference // between the value of the oscillator and a moving average of the oscillator // and then subtracting that value from the oscillator midpoint. // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading //////////////////////////////////////////////////////////// strategy(title="Dynamo", shorttitle="Dynamo") OscLen = input(10, minval=1) MALen = input(20, minval=1) HiBand = input(77, minval=1) LowBand = input(23) reverse = input(false, title="Trade reverse") hline(HiBand, color=red, linestyle=line) hline(LowBand, color=green, linestyle=line) xOscK = stoch(close, high, low, OscLen) xOscAvg = sma(xOscK, OscLen) xMAVal = sma(xOscAvg, MALen) maxNum = 9999999 LowestSoFar = iff(xOscAvg < nz(LowestSoFar[1], maxNum), xOscAvg, nz(LowestSoFar[1], maxNum)) HighestSoFar = iff(xOscAvg > nz(HighestSoFar[1]), xOscAvg, nz(HighestSoFar[1])) MidPnt = (LowestSoFar + HighestSoFar) / 2 nRes = MidPnt - (xMAVal - xOscAvg) pos = iff(nRes > HiBand, 1, iff(nRes < LowBand, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nRes, color=blue, title="Dynamo")