Комбо-стратегия 123 переменного и фрактального хаос-осциллятора

Автор:Чао Чжан, Дата: 2023-11-02 16:43:41
Тэги:

img

Обзор

Это комбинированная стратегия, которая сочетает в себе стратегию 123 Reversal и стратегию Fractal Chaos Oscillator для получения более надежных торговых сигналов.

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

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

  1. 123 Стратегия отмены

    Эта стратегия взята из книги "Как я утроил свои деньги на рынке фьючерсов" Ульфа Дженсена, страница 183.

    • Пройдите длинный, когда цена закрытия выше, чем предыдущая закрытие в течение 2 дней подряд, и 9-дневный медленный Stoch ниже 50.

    • Сократите, когда цена закрытия ниже, чем предыдущая закрытие в течение 2 дней подряд, и 9-дневный быстрый Stoch выше 50.

  2. Стратегия фрактального хаос-осциллятора

    FCO рассчитывает разницу между самыми тонкими движениями на рынке. Его значение колеблется между -1 и 1. Чем выше значение, тем сильнее тренд, независимо от восходящего или нисходящего тренда.

    Если FCO достигнет высокого уровня, выберите длинный. Если FCO достигнет низкого уровня, выберите короткий. Этот индикатор подходит для внутридневной торговли.

Когда сигналы обеих стратегий согласуются, сделка будет совершена в этом направлении.

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

  • Сочетание стратегий перехода и тренда помогает отфильтровать ложные сигналы и повышает надежность.

  • Стратегия реверсии отслеживает возможности реверсии в краткосрочной перспективе, а стратегия FCO отслеживает тенденции в среднесрочной и долгосрочной перспективе.

  • Оптимизированные параметры Stoch эффективно фильтруют ложные сигналы на рынках с диапазоном.

  • FCO чувствителен к тонким колебаниям рынка и может рано обнаружить изменения тенденций.

Риски и решения

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

  • Стратегии показателей могут генерировать чрезмерные сигналы.

  • Оптимизируйте параметры на основе результатов обратных тестов для улучшения сотрудничества.

  • Добавить стоп-лосс для контроля одиночных потерь.

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

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

  • Проверьте различные параметры FCO, чтобы найти лучшие.

  • Попробуйте различные методы оптимизации параметров, такие как генетические алгоритмы, случайный лес и т.д.

  • Добавьте дополнительные вспомогательные индикаторы к дополнительным сигналам фильтра.

  • Добавьте модели машинного обучения для улучшения точности сигнала.

  • Внедрить механизмы управления рисками, такие как стоп-лосс, размещение позиций и т.д.

Резюме

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


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 07/10/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 value of Fractal Chaos Oscillator is calculated as the difference between 
// the most subtle movements of the market. In general, its value moves between 
// -1.000 and 1.000. The higher the value of the Fractal Chaos Oscillator, the 
// more one can say that it follows a certain trend – an increase in prices trend, 
// or a decrease in prices trend.
//
//   Being an indicator expressed in a numeric value, traders say that this is an 
// indicator that puts a value on the trendiness of the markets. When the FCO reaches 
// a high value, they initiate the “buy” operation, contrarily when the FCO reaches a 
// low value, they signal the “sell” action. This is an excellent indicator to use in 
// intra-day trading.
//
// 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

fractalUp(pattern) =>
    p = high[pattern+1]
    okl = 1
    okr = 1
    res = 0.0
	for i = pattern to 1
		okl := iff(high[i] < high[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(high[i] < high[i-1] and okr == 1, 1, 0)
	res := iff(okl == 1 and okr == 1, p, res[1])
    res

fractalDn(pattern) =>
    p = low[pattern+1]
    okl = 1
    okr = 1
    res = 0.0
	for i = pattern to 1
		okl := iff(low[i] > low[i+1] and okl == 1 , 1, 0)
	for i = pattern+2 to pattern*2+1
		okr := iff(low[i] > low[i-1] and okr == 1, 1, 0)
	res := iff(okl == 1 and okr == 1, p, res[1])
    res

FCO(Pattern) =>
    pos = 0.0
    xUpper = fractalUp(Pattern) 
    xLower = fractalDn(Pattern)
    xRes = iff(xUpper != xUpper[1], 1, 
             iff(xLower != xLower[1], -1, 0))
    pos := iff(xRes == 1, 1,
             iff(xRes == -1, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Fractal Chaos Oscillator", shorttitle="Combo", overlay = true)
Length = input(15, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Pattern = input(1, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posFCO = FCO(Pattern)
pos = iff(posReversal123 == 1 and posFCO == 1 , 1,
	   iff(posReversal123 == -1 and posFCO == -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 )

Больше