Стратегия соединения импульса обратного движения

Автор:Чао Чжан, Дата: 2024-01-05 14:06:21
Тэги:

img

Обзор

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

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

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

  1. 123 Стратегия реверсионной торговли: идти на длинный курс, когда закрытие выше предыдущего закрытия в течение 2 дней подряд после 2 дней более низкого закрытия, и 9-дневная медленная линия K ниже 50; идти на короткий курс, когда закрытие ниже предыдущего закрытия в течение 2 дней подряд после 2 дней более высокого закрытия, и 9-дневная быстрая линия K выше 50.

  2. DAPD Momentum Breakout Strategy: DAPD - это средняя разница между 21-дневным максимумом и 21-дневным минимумом.

Сигнал входа генерируется, когда две стратегии дают выровненные сигналы.

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

Стратегия сочетает в себе преимущества стратегии перехода и стратегии импульса, более точно фиксируя переломные моменты.

  1. Двойной фильтр повышает надежность сигнала.

  2. 123 уменьшает риск развития бичевых ножек.

  3. ДАПД импульс подходит для трендовых продуктов.

Риски

  1. Сигналы из двух стратегий могут не соответствовать друг другу.

  2. Трудно оптимизировать два набора параметров вместе.

  3. Удвоенный риск затрат на транзакцию.

Оптимизация

  1. Оптимизируйте выравнивание сигналов двух стратегий.

  2. Эффективность испытаний различных наборов параметров на различных продуктах.

  3. Возьмите только сильные сигналы, чтобы отфильтровать слабые.

Заключение

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


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 10/12/2019
// 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 indicator is similar to Bollinger Bands. It based on DAPD - Daily
// Average Price Delta. DAPD is based upon a summation for each of the
// highs (hod) for the 21 days prior to today minus the summation for
// each of the lows (lod) for the last 21 days prior to today. The result
// of this calculation would then be divided by 21.
// It will be buy when high above previos DAPD high and sell if low below previos DAPD low
//
// 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

DAPD(Length) =>
    pos = 0.0
    xHighSMA = sma(high, Length)
    xLowSMA = sma(low, Length)        
    nDAPD = xHighSMA - xLowSMA
    nTop = high + nDAPD
    nBottom = low - nDAPD
    pos :=  iff(high > nTop[1], 1,
    	     iff(low < nBottom[1], -1, nz(pos[1], 0)))    
    pos

strategy(title="Combo Backtest 123 Reversal & DAPD", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDAPD = input(21, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDAPD = DAPD(LengthDAPD)
pos = iff(posReversal123 == 1 and posDAPD == 1 , 1,
	   iff(posReversal123 == -1 and posDAPD == -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 )

Больше