Комбинированная торговая стратегия, основанная на развороте модели и индикаторе MACD


Дата создания: 2023-09-19 17:17:30 Последнее изменение: 2023-09-19 17:17:30
Копировать: 0 Количество просмотров: 715
1
Подписаться
1617
Подписчики

Обзор

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

Стратегический принцип

  1. 123 Формально-обратная стратегия, при которой покупают, когда Stochastic находится ниже обесценения, и продают, когда Stochastic находится выше обесценения.

  2. Стратегия индикатора MACD, сделайте больше, когда быстрая линия выше, чем медленная линия, сделайте пустое, когда быстрая линия ниже, чем медленная линия.

  3. Торговля проводится только в том случае, если два стратегических сигнала совпадают, в противном случае торговля не проводится.

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

Основные преимущества этой стратегии:

  1. Комбинированные сигналы эффективно фильтруют ложные прорывы и повышают вероятность победы.

  2. Форма 123 позволяет уловить кратковременный поворот, а MACD определяет направление средне-длинной линии.

  3. Стохастический индикатор в сочетании с формой 123 позволяет избежать чрезмерной торговли после переворота тренда.

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

  5. Удобное переключение в разных направлениях, адаптированное к различным рыночным условиям.

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

Основные риски этой стратегии:

  1. Комбинированные сигналы слишком консервативны и могут упустить лучшие возможности.

  2. Обратная форма подвержена воздействию внезапных событий, возникает неэффективность.

  3. Не учитывается механизм хранения убытков, существует риск больших потерь.

  4. Двойная фильтрация сигналов может пропустить трендовые возможности.

  5. Не учитывая оптимизацию параметров, параметры по умолчанию не обязательно подходят для всех сортов.

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

Оптимизация может быть осуществлена в следующих аспектах:

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

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

  3. Добавить больше фильтров для улучшения качества сигнала.

  4. Добавление моделей машинного обучения для автоматической оптимизации параметров.

  5. Проверка стабильности стратегии в более широком диапазоне.

  6. Комбинация параметров переключения в зависимости от рыночных условий.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-09-11 00:00:00
end: 2023-09-14 02:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 24/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.
// Blau`s indicator is like usual MACD, but it plots opposite of meaningof
// stndard MACD indicator.  
//
// 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)

EMACD(r,SmthLen,LengthMACD) =>
    pos = 0
    source = close
    fastMA = ema(source, r)
    slowMA = ema(source, LengthMACD)
    xmacd = fastMA - slowMA
    xMA_MACD = ema(xmacd, SmthLen)
    pos := iff(xmacd < xMA_MACD, -1,
    	     iff(xmacd > xMA_MACD, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic MACD", 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(14, minval=1)
LengthMACD = input(21, minval=1)
SmthLen = input(5, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMACD = EMACD(r,SmthLen,LengthMACD)
pos = iff(posReversal123 == 1 and posEMACD == 1 , 1,
	   iff(posReversal123 == -1 and posEMACD == -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 )