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

Автор:Чао Чжан, Дата: 2023-11-24 10:17:15
Тэги:

img

Обзор

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

Принципы

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

  1. 123 схема для определения точек перехода
  2. Эргодический индикатор CSI для генерации соответствующих сигналов

Модель 123 оценивает изменение цены на основе цен закрытия последних трех баров. Если цена закрытия 3-го бар повышается по сравнению с предыдущими 2 бар, и как быстрый, так и медленный акции ниже 50, это сигнал покупки. Если цена закрытия 3-го бар падает по сравнению с предыдущими 2-мя, и как быстрый, так и медленный акции выше 50, это сигнал продажи.

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

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

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

  1. Зафиксирует среднесрочные тенденции, высокий потенциал прибыли
  2. Определение образа обратного движения эффективно улавливает поворотные моменты
  3. Сопоставление двух рельсов уменьшает ложные сигналы

Риски

  1. Отдельные запасы могут расходиться, что приводит к остановке потерь
  2. Модели реверсии, подверженные влиянию рынков с ограниченным диапазоном
  3. Ограниченное пространство для оптимизации параметров, высокие колебания производительности

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

  1. Оптимизировать параметры для повышения рентабельности стратегии
  2. Добавление логики остановки потери для уменьшения потерь на одной сделке
  3. Внедрение многофакторных моделей для улучшения отбора запасов

Заключение

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


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/07/2020
// 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 one of the techniques described by William Blau in his book 
// "Momentum, Direction and Divergence" (1995). If you like to learn more, 
// we advise you to read this book. His book focuses on three key aspects 
// of trading: momentum, direction and divergence. Blau, who was an electrical 
// engineer before becoming a trader, thoroughly examines the relationship between 
// price and momentum in step-by-step examples. From this grounding, he then looks 
// at the deficiencies in other oscillators and introduces some innovative techniques, 
// including a fresh twist on Stochastics. On directional issues, he analyzes the 
// intricacies of ADX and offers a unique approach to help define trending and 
// non-trending periods.
// This indicator plots Ergotic CSI and smoothed Ergotic CSI to filter out noise. 
//
// 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

fADX(Len) =>
    up = change(high)
    down = -change(low)
    trur = rma(tr, Len)
    plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

ECSI(r,Length,BigPointValue,SmthLen,SellZone,BuyZone) =>
    pos = 0
    source = close
    K = 100 * (BigPointValue / sqrt(r) / (150 + 5))
    xTrueRange = atr(1) 
    xADX = fADX(Length)
    xADXR = (xADX + xADX[1]) * 0.5
    nRes = iff(Length + xTrueRange > 0, K * xADXR * xTrueRange / Length,0)
    xCSI = iff(close > 0,  nRes / close, 0)
    xSMA_CSI = sma(xCSI, SmthLen)
    pos := iff(xSMA_CSI > BuyZone, 1,
             iff(xSMA_CSI <= SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic CSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(32, minval=1)
LengthECSI = input(1, minval=1)
BigPointValue = input(1.0, minval=0.00001)
SmthLen = input(5, minval=1)
SellZone = input(0.06, minval=0.00001)
BuyZone = input(0.02, minval=0.001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posECSI = ECSI(r,LengthECSI,BigPointValue,SmthLen,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posECSI == 1 , 1,
	   iff(posReversal123 == -1 and posECSI == -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 )

Больше