
Эта стратегия представляет собой сочетание двух различных стратегий: первая стратегия основана на пересечении двойных движущихся средних цен на акции для формирования сигнала; вторая стратегия основана на волшебном колебательном индикаторе в индикаторе Уильямса. Конечный сигнал принимает пересечение двух стратегических сигналов для формирования окончательного торгового сигнала.
Принцип первой стратегии заключается в том, чтобы создать сигнал покупки, когда закрытие вчерашнего дня было выше, чем закрытие предыдущего дня, и быстрый K-линия 9-го случайного индикатора был ниже, чем медленный D-линия 3-го случайного индикатора; сигнал продажи, когда закрытие вчерашнего дня было ниже, чем закрытие предыдущего дня, и быстрый K-линия 9-го случайного индикатора был выше, чем медленный D-линия 3-го случайного индикатора.
Второй принцип стратегии заключается в том, чтобы вычислить разницу между ценовыми колебаниями на 5 и 34 дня и рассчитать ее как скользящую среднюю. Это сигнал к покупке, когда текущая стоимость выше, чем в предыдущем цикле, и сигнал к продаже, когда текущая стоимость ниже, чем в предыдущем цикле.
В сочетании двух стратегий, конечный сигнал принимает пересечение двух стратегических сигналов. Когда две стратегии одновременно посылают сигнал купить, делать больше; когда две стратегии одновременно посылают сигнал продать, делать пусто.
Эта стратегия сочетает в себе преимущества двух стратегий: Двойной подвижной средней стратегии и стратегии Уилльямса. Двойная подвижная средняя стратегия может захватить средние и длинные тренды; Стратегия Уилльямса может захватить короткие торговые возможности. Комбинация двух стратегий позволяет одновременно получать прибыль и предотвращать ложные прорывы.
Кроме того, стратегия использует множество параметров ввода, которые могут быть оптимизированы в зависимости от различных акций и рынка, чтобы адаптироваться к более широкой рыночной среде.
Самый большой риск в этой стратегии заключается в том, что два стратегических сигнала могут быть несовместимыми. Когда одна стратегия посылает сигнал купить, а другая посылает сигнал продать, стратегия не может создать эффективный сигнал, и может пропустить торговую возможность.
Кроме того, стратегия содержит несколько параметров, что создает определенные трудности в оптимизации параметров. Неправильное сочетание параметров может привести к плохой работе стратегии.
Для снижения риска можно рассмотреть возможность использования только одного из стратегических сигналов; или исследование, чтобы определить диапазон параметров, подходящих для различных рыночных условий.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оценить согласованность двух стратегических сигналов, изучить степень их соответствия при различных параметрах и определить оптимальную комбинацию параметров.
Тестирование эффективности стратегии в разных видах и в разных периодах, чтобы найти оптимальную область применения.
Можно рассмотреть возможность использования стратегии двойного скользящего среднего на другие показатели, такие как индикатор KDJ, для обогащения портфеля стратегий.
Добавление механизмов сдерживания убытков для управления рисками, например, установка максимального сдерживания убытков.
Эта стратегия сочетает в себе стратегию двойных движущихся средних и стратегию Уилльямса, одновременно используя трендовый отслеживание и коротколинейный сигнал. Параметрическая оптимизация позволяет адаптироваться к более широкой рыночной среде. Однако в ней также присутствуют риски, связанные с несоответствием сигналов, а также сложности оптимизации сложных параметров.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 20/06/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
// This indicator plots the oscillator as a histogram where blue denotes
// periods suited for buying and red . for selling. If the current value
// of AO (Awesome Oscillator) is above previous, the period is considered
// suited for buying and the period is marked blue. If the AO value is not
// above previous, the period is considered suited for selling and the
// indicator marks it as red.
// You can make changes in the property for set calculating strategy MA, EMA, WMA
//
// 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
BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA) =>
pos = 0
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
xSMA_hl2 = sma(xSMA1_SMA2, nLengthFast)
nRes = xSMA1_SMA2 - xSMA_hl2
xResWMA = wma(nRes, nLengthWMA)
xResMA = sma(nRes, nLengthMA)
xResEMA = ema(nRes, nLengthEMA)
xSignalSeries = iff(bShowWMA, xResWMA,
iff(bShowMA, xResMA,
iff(bShowEMA, xResEMA, na)))
cClr = nRes > nRes[1] ? blue : red
pos := iff(xSignalSeries[2] < 0 and xSignalSeries[1] > 0, 1,
iff(xSignalSeries[2] > 0 and xSignalSeries[1] < 0, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & Bill Williams. Awesome Oscillator (AC) with Signal Line", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
nLengthSlow = input(34, minval=1, title="Length Slow")
nLengthFast = input(5, minval=1, title="Length Fast")
nLengthMA = input(15, minval=1, title="MA")
nLengthEMA = input(15, minval=1, title="EMA")
nLengthWMA = input(15, minval=1, title="WMA")
bShowWMA = input(type=bool, defval=true, title="Show and trading WMA")
bShowMA = input(type=bool, defval=false, title="Show and trading MA")
bShowEMA = input(type=bool, defval=false, title="Show and trading EMA")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBillWilliamsAC = BillWilliamsAC(nLengthSlow, nLengthFast,nLengthMA, nLengthEMA, nLengthWMA, bShowWMA, bShowMA, bShowEMA)
pos = iff(posReversal123 == 1 and posBillWilliamsAC == 1 , 1,
iff(posReversal123 == -1 and posBillWilliamsAC == -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 )