
Обзор
Стратегия основана на Pivot Points, чтобы идентифицировать рыночные переломы и торговать на этой основе. Стратегия открывает позиции, когда рынок находится в верхней части левой линии 4K, когда Pivot High; когда рынок находится в нижней части левой линии 4K, когда Pivot Low. Стратегия открывает позиции, когда Pivot Low.
Стратегический принцип
- Используя функции ta.pivothigh () и ta.pivotlow () вычислить высокие точки (swh) и низкие точки (swl) в диапазоне 4 K-линий слева и 2 K-линий справа.
- При наличии пика стержневой точки swh_second, обновление максимальной цены hprice, а при удовлетворении текущей максимальной цены выше предыдущей максимальной цены, открытие условий многоразового входа le).
- При условии, что многоигровое условие {\displaystyle {\displaystyle {\mathcal {le}}} создается, открывайте позицию в одном минимальном изменении ({\displaystyle {\mathcal {syminfo.mintick}}}) выше высоты центральной оси.
- Аналогично с множественным делом, когда существует низкая точка центральной оси (swl_cond), обновляется минимальная цена (lprice), а при удовлетворении текущей минимальной цены, ниже предыдущей минимальной цены, открывается условие открытого дефолта (se).
- При условии открытия позиции с позиции, находящейся на одной наименьшей единице изменения ниже нижней точки центральной оси, когда условие открытия позиции с позицией с позицией с позицией, находящейся на одной наименьшей единице изменения ниже нижней точки центральной оси, когда условие открытия позиции с позицией с позицией с позицией с позицией ниже нижней точки центральной оси, когда условие открытия позиции с позицией с позицией с позицией ниже нижней точки центральной оси, когда условие открытия позиции с позицией ниже нижней точки центральной оси, находящейся на одной наименьшей единице изменения ниже нижней точки центральной оси, когда условие открытия позиции с позицией ниже нижней точки центральной оси, на одну наименьшую единицу изменения ниже нижней точки центральной оси, на одну наименьшую единицу изменения ниже нижней точки центральной оси, на одну наименьшую единицу изменения ниже нижней точки центральной оси.
- В функции exitAtNextPivot () если у вас есть несколько позиций, то вы потеряете одну минимальную единицу изменения ниже нижнего пункта на следующей оси; если у вас есть пустые позиции, то вы потеряете одну минимальную единицу изменения выше верхнего пункта на следующей оси.
- В функции exitIfProfitLessThanThirtyPercent () вычисляется процент прибыли и убытков для позиций сверх и ниже прибыли, а если убыток превышает 30%, то позиция плавна.
Стратегические преимущества
- Круговые точки лучше отражают позиции поддержки и давления на рынке, являются широко используемым техническим аналитическим показателем, имеющим определенную степень признания рынка.
- Вступая в игру во время прорыва в центральной точке, вы сможете поймать шанс на рыночный поворот.
- Установлены два условия выхода, один - технический выход на основе следующего противоположного направления, а другой - ветроуправляемый выход на основе процента убытков, позволяющий в определенной степени контролировать стратегию отступления.
Стратегический риск
- В то же время, есть определенные проблемы с задержкой и частотой сигналов, которые могут плохо работать в нестабильных рынках.
- Установленные параметры вычисления 4 K-линий и 2 K-линий могут не применяться ко всем состояниям рынка, не имея определенной адаптивности и гибкости.
- Стоп-позиция ближе к цене входа ((одна минимальная единица изменения), которая может быть отброшена при резких колебаниях рынка.
- Настройки, при которых убыток остается на уровне 30%, могут быть слишком мягкими, а отзывы - слишком большими.
Направление оптимизации стратегии
- Можно попробовать использовать другие типы показателей опорных точек, такие как опорные точки фактора, опорные точки весов и т. д., чтобы повысить чувствительность и реальность показателей.
- В качестве входных параметров можно найти оптимальные значения, оптимизировав параметры.
- Стоп-позиции могут быть оптимизированы как ATR или стоп-процент, первые могут адаптироваться к изменениям волатильности рынка, а последние могут ограничить риск в контролируемом диапазоне.
- Уровень убытков в 30% может быть ужесточен, что уменьшает стратегический отход. Кроме того, можно увеличить уровень убытков в процентах дохода, чтобы управлять волатильностью и волатильностью одновременно.
- На основе прорыва в центре можно накладывать другие условия фильтрации, такие как фильтрация тенденции, фильтрация частоты колебаний и т. Д., Чтобы улучшить качество сигнала.
Подвести итог
Стратегия основана на показателях опорных точек, создает двустороннюю торговую систему, чтобы захватить рыночные возможности для обратного оборота, делая больше в высоких и низких точках. Стратегия имеет некоторую теоретическую основу и практическую ценность, но из-за ограничений самих показателей опорных точек стратегия может столкнуться с некоторыми рисками и проблемами в практической деятельности.
Исходный код стратегии
/*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()