Стратегия торговли реверсией с двойным отслеживанием колебаний

Автор:Чао Чжан, Дата: 2023-10-11 14:47:25
Тэги:

Обзор

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

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

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

  1. Стратегия реверсии стохастического показателя

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

  1. Индикатор волатильности Chaikin

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

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

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

Преимущества этой стратегии включают:

  1. Объединение двух различных типов показателей повышает точность сигнала.

  2. Механизм двойного подтверждения уменьшает ложные сигналы и контролирует риск.

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

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

  5. Тонкая настройка параметров индикатора позволяет оптимизировать.

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

Риски этой стратегии включают:

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

  2. Сокращение во время резкого роста волатильности сопряжено с риском потери.

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

  4. Отслеживание двух индикаторов увеличивает нагрузку, автоматизированная торговля может уменьшить нагрузку.

Направления к улучшению

Улучшения этой стратегии включают:

  1. Испытайте больше комбинаций параметров, чтобы найти оптимальные параметры.

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

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

  4. Оптимизировать управление деньгами, как фиксированные дроби, Келли и т.д., чтобы улучшить эффективность прибыли.

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

Заключение

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


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/07/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
// Chaikin's Volatility indicator compares the spread between a security's
// high and low prices. It quantifies volatility as a widening of the range
// between the high and the low price.
// You can use in the xPrice1 and xPrice2 any series: Open, High, Low, Close, HL2,
// HLC3, OHLC4 and ect...
//
// 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

ChaikinVolatility(Length, ROCLength, Trigger) =>
    pos = 0
    xPrice1 = high
    xPrice2 = low
    xPrice = xPrice1 - xPrice2
    xROC_EMA = roc(ema(xPrice, Length), ROCLength)
    pos := iff(xROC_EMA < Trigger, 1,
	         iff(xROC_EMA > Trigger, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Chaikin Volatility", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCV = input(10, minval=1)
ROCLength = input(12, minval=1)
Trigger = input(0, minval=0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posChaikinVolatility = ChaikinVolatility(LengthCV, ROCLength, Trigger)
pos = iff(posReversal123 == 1 and posChaikinVolatility == 1 , 1,
	   iff(posReversal123 == -1 and posChaikinVolatility == -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 )

Больше