Стратегия адаптивной волатильности элементов конечного объема

Автор:Чао Чжан, Дата: 2023-10-17 14:50:13
Тэги:

img

Обзор

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

Принципы

Стратегия сначала рассчитывает средние высокие и низкие цены, средние цены закрытия последних N баров и средние высокие, низкие и закрытые цены предыдущего бара. Затем она вычисляет логарифмические доходы Intra и Inter для текущего и предыдущего бара. Между тем она вычисляет волатильности Vintra и Vinter Intra и Inter.

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

Наконец, в соответствии с сигналами, расчетные потоки средств, вывод позиционного сигнала pos, и графическое изображение кривой конечного объема элемента FVE.

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

  1. Адаптивные параметры, применимые к различным временным рамкам и уровням волатильности без ручной корректировки.

  2. Точно фиксирует тенденции изменения цен.

  3. Кривая FVE четко отражает сравнение длинных и коротких сил.

  4. Прочная теоретическая основа анализа потоков средств, относительно надежные сигналы.

Риски

  1. Может генерировать больше ложных сигналов во время бурных колебаний на рынке.

  2. Не в состоянии справиться с ценовыми разрывами.

  3. Сигналы по потоку средств могут отличаться от технического анализа иногда.

Оптимизация

  1. Обычно больший N может фильтровать шум.

  2. Можно протестировать различные комбинации Cintra и Cinter, чтобы найти оптимальные параметры.

  3. Может комбинироваться с другими индикаторами, такими как MACD, для повышения надежности.

  4. Может встраивать механизмы остановки потерь для контроля одиночных потерь.

Заключение

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


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/08/2017
// This is another version of FVE indicator that we have posted earlier 
// in this forum.
// This version has an important enhancement to the previous one that`s 
// especially useful with intraday minute charts.
// Due to the volatility had not been taken into account to avoid the extra 
// complication in the formula, the previous formula has some drawbacks:
// The main drawback is that the constant cutoff coefficient will overestimate 
// price changes in minute charts and underestimate corresponding changes in 
// weekly or monthly charts.
// And now the indicator uses adaptive cutoff coefficient which will adjust to 
// all time frames automatically.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Volatility Finite Volume Elements", shorttitle="FVI")
Samples = input(22, minval=1)
Perma = input(40, minval=1)
Cintra = input(0.1, step=0.1)
Cinter = input(0.1, step=0.1)
reverse = input(false, title="Trade reverse")
xhl2 = hl2
xhlc3 = hlc3
xClose = close
xIntra = log(high) - log(low)
xInter = log(xhlc3) - log(xhlc3[1])
xStDevIntra = stdev(sma(xIntra, Samples) , Samples)
xStDevInter = stdev(sma(xInter, Samples) , Samples)
xVolume = volume
TP = xhlc3
TP1 = xhlc3[1]
Intra = xIntra
Vintra = xStDevIntra
Inter = xInter
Vinter = xStDevInter
CutOff = Cintra * Vintra + Cinter * Vinter
MF = xClose - xhl2 + TP - TP1
FveFactor = iff(MF > CutOff * xClose, 1, 
             iff(MF < -1 * CutOff * xClose, -1,  0))
xVolumePlusMinus = xVolume * FveFactor
Fvesum = sum(xVolumePlusMinus, Samples)
VolSum = sum(xVolume, Samples)
xFVE = (Fvesum / VolSum) * 100
xEMAFVE = ema(xFVE, Perma)
pos = iff(xFVE > xEMAFVE, 1,
	   iff(xFVE < xEMAFVE, -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(xFVE, color=green, title="FVI")
plot(xEMAFVE, color=blue, title="FVI EMA")

Больше