Стратегия разворота двухсторонней скользящей средней


Дата создания: 2023-11-21 11:28:27 Последнее изменение: 2023-11-21 11:28:27
Копировать: 0 Количество просмотров: 586
1
Подписаться
1617
Подписчики

Стратегия разворота двухсторонней скользящей средней Вот статья, которую я попытался написать по вашему запросу:

Обзор

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

Стратегический принцип

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

  1. Стратегия 123 форм реверсии

Когда цена закрытия на третий день после падения на 2 дня подряд выходит вверх, и низкий показатель Stoch генерирует сигнал покупки при отскоке от низкого уровня; когда цена закрытия на третий день после повышения на 2 дня подряд выходит вниз, и высокий показатель Stoch генерирует сигнал продажи при отходе от высокого уровня.

  1. Стратегия по показателям медвежьей силы

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

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

Стратегические преимущества

  1. В сочетании с обратным сигналом и фильтрацией индикатора, предотвращение ложных прорывов, повышение качества сигнала.

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

  3. Можно использовать компонентные стратегии отдельно или в комбинации.

Стратегический риск

  1. Сигналы обратной связи могут иметь большую глубину обратной связи.

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

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

Оптимизация стратегии

  1. Модуль join позволяет подключать больше источников данных и получать более богатые данные в течение более длительного периода времени.

  2. Применение методов машинного обучения для автоматического поиска и оценки параметров.

  3. Добавление механизмов по удержанию убытков для контроля за одиночными потерями.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-11-13 00:00:00
end: 2023-11-20 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/05/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.
//
// Second strategy
//  Bear Power 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

BearPower(SellLevel, BuyLevel) =>
    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))))))
    pos = 0.0
    pos := iff(value > SellLevel, -1,
	   iff(value <= BuyLevel, 1, nz(pos[1], 0))) 

    pos

strategy(title="Combo Backtest 123 Reversal & 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)
//-------------------------
SellLevel = input(30)
BuyLevel = input(3)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBearPower = BearPower(SellLevel, BuyLevel)
pos = iff(posReversal123 == 1 and posBearPower == 1 , 1,
	   iff(posReversal123 == -1 and posBearPower == -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 )