Количественная торговая стратегия, основанная на полосах Боллинджера и MACD


Дата создания: 2024-02-23 14:30:30 Последнее изменение: 2024-02-23 14:30:30
Копировать: 0 Количество просмотров: 708
1
Подписаться
1617
Подписчики

Количественная торговая стратегия, основанная на полосах Боллинджера и MACD

Обзор

Стратегия является количественной торговой стратегией, основанной на показателях Brin Belt и MACD. Она объединяет прорывные сделки в Brin Belt и отслеживание тенденций MACD, чтобы повысить качество торговых сигналов.

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

Эта стратегия основана на оценке торговых сигналов, полученных от индекса Брин-Бенд и MACD.

Индикатор буринской полосы состоит из средней, верхней и нижней полос. Он генерирует сигнал покупки, когда цена прорывается вниз, и сигнал продажи, когда цена прорывается вверх. Стратегия использует принцип прорыва буринской полосы, чтобы определить более сильный сигнал прорыва.

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

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

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

  1. В сочетании с BRI и MACD, торговый сигнал становится более надежным.

  2. В трендовых ситуациях перекрестный трендовый отслеживание по Брин-полосе и MACD-движущаяся средняя дают сильный входный сигнал.

  3. С помощью двойных показателей можно эффективно отфильтровать ложные сигналы и снизить риск торговли.

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

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

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

  2. MACD показывает три сигнала “купи-купи” в низкой зоне, и может столкнуться с риском обратного падения.

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

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

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

  1. Тестирование более длительных циклов Бринских полос, снижение частоты торгов.

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

  3. Добавление фильтров других показателей, таких как KDJ, RSI и т. д., улучшает качество сигнала.

  4. Настройка динамического стоп-поста, автоматического стоп-поста и выхода из сделки, контроль риска по отдельной сделке.

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

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

Исходный код стратегии
/*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=5
strategy("Nabz-BBMACD-2022-V1.1", shorttitle="BBM-Nabz", overlay=true)


// My 1st Pine Scrpt Indicator
// Work on best on 1Hr Chart
// Open for Help/Donations.


var float lastentry=1
int result = 0
float x = 0
drawshape = false

/////////////EMA
shortest = ta.ema(close, 20)
short = ta.ema(close, 50)
longer = ta.ema(close, 100)
longest = ta.ema(close, 200)

plot(shortest, color = color.red)
plot(short, color = color.orange)
plot(longer, color = color.aqua)
plot(longest, color = color.blue)

///////////// RSI
RSIlength = input(6,title="RSI Period Length") 
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = ta.rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input.int(200, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = ta.sma(price, BBlength)
BBdev = BBmult * ta.stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = ta.crossover(source, BBlower)
sellEntry = ta.crossunder(source, BBupper)



////////////// MACD
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength)
aMACD = ta.ema(MACD, MACDLength)
delta = MACD - aMACD


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na


///////////Strategy

bool tcu = not (ta.crossunder(price[0],shortest[0]))


if (((price[1]<BBlower[1]) and (ta.crossover(price,BBlower))))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 1st IF")
    
if (((ta.crossover(delta, 0.0) and (ta.crossover(price,BBlower)))))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 2nd IF")    
    
if (((ta.crossover(delta, 0.0)) and (low[0]>shortest[0])) and (price[1]<low))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 3rd IF")   //else

if (((ta.crossover(delta, 0.01)) and (high[1]<BBupper)) and (tcu))
    lastentry := low[1]
    strategy.entry("RSI_BB_L", strategy.long, comment="Buy 4th IF")

       
if ((ta.crossunder(low[0],shortest[0]) and close<shortest))
    strategy.close(id="RSI_BB_L", comment="Close by 1st IF")
    
    
    
if (price<lastentry)
    drawshape := true
    
if (price<strategy.opentrades.entry_price(0)/1.01175734321249)
    strategy.close(id="RSI_BB_L", comment="Close by 2nd IF")



plot(strategy.opentrades.entry_price(0), color=color.yellow)