
Основная идея этой стратегии заключается в том, чтобы объединить два различных типа стратегий - 123 обратных стратегий и абсолютных ценовых колебаний, чтобы получить комбинированный сигнал. В частности, если обе стратегии посылают сигналы о много, то конечный сигнал стратегии - 1 ((делай много); если обе стратегии посылают сигналы о пустоте, то конечный сигнал стратегии - -1 ((делай пустоту); если сигналы двух стратегий несовместимы, то конечный сигнал 0 ((не делать никаких действий)).
Во-первых, принцип 123-й обратной стратегии заключается в следующем: если цена закрытия в течение двух дней подряд ниже цены закрытия предыдущего дня, а случайный индикатор ниже линии сверхпокупа, то делать больше; если цена закрытия в течение двух дней подряд выше цены закрытия предыдущего дня, а случайный индикатор выше линии сверхпродажи, то делать больше.
Во-вторых, абсолютный индикатор ценового колебания показывает разницу между двумя скользящими средними индексов. Когда скользящая средняя выше медленной, она положительна, показывая тенденцию вверх; наоборот, она отрицательна, показывая тенденцию вниз.
Наконец, эта стратегия объединяет сигналы двух подстратегий, то есть действует по этому сигналу, если они дают согласованный сигнал; в противном случае не действует.
Данная стратегия, учитывающая краткосрочные обратные сигналы и среднесрочные тенденции цен, позволяет эффективно идентифицировать переломные моменты в ситуации. По сравнению с использованием только 123 обратных или APO показателей, данная стратегия может значительно повысить надежность сигналов и уменьшить появление ошибочных сигналов.
Кроме того, в этой стратегии используется множество технических показателей, позволяющих судить о состоянии рынка в целом, а не полагаться только на какой-либо из показателей. Это позволяет избежать ошибочного суждения в целом из-за неисправности одного из показателей.
Наибольший риск этой стратегии заключается в том, что 123 обратная стратегия и показатель АПО дают разные сигналы. В этом случае оператору необходимо судить, какой сигнал более надежен, основываясь на собственном опыте. В случае отклонения от этого суждения, возможно, будет пропущена торговая возможность или будут понесены убытки.
Кроме того, если произойдет резкое изменение курса, которое приведет к одновременной потере сигнала краткосрочного обратного сигнала и сигнала среднего длинного тренда, то сигнал стратегии также может быть ошибочным. Оператор должен обращать внимание на влияние крупных политико-экономических событий на курсы и при необходимости может приостановить работу стратегии.
Эта стратегия может быть оптимизирована в следующих направлениях:
Параметры подстратегии оптимизатора, которые делают сигналы подстратегии более надежными. Например, изменение параметров цикла движущейся средней.
Добавление других вспомогательных показателей суждения, формирование механизма голосования. Когда несколько показателей посылают согласованные сигналы, сигнал будет более надежен.
Увеличение стратегии остановки убытков. Когда ценовое движение не соответствует ожиданиям технических показателей, своевременное остановка убытков позволяет избежать дальнейшего расширения убытков.
Оптимизация позиций для открытия и остановки. В сочетании с историческими данными отсчета, устанавливаются более подходящие конкретные значения.
В этой стратегии используются различные технические показатели, чтобы оценить ситуацию, в какой-то степени избежать риска зависимости от одного показателя, повысить точность оценки сигнала. В то же время, в этой стратегии есть определенный простор для оптимизации, и инвесторы могут корректировать параметры в соответствии со своими потребностями. В целом, двойная уверенность в количественном количестве ценовых колебаний сигналов является высоко надежной торговой стратегией, которая заслуживает дальнейшего изучения и применения.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 22/04/2019
// This is combo strategies for get
// a cumulative signal. Result signal will return 1 if two strategies
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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.
//
// Secon strategy
// The Absolute Price Oscillator displays the difference between two exponential
// moving averages of a security's price and is expressed as an absolute value.
// How this indicator works
// APO crossing above zero is considered bullish, while crossing below zero is bearish.
// A positive indicator value indicates an upward movement, while negative readings
// signal a downward trend.
// Divergences form when a new high or low in price is not confirmed by the Absolute Price
// Oscillator (APO). A bullish divergence forms when price make a lower low, but the APO
// forms a higher low. This indicates less downward momentum that could foreshadow a bullish
// reversal. A bearish divergence forms when price makes a higher high, but the APO forms a
// lower high. This shows less upward momentum that could foreshadow a bearish reversal.
//
// 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
AbsolutePriceOscillator(LengthShortEMA, LengthLongEMA) =>
xPrice = close
xShortEMA = ema(xPrice, LengthShortEMA)
xLongEMA = ema(xPrice, LengthLongEMA)
xAPO = xShortEMA - xLongEMA
pos = 0.0
pos := iff(xAPO > 0, 1,
iff(xAPO < 0, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal and Absolute Price Oscillator (APO)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
LengthShortEMA = input(10, minval=1)
LengthLongEMA = input(20, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posAbsolutePriceOscillator = AbsolutePriceOscillator(LengthShortEMA, LengthLongEMA)
pos = iff(posReversal123 == 1 and posAbsolutePriceOscillator == 1 , 1,
iff(posReversal123 == -1 and posAbsolutePriceOscillator == -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 ? red: possig == 1 ? green : blue )