В процессе загрузки ресурсов... загрузка...

Стратегия обратного движения с выходом из витка

Автор:Чао Чжан, Дата: 2024-04-30 15:57:54
Тэги:

img

Обзор

Эта стратегия использует Pivot Points для выявления точек переворота рынка и принятия торговых решений на их основе. Когда в течение последних 4 свечей слева образуется Pivot High, стратегия входит в длинную позицию; когда в течение последних 4 свечей слева образуется Pivot Low, стратегия входит в короткую позицию. Стоп-лосс устанавливается на один размер тика (syminfo.mintick) выше или ниже цены входа. Существует два условия выхода: 1) выход, когда появляется следующая противоположная точка переворота; 2) выход, когда плавающий убыток достигает 30%.

Принципы стратегии

  1. Используйте функции ta.pivothigh (() и ta.pivotlow (()) для расчета Pivot High (swh) и Pivot Low (swl) в диапазоне 4 свечей слева и 2 свечи справа.
  2. При наличии пивового максимума (swh_second) обновлять самую высокую цену (hprice), а когда текущий максимум выше предыдущего максимума, включать условие длинного входа (le).
  3. Когда условие длинного входа (le) выполнено, введите длинную позицию с одним размером тика (syminfo.mintick) выше пивового максимума.
  4. Аналогичным образом, когда существует Pivot Low (swl_cond), обновляйте самую низкую цену (lprice), а когда текущий минимум ниже предыдущего минимума, включите условие короткого входа (se).
  5. При выполнении условий короткого входа (se) ввести короткую позицию на один тик (syminfo.mintick) ниже пивового минимума.
  6. В функции exitAtNextPivot() при задержании длинной позиции установить стоп-лосс на один тик ниже следующего Pivot Low; при задержании короткой позиции установить стоп-лосс на один тик выше следующего Pivot High.
  7. В функции exitIfProfitLessThirtyPercent() вычислить процент прибыли и убытка для длинных и коротких позиций и закрыть позицию, если убыток превышает 30%.

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

  1. Пивовые точки могут хорошо отражать уровни поддержки и сопротивления на рынке и являются широко используемым индикатором технического анализа с определенным признанием рынка.
  2. Вход в момент прорыва Pivot Points может уловить возможности переворота рынка.
  3. Установлены два условия выхода, один основан на следующей противоположной поворотной точке для технического выхода, а другой основан на проценте потерь для выхода контроля риска, который может в определенной степени контролировать снижение стратегии.

Стратегические риски

  1. Показатель Pivot Point сам по себе имеет определенное отставание и частые проблемы с сигналом, и может плохо работать на колеблющемся рынке.
  2. Фиксированные параметры расчета 4 свечей и 2 свечи могут быть не применимы ко всем условиям рынка, не имея определенной адаптивности и гибкости.
  3. Стоп-лосс устанавливается близко к цене входа (размер одного тика), который может быть отброшен во время бурных колебаний рынка.
  4. Настройка стоп-потери 30% может быть слишком свободной, с большой амплитудой снижения.

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

  1. Попробуйте использовать другие типы индикаторов ключевых точек, такие как факторные ключевые точки, взвешенные ключевые точки и т. д., чтобы повысить чувствительность и своевременность индикаторов.
  2. Количество левых и правых свечей можно использовать в качестве входных параметров, а оптимальные значения можно найти с помощью оптимизации параметров.
  3. Стоп-лосс позиции могут быть оптимизированы на ATR или процентный стоп-лосс. Первый может адаптироваться к изменениям волатильности рынка, в то время как второй может ограничивать риски в пределах контролируемого диапазона.
  4. Условие остановки убытков на 30% может быть ужесточено, чтобы уменьшить снижение стратегии. Кроме того, условие остановки процента прибыли может быть добавлено для управления как плавающей прибылью, так и убытками.
  5. Другие условия фильтрации, такие как фильтрация тренда и фильтрация волатильности, могут быть наложены на основе прорыва пивотной точки для улучшения качества сигнала.

Резюме

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


/*backtest
start: 2023-04-24 00:00:00
end: 2024-04-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)

leftBars = input(4)
rightBars = input(2)

var float dailyEquity = na

// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
    dailyEquity := 10000

// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)

// Define long entry condition
swh_cond = not na(swh)
hprice = 0.0
hprice := swh_cond ? swh : hprice[1]
le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

// Enter long position if long entry condition is met
if (le)
    strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)

// Define short entry condition
swl_cond = not na(swl)
lprice = 0.0
lprice := swl_cond ? swl : lprice[1]
se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

// Enter short position if short entry condition is met
if (se)
    strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)

// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Exiting long position at next pivot low
            if not na(swl)
                strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
        else
            // Exiting short position at next pivot high
            if not na(swh)
                strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)

// Call exitAtNextPivot function
exitAtNextPivot()

// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Calculate profit percentage for long position
            profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
            // Exiting long position if profit is less than 30%
            if profit_percentage_long < -30
                strategy.close("PivRevLE")
        else
            // Calculate profit percentage for short position
            profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
            // Exiting short position if profit is less than 30%
            if profit_percentage_short < -30
                strategy.close("PivRevSE")

// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()


Больше