Двойная уверенность в ценовых колебаниях

Автор:Чао Чжан, Дата: 2024-02-18 10:10:16
Тэги:

img

Обзор

Основная идея этой стратегии состоит в том, чтобы объединить стратегию 123 Reversal и индикатор абсолютного ценового осциллятора для получения интегрированного сигнала. В частности, если обе подстратегии излучают длинные сигналы, окончательный сигнал стратегии равен 1 (длинный); если оба излучают короткие сигналы, окончательный сигнал равен -1 (короткий); если сигналы несовместимы, окончательный сигнал равен 0 (без операции).

Принципы

Во-первых, принцип стратегии 123 Reversal заключается в следующем: если цена закрытия ниже, чем цена закрытия предыдущего дня в течение двух дней подряд, и стохастический осциллятор находится ниже линии перекупленности, выходите на длинный курс; если цена закрытия выше, чем цена закрытия предыдущего дня в течение двух дней подряд, и стохастический осциллятор находится выше линии перепродажи, выходите на короткий курс.

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

Наконец, эта стратегия объединяет сигналы двух подстратегий, т.е. следовать сигналу, если они последовательны; в противном случае не работать.

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

По сравнению с использованием 123 Reversals или APO в одиночку, эта стратегия может значительно улучшить надежность сигналов и уменьшить погрешность сигналов.

Кроме того, эта стратегия использует несколько технических индикаторов для всестороннего оценки рынка вместо того, чтобы полагаться на один из них.

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

Самый большой риск возникает, когда 123 Reversal и APO излучают противоречивые сигналы. В таких случаях оператору необходимо судить на основе опыта, какой сигнал является более надежным. Неправильные суждения могут привести к упущенным торговым возможностям или потерям.

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

Оптимизация

Возможные направления оптимизации:

  1. Оптимизировать параметры подстратегии для более надежных сигналов, например, скользящих средних периодов.

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

  3. Своевременная остановка потерь при неблагоприятных движениях цен предотвращает дальнейшие потери.

  4. Оптимизируйте уровни входа и остановки потери на основе исторического обратного тестирования.

Заключение

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


/*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 ) 

Больше