Стратегия разворота тренда криптовалюты на основе максимумов и минимумов PIVOT


Дата создания: 2024-01-12 14:13:36 Последнее изменение: 2024-01-12 14:13:36
Копировать: 1 Количество просмотров: 774
1
Подписаться
1664
Подписчики

Стратегия разворота тренда криптовалюты на основе максимумов и минимумов PIVOT

Обзор

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

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

  1. Вычислить высокие и низкие точки PIVOT

Используя функции ta.pivothigh () и ta.pivotlow () рассчитывается наивысшая цена и наименьшая цена на определенное число последних баров в качестве ключевых PIVOT-точек.

  1. Судья прорыв

Если цена пробивает PIVOT low вверх или PIVOT high вниз, то считается, что тренд изменился.

  1. Настройка фильтрации

Необходимо, чтобы цена имела определенный прорыв по сравнению с PIVOT-точкой и преодолела ценовую отметку 150 бар, чтобы избежать подкупа.

  1. Вход и выход

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

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

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

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

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

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

  1. Можно тестировать различные комбинации PIVOT-параметров
  2. Можно добавить движущийся стоп, чтобы контролировать одиночные потери
  3. Фильтрационные сигналы могут быть оценены в сочетании с другими показателями

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

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

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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © nkrastins95

//@version=5
strategy("Swing Hi Lo", overlay=true, margin_long=100, margin_short=100)

//-----------------------------------------------------------------------------------------------------------------------//

tf = input.timeframe(title="Timeframe", defval="")

gr="LENGTH LEFT / RIGHT"
leftLenH = input.int(title="Pivot High", defval=10, minval=1, inline="Pivot High",group=gr)
rightLenH = input.int(title="/", defval=10, minval=1, inline="Pivot High",group=gr)
colorH = input(title="", defval=color.red, inline="Pivot High",group=gr)

leftLenL = input.int(title="Pivot Low", defval=10, minval=1, inline="Pivot Low", group=gr)
rightLenL = input.int(title="/", defval=10, minval=1, inline="Pivot Low",group=gr)
colorL = input(title="", defval=color.blue, inline="Pivot Low",group=gr)

//-----------------------------------------------------------------------------------------------------------------------//

pivotHigh(ll, rl) =>
    maxLen = 1000
    float ph = ta.pivothigh(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(ph[offset])
            break 
        offset := offset + 1
    ph[offset]

pivotLow(ll, rl) =>
    maxLen = 1000
    float pl = ta.pivotlow(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(pl[offset])
            break 
        offset := offset + 1
    pl[offset]


//-----------------------------------------------------------------------------------------------------------------------//

ph = request.security(syminfo.tickerid, tf, pivotHigh(leftLenH, rightLenH), barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, tf, pivotLow(leftLenL, rightLenL), barmerge.gaps_off, barmerge.lookahead_on)

drawLabel(_offset, _pivot, _style, _color) =>
    if not na(_pivot)
        label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722)

//-----------------------------------------------------------------------------------------------------------------------//

VWAP = ta.vwap(ohlc4)

longcondition = ta.crossunder(close,pl) and close > close[150]
exitcondition = close > ph

shortcondition = ta.crossover(close,ph) and close < close[150]
covercondition = close < pl

strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = exitcondition)

strategy.entry("Short", strategy.short, when = shortcondition)
strategy.close("Short", when = covercondition)