La stratégie de l'oscillateur stochastique lissé exponentiel est une version modifiée de l'indicateur stochastique traditionnel en ajoutant un paramètre de poids exponentiel pour ajuster la sensibilité du stochastique et générer des signaux de trading.
Le noyau de la stratégie stochastique lissée exponentiellement réside dans le paramètre de poids exponentiel ex. La stochastique traditionnelle est calculée comme suit:
s = 100 * (close - lowest low) / (highest high - lowest low)
Avec le paramètre exponentiel, la formule devient:
exp = ex<10? (ex)/(10-ex) : 99
s = 100 * (close - lowest low) / (highest high - lowest low)
ks = s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50
:-math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50
L'augmentation de l'exp rend l'indicateur moins sensible tandis que la diminution de l'exp le rend plus sensible.
Les signaux d'achat sont générés lorsque ks franchit les niveaux de surachat. Les signaux de vente sont générés lorsque ks franchit les niveaux de survente.
Comparée à la stratégie stochastique traditionnelle, la stratégie de l'oscillateur stochastique lissé exponentiel présente les avantages suivants:
La stratégie de l'oscillateur stochastique lissé exponentiellement comporte également les risques suivants:
La stratégie de l'oscillateur stochastique lissé exponentiel peut être optimisée par les aspects suivants:
La stratégie de l'oscillateur stochastique lissé exponentiel génère des signaux de trading plus fiables en ajustant la sensibilité de l'indicateur stochastique.
/*backtest start: 2023-01-11 00:00:00 end: 2024-01-17 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/ // © faytterro //@version=5 strategy("Exponential Stochastic Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100) len=input.int(14, "length") ex=input.int(2, title="exp", minval=1, maxval=10) exp= ex<10? (ex)/(10-ex) : 99 s=100 * (close - ta.lowest(low, len)) / (ta.highest(high, len) - ta.lowest(low, len)) ks=s>50? math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50 : -math.pow(math.abs(s-50),exp)/math.pow(50,exp-1)+50 plot(ks, color= color.white) bot=input.int(20) top=input.int(80) longCondition = ta.crossover(ks, bot) and bar_index>0 if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = ta.crossunder(ks, top) and bar_index>0 if (shortCondition) strategy.entry("My Short Entry Id", strategy.short) // strategy.close("My Long Entry Id") alertcondition(longCondition, title = "buy") alertcondition(shortCondition, title = "sell") h1=hline(top) h2=hline(bot) h3=hline(100) h4=hline(0) fill(h1,h3, color= color.rgb(255,0,0,200-top*2)) fill(h2,h4, color= color.rgb(0,255,0,bot*2))