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


Дата создания: 2024-01-08 17:09:48 Последнее изменение: 2024-01-08 17:09:48
Копировать: 3 Количество просмотров: 635
1
Подписаться
1617
Подписчики

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

Обзор

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

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

  1. 220 среднелинейный показатель

    • Вычислить скользящие средние индексов за 2 и 20 периодов ((EMA)
    • Торговый сигнал подается, когда цена закрытия прорывается с одной стороны средней линии на другую.
    • Прорыв 20-й средней линии является сигналом, определяющим тенденцию
    • Прорыв 2-й средней линии является сигналом для определения конкретного пункта входа
  2. Показатели баланса многозвездных сил

    • Рассчитывается значение многоголовной силы и значение головной силы.
    • По сравнению с размером двух самолетов, многолетная авиация является относительно слабой.
    • Сильные направления в качестве вспомогательного решения
  3. Объединение двух показателей

    • Двухлинейный индикатор определяет направление тенденции
    • Показатели баланса сил в воздухе для локального регионального суждения
    • Когда они совпадают, они посылают сигнал.

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

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

  1. Используйте двойную равновесие, чтобы определить направление, чтобы избежать обмана в виде локальных колебаний.
  2. Использование многозвездного баланса силы для локального регионального суждения и точного распознавания конкретных точек входа
  3. Два показателя взаимно проверяются, что позволяет отфильтровать определенные случаи недобросовестного обращения и снизить риск торговли.
  4. Гибкая настройка параметров, оптимизируемая для различных рыночных сортов
  5. Стратегические идеи просты, понятны и легко поддаются оптимизации.

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

Однако есть и другие риски, о которых следует помнить:

  1. Задержка сигналов индикатора может привести к слишком глубокой остановке
  2. Двухлинейный индикатор более чувствителен к параметрам
  3. Показатели многолетнего равновесия менее точны в оценке краткосрочных тенденций
  4. В особых ситуациях (частые ложные прорывные сигналы) может возникнуть искажение суждения по обоим показателям.

Ответ:

  1. Сокращение периода удержания позиции или установка соответствующего движущегося стоп-лосса
  2. Тестирование различных комбинаций параметров, чтобы найти оптимальные параметры
  3. Дополнительные показатели для подтверждения
  4. Параметры оптимизации в зависимости от особенностей сорта

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Тестирование большего количества комбинаций параметров среднелинейных показателей
  2. Увеличение стратегии по удержанию убытков и контроль за убытками
  3. Повышение адаптивности параметров в сочетании с показателями волатильности
  4. Добавление моделей машинного обучения для оптимизации динамических параметров
  5. Попробуйте использовать различные индикаторы прогресса вместо показателей многомерного баланса
  6. Разработка визуального интерфейса, позволяющего пользователям тестировать различные параметры

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

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

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

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/05/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// 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.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


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

strategy(title='Combo 2/20 EMA & Bull And Bear Balance', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Bull And Bear Balance ═════●'
SellLevel = input.float(-15, step=0.01, group=I2)
BuyLevel = input.float(15, step=0.01, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosBBB = BBB(SellLevel,BuyLevel)
iff_1 = posEMA20 == -1 and prePosBBB == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBBB == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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)