Двухфакторная стратегия отслеживания импульса

Автор:Чао Чжан, Дата: 2024-01-18 11:33:40
Тэги:

img

Обзор

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

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

Стратегия состоит из двух частей:

  1. 123 Фактор обратной модели

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

  2. Лагуер фильтрованный фактор RSI

    Эта часть создает более чувствительный индикатор RSI с использованием фильтров Лагуэра. Чувствительность традиционных индикаторов RSI к изменениям цен относительно низкая.

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

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

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

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

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

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

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

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

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

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

Резюме

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


/*backtest
start: 2024-01-10 00:00:00
end: 2024-01-17 00:00:00
period: 5m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/01/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This is RSI indicator which is more sesitive to price changes. 
// It is based upon a modern math tool - Laguerre transform filter.
// With help of Laguerre filter one becomes able to create superior 
// indicators using very short data lengths as well. The use of shorter 
// data lengths means you can make the indicators more responsive to 
// changes in the price.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

LB_RSI(gamma,BuyBand,SellBand) =>
    pos = 0.0
    xL0 = 0.0
    xL1 = 0.0
    xL2 = 0.0
    xL3 = 0.0
    xL0 := (1-gamma) * close + gamma * nz(xL0[1], 1)
    xL1 := - gamma * xL0 + nz(xL0[1], 1) + gamma * nz(xL1[1], 1)
    xL2 := - gamma * xL1 + nz(xL1[1], 1) + gamma * nz(xL2[1], 1)
    xL3 := - gamma * xL2 + nz(xL2[1], 1) + gamma * nz(xL3[1], 1)
    CU = (xL0 >= xL1 ? xL0 - xL1 : 0) + (xL1 >= xL2 ? xL1 - xL2 : 0)  + (xL2 >= xL3 ? xL2 - xL3 : 0)
    CD = (xL0 >= xL1 ? 0 : xL1 - xL0) + (xL1 >= xL2 ? 0 : xL2 - xL1)  + (xL2 >= xL3 ? 0 : xL3 - xL2)
    nRes = iff(CU + CD != 0, CU / (CU + CD), 0)
    pos := iff(nRes > BuyBand, 1,
    	     iff(nRes < SellBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Laguerre-based RSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
gamma = input(0.5, minval=-0.1, maxval = 0.9)
BuyBand = input(0.8, step = 0.01)
SellBand = input(0.2, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posLB_RSI = LB_RSI(gamma,BuyBand,SellBand)
pos = iff(posReversal123 == 1 and posLB_RSI == 1 , 1,
	   iff(posReversal123 == -1 and posLB_RSI == -1, -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)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Больше