Стратегия экспоненциально сглаженного стохастического осциллятора

Автор:Чао Чжан, Дата: 2024-01-18 15:53:41
Тэги:

img

Обзор

Стратегия экспоненциального сглаженного стохастического осциллятора - это модифицированная версия традиционного стохастического индикатора путем добавления параметра экспоненциального веса для корректировки чувствительности стохастика и генерации торговых сигналов.

Логика стратегии

Ядром экспоненциально сглаженной стохастической стратегии является параметр экспоненциального веса 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 пересекает перепроданный уровень.

Преимущества

По сравнению с традиционной стохастической стратегией стратегия экспоненциально сглаженного стохастического осциллятора имеет следующие преимущества:

  1. Чувствительность стохастического показателя может свободно регулироваться путем изменения экспоненциального веса для контроля частоты торговли.
  2. Увеличенный экспоненциальный вес может отфильтровать шум и генерировать более стабильные торговые сигналы.
  3. Объединение индикаторов из разных временных рамок может обеспечить подтверждение в несколько временных рамок и повысить надежность сигнала.

Риски

Стратегия экспоненциального сглаженного стохастического осциллятора также имеет следующие риски:

  1. При слишком большом экспоненциальном весе некоторые торговые возможности могут быть упущены из-за чрезмерной фильтрации сигнала.
  2. Показатель подвержен шуму и неправильным перекресткам. Параметры должны быть настроены, чтобы обеспечить надежные сигналы перекрестного перекрестка.
  3. Необходимо определить оптимальный диапазон параметров для разных рынков. Неправильные настройки параметров могут повлиять на эффективность стратегии.

Области улучшения

Стратегия экспоненциально сглаженного стохастического осциллятора может быть оптимизирована из следующих аспектов:

  1. Комбинируйте с другими индикаторами, такими как MACD и скользящая средняя, чтобы отфильтровать сигналы и уменьшить ложные сигналы.
  2. Добавить механизмы стоп-лосса для эффективного контроля рисков.
  3. Оптимизируйте экспоненциальный вес параметра, чтобы найти оптимальные комбинации параметров.
  4. Увеличить составляемость, например, объединить с сезонными показателями, показателями структуры рынка для дальнейшего улучшения стабильности.

Заключение

Стратегия экспоненциального сглаженного стохастического осциллятора генерирует более надежные торговые сигналы путем корректировки чувствительности стохастического индикатора. Она может эффективно отслеживать среднесрочные и долгосрочные тенденции и также может быть оптимизирована в краткосрочную стратегию.


/*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))

Больше