Стратегия фильтрации импульса по скользящей средней

Автор:Чао Чжан, Дата: 2023-12-12 12:35:05
Тэги:

img

Обзор

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

Логика стратегии

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

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

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

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

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

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

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

Руководство по оптимизации

Стратегия может быть оптимизирована в следующих аспектах:

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

  2. Оптимизировать диапазон параметров TopBand и LowBand для соответствия диапазону волатильности рынка для предотвращения ложных сигналов.

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

  4. Добавьте логику остановки потерь и установите разумные точки остановки потерь для контроля потерь.

  5. Фильтр с другими техническими показателями, такими как MACD, KD, чтобы избежать ложных сделок на рынках без тренда.

Резюме

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


/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 02/03/2017
// This indicator plots a CMO which ignores price changes which are less 
// than a threshold value. CMO was developed by Tushar Chande. A scientist, 
// an inventor, and a respected trading system developer, Mr. Chande developed 
// the CMO to capture what he calls "pure momentum". For more definitive 
// information on the CMO and other indicators we recommend the book The New 
// Technical Trader by Tushar Chande and Stanley Kroll.
// The CMO is closely related to, yet unique from, other momentum oriented 
// indicators such as Relative Strength Index, Stochastic, Rate-of-Change, etc. 
// It is most closely related to Welles Wilder`s RSI, yet it differs in several ways:
// - It uses data for both up days and down days in the numerator, thereby directly 
// measuring momentum;
// - The calculations are applied on unsmoothed data. Therefore, short-term extreme 
// movements in price are not hidden. Once calculated, smoothing can be applied to the 
// CMO, if desired;
// - The scale is bounded between +100 and -100, thereby allowing you to clearly see 
// changes in net momentum using the 0 level. The bounded scale also allows you to 
// conveniently compare values across different securities.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

strategy(title="CMOfilt", shorttitle="CMOfilt")
Length = input(9, minval=1)
Filter = input(3, minval=1)
TopBand = input(70, minval=1)
LowBand = input(-70, maxval=-1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=line)
hline(TopBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xMom = close - close[1]
xMomAbs = abs(close - close[1])
xMomFilter = fFilter(xMom, xMomAbs, Filter)
xMomAbsFilter = fFilter(xMomAbs,xMomAbs, Filter)
nSum = sum(xMomFilter, Length)
nAbsSum = sum(xMomAbsFilter, Length)
nRes =   100 * nSum / nAbsSum
pos = iff(nRes > TopBand, 1,
	     iff(nRes < LowBand, -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(nRes, color=blue, title="CMOfilt")


Больше