Стратегия обратного движения двойного клика Quant Trading

Автор:Чао Чжан, Дата: 2023-11-22 10:03:04
Тэги:

img

Обзор

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

Принцип

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

  1. 123 схема для определения сигналов реверсии: когда цена закрытия непрерывно падает в течение 2 дней подряд, а 3-й день закрывается положительно, и индикатор акций находится на низком уровне в течение длительного периода; когда цена закрытия непрерывно растет в течение 2 дней подряд, и 3-й день закрывается отрицательно, и индикатор акций находится на высоком уровне в течение короткого периода.

  2. Секция Клингеровского объемного осциллятора: Клингеровский объемный осциллятор объединяет диапазон колебаний цен и изменения объема торговли для определения притока и оттока капитала.

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

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

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

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

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

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

Направление оптимизации

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

Кроме того, следует рассмотреть возможность динамической корректировки условий стоп-лосса и получения прибыли, чтобы сделать стратегию более адаптивной к изменениям рынка.

Резюме

Эта стратегия объединяет в себе применение классических теорий реверсии и объемных технических индикаторов для эффективного захвата возможностей реверсии.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/12/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
// The Klinger Oscillator (KO) was developed by Stephen J. Klinger. Learning 
// from prior research on volume by such well-known technicians as Joseph Granville, 
// Larry Williams, and Marc Chaikin, Mr. Klinger set out to develop a volume-based 
// indicator to help in both short- and long-term analysis.
// The KO was developed with two seemingly opposite goals in mind: to be sensitive 
// enough to signal short-term tops and bottoms, yet accurate enough to reflect the 
// long-term flow of money into and out of a security.
// The KO is based on the following tenets:
// Price range (i.e. High - Low) is a measure of movement and volume is the force behind 
// the movement. The sum of High + Low + Close defines a trend. Accumulation occurs when 
// today's sum is greater than the previous day's. Conversely, distribution occurs when 
// today's sum is less than the previous day's. When the sums are equal, the existing trend 
// is maintained.
// Volume produces continuous intra-day changes in price reflecting buying and selling pressure. 
// The KO quantifies the difference between the number of shares being accumulated and distributed 
// each day as "volume force". A strong, rising volume force should accompany an uptrend and then 
// gradually contract over time during the latter stages of the uptrend and the early stages of 
// the following downtrend. This should be followed by a rising volume force reflecting some 
// accumulation before a bottom develops.
//
// 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

KVO(TrigLen,FastX,SlowX) =>
    pos = 0.0
    xTrend = iff(hlc3 > hlc3[1], volume * 100, -volume * 100)
    xFast = ema(xTrend, FastX)
    xSlow = ema(xTrend, SlowX)
    xKVO = xFast - xSlow
    xTrigger = ema(xKVO, TrigLen)
    pos := iff(xKVO > xTrigger, 1,
    	     iff(xKVO < xTrigger, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Klinger Volume Oscillator", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
TrigLen = input(13, minval=1)
FastX = input(34, minval=1)
SlowX = input(55, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posKVO = KVO(TrigLen,FastX,SlowX)
pos = iff(posReversal123 == 1 and posKVO == 1 , 1,
	   iff(posReversal123 == -1 and posKVO == -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 )

Больше