Стратегия экспоненциального сглаженного стохастического осциллятора - это модифицированная версия традиционного стохастического индикатора путем добавления параметра экспоненциального веса для корректировки чувствительности стохастика и генерации торговых сигналов.
Ядром экспоненциально сглаженной стохастической стратегии является параметр экспоненциального веса ex. Традиционный стохастик рассчитывается как:
s = 100 * (close - lowest low) / (highest high - lowest low)
При экспоненциальном параметре формула становится:
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
Увеличение экспрессии делает индикатор менее чувствительным, а уменьшение экспрессии делает его более чувствительным.
Сигналы покупки генерируются, когда ks пересекает перекупленный уровень. Сигналы продажи генерируются, когда ks пересекает перепроданный уровень.
По сравнению с традиционной стохастической стратегией стратегия экспоненциально сглаженного стохастического осциллятора имеет следующие преимущества:
Стратегия экспоненциального сглаженного стохастического осциллятора также имеет следующие риски:
Стратегия экспоненциально сглаженного стохастического осциллятора может быть оптимизирована из следующих аспектов:
Стратегия экспоненциального сглаженного стохастического осциллятора генерирует более надежные торговые сигналы путем корректировки чувствительности стохастического индикатора. Она может эффективно отслеживать среднесрочные и долгосрочные тенденции и также может быть оптимизирована в краткосрочную стратегию.
/*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))