Стратегия поиска максимумов и минимумов Parabol Oscillator


Дата создания: 2024-02-20 16:01:12 Последнее изменение: 2024-02-20 16:01:12
Копировать: 0 Количество просмотров: 568
1
Подписаться
1617
Подписчики

Стратегия поиска максимумов и минимумов Parabol Oscillator

Обзор

Эта стратегия используется для определения тенденций и волатильности цены путем вычисления средних и дифференцированных значений за различные периоды, чтобы идентифицировать высокие и низкие точки.

Стратегический принцип

Центральная логика этой стратегии заключается в том, чтобы рассчитать средние и дифференциальные значения для различных недавних периодов. В частности, рассчитывать средние значения ((ma, mb, mc) и дифференциальные значения ((da, dB, dc) для последних 5, 4 и 3 дней соответственно. Затем выбирать наиболее крупные из них, выбирая наибольший дифференциальный период, представляющий собой текущую тенденцию.

Таким образом, когда цена прорывается вверх или вниз, наблюдаются большие изменения в цикле и дифференциации, представляющих тенденцию. Таким образом, конечный вывод WG также имеет большие изменения, что позволяет идентифицировать высокие и низкие точки.

Анализ преимуществ

Этот подход, основанный на различных циклах, позволяет четко идентифицировать переломные моменты цены. По сравнению с одним циклом, этот метод, включающий несколько циклов, позволяет повысить точность и своевременность суждения.

Вычисление средней и квадратной разницы также очень простое и эффективное, небольшой объем кода, и очень чувствительное к внезапным изменениям цен, что позволяет быстро обнаружить прорыв.

Анализ рисков

В этой стратегии используются более короткие периоды, и для средне-длинных линий суждение может быть недостаточно точным и всеобъемлющим. Короткосрочные ценовые колебания могут привести к ошибочным суждениям.

Кроме того, настройка весов средней и квадратной разницы также влияет на эффективность суждения, и если настройка весов неправильная, сигнал может быть искажен.

Направление оптимизации

Можно попробовать добавить больше различных циклов, составляя циклические комбинации, чтобы сделать суждение более полным. Например, добавить 10 дней, 20 дней и т. д. средне- и долгосрочные циклические суждения.

Также можно экспериментировать с различными вариантами установки весов, повышая гибкость установки весов. Добавлена оптимизация параметров, позволяющая автоматически корректировать вес в зависимости от рыночных условий, что снижает вероятность ошибочных выводов.

Кроме того, можно использовать другие показатели, например, аномальные объемы торгов, чтобы избежать ошибочных суждений в арбитражной торговле.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-02-12 00:00:00
end: 2024-02-19 00:00:00
period: 12h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("x²", overlay=false)


a1=(close[2]-close[3])/1
a2=(close[1]-close[3])/4
a3=(close[0]-close[3])/9

b1=(close[3]-close[4])/1
b2=(close[2]-close[4])/4
b3=(close[1]-close[4])/9
b4=(close[0]-close[4])/16

c1=(close[4]-close[5])/1
c2=(close[3]-close[5])/4
c3=(close[2]-close[5])/9
c4=(close[1]-close[5])/16
c5=(close[0]-close[5])/25

ma=(a1+a2+a3)/3
da=(a1-ma)*(a1-ma)
da:=da+(a2-ma)*(a2-ma)
da:=da+(a3-ma)*(a3-ma)
da:=sqrt(da)
da:=min(2, da)
da:=1-da/2
da:=max(0.001, da)


mb=(b1+b2+b3+b4)/4
db=(b1-mb)*(b1-mb)
db:=db+(b2-mb)*(b2-mb)
db:=db+(b3-mb)*(b3-mb)
db:=db+(b4-mb)*(b4-mb)
db:=sqrt(db)
db:=min(2, db)
db:=1-db/2
db:=max(0.001, db)

mc=(c1+c2+c3+c4+c5)/5
dc=(c1-mc)*(c1-mc)
dc:=dc+(c2-mc)*(c2-mc)
dc:=dc+(c3-mc)*(c3-mc)
dc:=dc+(c4-mc)*(c4-mc)
dc:=dc+(c5-mc)*(c5-mc)
dc:=sqrt(dc)
dc:=min(2, dc)
dc:=1-dc/2
dc:=max(0.001, dc)



g=close
if(da>db and da>dc)
    g:=da*da*ma
else
    if(db > da and db > dc)
        g:=db*db*mb
    else
        g:=dc*dc*mc

wg=wma(g, 2)
plot(wg)
plot(0, color=black)


longCondition = true //crossover(sma(close, 14), sma(close, 28))
if (longCondition)
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = true //crossunder(sma(close, 14), sma(close, 28))
if (shortCondition)
    strategy.entry("My Short Entry Id", strategy.short)