Стратегия торговли средней реверсией на основе полос Боллинджера и золотого коэффициента

Автор:Чао Чжан, Дата: 2023-11-16 16:52:55
Тэги:

img

Обзор

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

Логика стратегии

  1. Расчет полос Боллинджера средняя полоса, верхняя полоса и нижняя полоса золотого коэффициента
  • Средняя полоса: vwma n периодов
  • Верхняя полоса: средняя полоса + стандартное отклонение k * n периодов
  • Золотое соотношение нижняя полоса: Средняя полоса - 0,618 * n стандартного отклонения периода
  1. Состав судей
  • 50-дневный MA выше 200-дневного MA, указывает на восходящий тренд
  • Цена достигает или ниже золотого коэффициента нижней полосы, как сигнал покупки
  1. Выход
  • Когда цена превышает верхний диапазон BB, считается, что цена отошла от нижнего диапазона, закрытие позиции
  1. Стоп-потеря
  • Установление фиксированного процента стоп-лосса, например 5%

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

  1. Использование vwma вместо sma для средней линии BB лучше отражает движение цен

  2. Золотое соотношение - это важная поддержка / сопротивление, обеспечивает основу для реверсии

  3. MA в восходящем тренде обеспечивает рост общей тенденции

  4. Фиксированный стоп-лосс контролирует потери для каждой сделки

Риски

  1. Золотое соотношение не гарантирует поддержку, цена может прорваться.

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

  3. MA восходящий тренд может быть ложным прорывом, следует проверить больше индикаторов

  4. Не уверен в длительности реверсии, нуждается в разумной прибыли при выходе

Улучшение

  1. Испытывайте различные комбинации параметров, таких как период BB, SD-множитель, процент фиксированного стоп-лосса и т.д.

  2. Добавить дополнительные показатели для определения тенденции рынка и вероятности реверсии, например MACD, KD и т.д.

  3. Подумайте о динамических остановках, таких как ATR или задержки

  4. Оптимизировать получение прибыли, например, перемещение прибыли, частичное получение прибыли и т.д.

Резюме

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


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mohanee

//@version=4

strategy(title="Bollinger Band with Fib Golden Ratio (0.618)",  shorttitle="Bollinger Band with Fib Golden Ratio" , overlay=true, pyramiding=1,     default_qty_type=strategy.percent_of_equity,  default_qty_value=20, initial_capital=10000, currency=currency.USD)  

length = input(50,title="BB Length" , minval=1)
src1 = input(hlc3, title="Source")
//mult1 = input(1.33, minval=0.001, maxval=50)
mult = input(1.5,title="multplier", minval=0.001, maxval=50)

stopLoss=input(5,title="Stop Loss",minval=1)

basis = vwma(src1, length)
dev = mult * stdev(src1, length)

//dev3 = mult3 * stdev(src, length)

upper_618= basis + (0.618*dev)
lower_618= basis - (0.618*dev)

//lower_618_dev3= basis - (0.618*dev3)



plot_upper618= plot(upper_618, color=color.purple, linewidth=2, title="0.618")
plot(basis, color=color.purple,style=plot.style_circles,  linewidth=2)

plot_lower618= plot(lower_618, color=color.purple, linewidth=2, title="0.618 entry")
//plot_lower618_dev3= plot(lower_618_dev3, color=color.red, linewidth=1, title="0.618 stop")

//plot_lower618= plot(lower_618, color=color.purple, linewidth=1, title="0.618 entry")

ema200=ema(close,200)
ema50=ema(close,50)

plot (ema200, title="ema200", color=color.orange, linewidth=2)
plot (ema50, title="ema50", color=color.blue , linewidth=2)


longCondition= ema50 > ema200

strategy.entry(id="BB_Fib618", long=true, when = longCondition and ( close < lower_618  or  low <= lower_618)  )

strategy.close(id="BB_Fib618",  comment="points="+tostring(close - strategy.position_avg_price,  "###.##") , when = strategy.position_size >= 1  and crossover(close,upper_618 )) 

//stoploss exit
stopLossVal = strategy.position_size>=1 ?  strategy.position_avg_price * ( 1 - (stopLoss/100) ) : 0.00
strategy.close(id="BB_Fib618", comment="SL="+tostring(close - strategy.position_avg_price,  "###.##"), when=abs(strategy.position_size)>=1 and close < stopLossVal ) //and close > strategy.position_avg_price )


Больше