Система Double Dip Reversal Breakout сочетает в себе элементы стратегии обратного движения и следующего за трендом в количественной торговле. Она генерирует сигналы покупки, обнаруживая последовательные дни падения по сравнению с предыдущими ценами закрытия, и сигналы продажи, когда цена пересекает линию скользящей средней T3, что позволяет вести прибыльные сделки при управлении рисками.
Система состоит из двух компонентов:
Он наблюдает за изменениями цены закрытия за последние N дней. Если сегодняшний закрытие выше, чем вчера, а вчера ниже, чем накануне, он сигнализирует о двух последовательных днях падения и запускает сигнал покупки. Он также использует индикатор STOCH - когда сегодняшняя быстрая линия STOCH ниже медленной линии, он далее подтверждает действительность сигнала покупки.
Линия T3 рассчитывается на основе экспоненциальных скользящих средних с использованием специальной формулы.
Система объединяет два вышеперечисленных сигнала, генерируя фактические торговые сигналы только тогда, когда сигнал 123 Reversal buy и сигнал T3 Sell возникают вместе.
Для устранения рисков можно сделать следующее:
Стратегия может быть улучшена в нескольких аспектах:
Добавить фильтры для обеспечения достоверности сигнала
Дополнительные показатели, такие как объем прорывов, могут быть добавлены в качестве фильтров для предотвращения ложных сделок.
Корректировка параметров с учетом изменения рынков
Проверьте различные комбинации параметров и выберите набор, дающий наибольшую отдачу.
Включить машинное обучение для адаптивной оптимизации
Собирать большие исторические наборы данных, обучать модели ML прогнозировать оптимальные точки входа / выхода и динамически оптимизировать параметры.
Оптимизировать параметры отдельно для различных приборов
Приборы имеют разные характеристики, поэтому их оптимальные параметры также различаются.
Система обратного отклонения с двойным отклонением синергетически сочетает в себе трендопоследование и обратную торговлю. Она позволяет покупать на минимумах после падения и получать прибыль от тенденций с использованием скользящей средней. Эффективное сочетание обратных и трендовых сигналов использует возможности для отклонения, закрепляя прибыль. Несмотря на некоторые риски, стратегию можно улучшить с помощью оптимизации параметров, добавления фильтров и т. Д. Чтобы соответствовать различным рыночным условиям.
/*backtest start: 2023-09-26 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 16/09/2021 // 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 indicator plots the moving average described in the January, 1998 issue // of S&C, p.57, "Smoothing Techniques for More Accurate Signals", by Tim Tillson. // This indicator plots T3 moving average presented in Figure 4 in the article. // T3 indicator is a moving average which is calculated according to formula: // T3(n) = GD(GD(GD(n))), // where GD - generalized DEMA (Double EMA) and calculating according to this: // GD(n,v) = EMA(n) * (1+v)-EMA(EMA(n)) * v, // where "v" is volume factor, which determines how hot the moving average’s response // to linear trends will be. The author advises to use v=0.7. // When v = 0, GD = EMA, and when v = 1, GD = DEMA. In between, GD is a less aggressive // version of DEMA. By using a value for v less than1, trader cure the multiple DEMA // overshoot problem but at the cost of accepting some additional phase delay. // In filter theory terminology, T3 is a six-pole nonlinear Kalman filter. Kalman // filters are ones that use the error — in this case, (time series - EMA(n)) — // to correct themselves. In the realm of technical analysis, these are called adaptive // moving averages; they track the time series more aggres-sively when it is making large // moves. Tim Tillson is a software project manager at Hewlett-Packard, with degrees in // mathematics and computer science. He has privately traded options and equities for 15 years. // // 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 T3A(Length, b) => pos = 0.0 xPrice = close xe1 = ema(xPrice, Length) xe2 = ema(xe1, Length) xe3 = ema(xe2, Length) xe4 = ema(xe3, Length) xe5 = ema(xe4, Length) xe6 = ema(xe5, Length) c1 = -b*b*b c2 = 3*b*b+3*b*b*b c3 = -6*b*b-3*b-3*b*b*b c4 = 1+3*b+b*b*b+3*b*b nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3 pos:= iff(nT3Average > close, -1, iff(nT3Average < close, 1, nz(pos[1], 0))) pos strategy(title="Combo Backtest 123 Reversal & T3 Averages", shorttitle="Combo", overlay = true) line1 = input(true, "---- 123 Reversal ----") Length = input(14, minval=1) KSmoothing = input(1, minval=1) DLength = input(3, minval=1) Level = input(50, minval=1) //------------------------- line2 = input(true, "---- T3 Averages ----") LengthT3 = input(5, minval=1) b = input(0.7, minval=0.01,step=0.01) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posT3A = T3A(LengthT3, b) pos = iff(posReversal123 == 1 and posT3A == 1 , 1, iff(posReversal123 == -1 and posT3A == -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 )