Многофакторная комбинированная торговая стратегия


Дата создания: 2023-09-12 16:05:10 Последнее изменение: 2023-09-12 16:05:10
Копировать: 0 Количество просмотров: 701
1
Подписаться
1617
Подписчики

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

Принципы стратегии:

  1. Вычислите 123 индикатора поворота, чтобы определить, произошла ли трехмесячная реверсия.

  2. Рассчитайте показатель медвежьей силы Elder, чтобы определить, не произошла ли перепродажа.

  3. При одновременном появлении сигнала “купить” выполняется множественная операция. При одновременном появлении сигнала “продать” выполняется пустота.

  4. Эффективное отфильтрование некоторых шумовых торговых сигналов с помощью проверки показателей.

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

Преимущества этой стратегии:

  1. Проверка многофакторного портфеля снижает вероятность ошибочных сделок.

  2. Повышенная способность распознавать сложные рыночные ситуации

  3. Параметры комбинированной стратегии более сложны для оптимизации, но имеют определенные преимущества.

Риски этой стратегии:

  1. Для достижения оптимального сочетания параметров требуется время и оптимизация.

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

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

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

Исходный код стратегии
/*backtest
start: 2022-09-05 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 27/05/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
// Developed by Dr Alexander Elder, the Elder-ray indicator measures buying 
// and selling pressure in the market. The Elder-ray is often used as part 
// of the Triple Screen trading system but may also be used on its own.
// Dr Elder uses a 13-day exponential moving average (EMA) to indicate the 
// market consensus of value. Bull Power measures the ability of buyers to 
// drive prices above the consensus of value. Bear Power reflects the ability 
// of sellers to drive prices below the average consensus of value.
// Bull Power is calculated by subtracting the 13-day EMA from the day's High. 
// Bear power subtracts the 13-day EMA from the day's Low.
// You can use in the xPrice any series: Open, High, Low, Close, HL2, HLC3, OHLC4 and ect...
//
// 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

BP(Trigger,Length) =>
    pos = 0
    DayHigh = 0.0
    xPrice = close
    xMA = ema(xPrice,Length)
    DayHigh := iff(dayofmonth != dayofmonth[1], high, max(high, nz(DayHigh[1])))
    nRes = DayHigh - xMA
    pos := iff(nRes > Trigger, 1,
    	     iff(nRes < Trigger, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Elder Ray (Bear Power) ", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthBP = input(13, minval=1)
Trigger = input(0)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBP = BP(Trigger,LengthBP)
pos = iff(posReversal123 == 1 and posBP == 1 , 1,
	   iff(posReversal123 == -1 and posBP == -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 )