Стратегия бэктестинга фильтра тренда среднего диапазона


Дата создания: 2024-01-08 10:20:25 Последнее изменение: 2024-01-08 10:20:25
Копировать: 0 Количество просмотров: 656
1
Подписаться
1617
Подписчики

Стратегия бэктестинга фильтра тренда среднего диапазона

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

Принцип стратегии: ключевым показателем стратегии является вертикально-горизонтальный фильтр ((VHF), который рассчитывается по формуле:

VHF = (Highest(Length) - Lowest(Length)) / SUM(ABS(Close - Close[1]), Length)

Их соотношение позволяет определить тенденционность ценового движения. Когда VHF выше заданного сигнального порога, считается, что цена находится в состоянии тренда; когда ниже заданного сигнального порога, считается, что цена находится в состоянии полного диска.

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

Анализ силы:

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

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

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

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

  1. Оптимизация чувствительности параметров Length для балансировки тенденций.
  2. В сочетании с другими показателями фильтруют VHF сигналы. Например, MACD может определить точку переворота.
  3. Попробуйте приспособить методы машинного обучения к кривой VHF.
  4. Параллельная установка различных циклов дает многоуровневые стратегические сигналы.

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

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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/04/2018
// Vertical Horizontal Filter was initiated by Adam White. It was first published 
// in a magazine called “Issues of Futures” in August, 1991. The Vertical Horizontal 
// Filter (VHF) is a very common Indicator used by traders to find out the Phase of 
// a Price Trend. Normally, a price trend can be in a Trending Phase or a Congestion 
// Phase/Choppy Movement Phase. Adam White created this particular Technical Indicator 
// to determine whether prices are trending in a particular direction or are they going 
// through a transitional period. He used it to measure the range of Futures available
// in the market.
//
// You can change long to short in the Input Settings
// WARNING:
//  - For purpose educate only
//  - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Vertical Horizontal Filter Backtest")
Length = input(28, minval=1)
Signal = input(0.4, step=0.01)
reverse = input(false, title="Trade reverse")
hline(Signal, color=blue, linestyle=line)
xHH = highest(high, Length)
xLL = lowest(low, Length)
xNumerator = abs(xHH - xLL)
xDenominator = sum(abs(close - close[1]), Length)
xVHF = xNumerator / xDenominator 
pos = iff(xVHF > Signal, 1,
       iff(xVHF < Signal, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(xVHF, color=blue, title="VHF")