Двойная балансированная стратегия быков и медведей

Автор:Чао Чжан, Дата: 2023-10-30 10:31:17
Тэги:

img

Обзор

Стратегия двойного баланса быков и медведей - это комбинация стратегий, которая включает в себя стратегию 123 Reversal и индикатор баланса быков и медведей.

Принципы

Стратегия состоит из двух подстратегий:

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

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

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

Преимущества

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

Стратегия 123 Reversal может поймать краткосрочные возможности для реверсии на рынке. Стратегия Bulls and Bears Balance может определить направление долгосрочной тенденции. Использование обоих позволяет поймать реверсии, придерживаясь основного тренда, отфильтровывая более слабые сигналы реверсии и увеличивая показатель выигрыша.

Риски

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

Кроме того, могут возникнуть конфликты между подстратегиями, при этом одна сигнализирует о длинном продлении, а другая - о коротком.

Оптимизация

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

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

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

Заключение

Стратегия двойного баланса быков и медведей сочетает в себе стратегию 123 Reversal и стратегию Bulls and Bears Balance для достижения двойной проверки торговых сигналов и эффективной фильтрации ложных сигналов и повышения стабильности. Между тем, сочетание стратегий реверсии и тренда обеспечивает диверсификацию для снижения рисков. Стратегия может быть дополнительно оптимизирована путем корректировки параметров, добавления третьей стратегии и т. д. для улучшения выравнивания и эффективности капитала.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 03/07/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 new indicator analyzes the balance between bullish and
//    bearish sentiment.
//    One can cay that it is an improved analogue of Elder Ray indicator.
//    To get more information please see "Bull And Bear Balance Indicator" 
//    by Vadim Gimelfarb. 
//
// 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

BullAndBearBalance(SellLevel, BuyLevel) =>
    pos = 0
    value =  iff (close < open , 
              iff (close[1] > open ,  max(close - open, high - low), high - low), 
               iff (close > open, 
                 iff(close[1] > open, max(close[1] - low, high - close), max(open - low, high - close)), 
                  iff(high - close > close - low, 
                   iff (close[1] > open, max(close[1] - open, high - low), high - low), 
                     iff (high - close < close - low, 
                      iff(close > open, max(close - low, high - close),open - low), 
                       iff (close > open, max(close[1] - open, high - close),
                         iff(close[1] < open, max(open - low, high - close), high - low))))))

    value2 = iff (close < open , 
              iff (close[1] < open ,  max(high - close[1], close - low), max(high - open, close - low)), 
               iff (close > open, 
                 iff(close[1] > open,  high - low, max(open - close[1], high - low)), 
                  iff(high - close > close - low, 
                   iff (close[1] < open, max(high - close[1], close - low), high - open), 
                     iff (high - close < close - low, 
                      iff(close[1] > open,  high - low, max(open - close, high - low)), 
                       iff (close[1] > open, max(high - open, close - low),
                         iff(close[1] < open, max(open - close, high - low), high - low))))))
    nBBB = value2 - value
    pos := iff(nBBB < SellLevel, -1,
    	   iff(nBBB >= BuyLevel, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Bull And Bear Balance", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SellLevel = input(-15, step=0.01)
BuyLevel = input(15, step=0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBullAndBearBalance = BullAndBearBalance(SellLevel, BuyLevel)
pos = iff(posReversal123 == 1 and posBullAndBearBalance == 1 , 1,
	   iff(posReversal123 == -1 and posBullAndBearBalance == -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 )

Больше