Стратегия разворота полосы волатильности биткоина


Дата создания: 2023-10-12 17:38:39 Последнее изменение: 2023-10-12 17:38:39
Копировать: 0 Количество просмотров: 738
1
Подписаться
1617
Подписчики

Обзор

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

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

Стратегия рассчитывает волатильность, сравнивая изменения в цене закрытия двух предыдущих K-линий, и использует это изменение в цене для создания движущегося среднего. На движущемся среднем оборачивается стандартный диапазон, внутренний - 1 стандартный диапазон, внешний - 2 стандартные диапазоны. Если цена выше, чем предварительно установленный фильтр движущейся средней, то определяется, что мы находимся в восходящем тренде, поэтому во время восходящей тенденции, если есть отказ, который приводит к пробиванию внутреннего стандартного диапазона, посылается сигнал покупки.

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

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

  • Торговля волатильностью - способ поймать рыночные переломы
  • Двусторонние сделки, которые приносят прибыль как в растущем, так и в падающем рынке
  • Стандартная параметровая настройка проста и удобна
  • Можно легко оптимизировать параметры для различных стандартов
  • Стоп-лост и стоп-стоп устанавливаются разумно и благоприятно для блокировки прибыли

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

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

Как реагировать на риски:

  1. Выбор подходящего волатильного индикатора, контроль одноразовой позиции.

  2. Оптимизация параметров, снижение недействительных сделок.

  3. Применение стоп-лосса, строгое управление деньгами.

  4. Принимая во внимание эффективность исполнения сделок, выбирайте индексы с хорошей ликвидностью

  5. Приспособить параметры к характеристикам различных стандартов.

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

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

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

  2. Настройка параметров диапазона частоты колебаний так, чтобы они были ближе к диапазону колебаний конкретного стандарта.

  3. Добавление дополнительных фильтров, таких как увеличение объема торгов, для дальнейшей проверки торговых сигналов.

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

  5. Тест на более частое время, чтобы поймать больше возможностей для торговли.

  6. Добавлено мобильное отслеживание стоп-стоп-лосс, чтобы прибыль была больше закреплена в аккаунте.

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

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

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

Исходный код стратегии
/*backtest
start: 2023-09-11 00:00:00
end: 2023-10-11 00:00:00
period: 4h
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/
// © gary_trades
//This script is designed to be used on volatile securities/tickers so is best suited for day charts on Crypto (particularly good for BTC).
//It takes both long and short trades and the main indicator settings can be changed by the use so they can test for ideal settings for ticker of interest.

//@version=4

strategy("BTC Volatility Band Strategy", shorttitle="Vol Band Strategy", overlay=false, margin_long=100, margin_short=100)

//VOLATILTY
CandleChange = ((close - close[1])/close)*100         //OR CandleChange = ((close[2] - close[1])/close)*100
plot(CandleChange, color=color.red, linewidth = 1)

//VOLATILITY BANDS 
MAlen = input(7, minval=3, maxval=30, title=" MA Length")
MAout = sma(CandleChange, MAlen)
plot(MAout, color=color.black, display=display.none)

InnerBand = input(1.0, minval=0.5, maxval=5, title="Inner Band")
OuterBand = input(2.00, minval=0.5, maxval=10, title="Outer Band")
devInner = InnerBand * stdev(CandleChange, MAlen)
devOuter = OuterBand * stdev(CandleChange, MAlen)

upper1 = MAout + devInner
lower1 = MAout - devInner
b1 = plot(upper1, "Upper Inner", color=color.gray)
b2 = plot(lower1, "Lower Inner", color=color.gray)
upper2 = MAout + devOuter
lower2 = MAout - devOuter
b3 = plot(upper2, "Upper Outer", color=color.gray)
b4 = plot(lower2, "Lower Outer", color=color.gray)
fill(b1, b3, color.rgb(250,145,175,70), title="Background")
fill(b2, b4, color.rgb(250,145,175,70), title="Background")

band1 = hline(25, "Upper Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)
band0 = hline(-25, "Lower Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)

//LONG FILTER
VolFilterL = CandleChange <= lower1 and CandleChange > lower2
SMAFilterL = close[1] > sma(close[1], 50)
PriceFilterL = close > lowest(close,7)
LongFilter = VolFilterL and SMAFilterL and PriceFilterL
bgcolor(LongFilter ? color.new(color.green, 80) : na)

//SHORT FILTER
VolFilterS = CandleChange >= upper1 and CandleChange < upper2
SMAFilterS = close[1] < sma(close[1], 50)
PriceFilterS = close < highest(close,7)
ShortFilter = VolFilterS and SMAFilterS and PriceFilterS
bgcolor(ShortFilter ? color.new(color.red, 80) : na)

//SETTING BACK TEST INPUTS
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2100, title = "To Year", minval = 1970)

startDate = timestamp("America/New_York", fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp("America/New_York", toYear, toMonth, toDay, 00, 00)
time_condition = time >= startDate and time <= finishDate

//ORDER DETAILS
Risk = (high[7] - low[7])/ 7
Profit = Risk*1.15
Loss = Risk*0.65

AlertMSG = "New stategy position" + tostring(strategy.position_size)

if (time_condition) 
    strategy.entry("Long", strategy.long, when = LongFilter, alert_message=AlertMSG)
    if (LongFilter)
        LongStop = strategy.position_avg_price - Loss
        LongProfit = strategy.position_avg_price + Profit 
        strategy.exit("TP/SL", "Long", stop=LongStop, limit=LongProfit)

if (time_condition)
    strategy.entry("Short", strategy.short, when = ShortFilter, alert_message=AlertMSG)
    if (ShortFilter)
        ShortStop = strategy.position_avg_price + Loss
        ShortProfit = strategy.position_avg_price - Profit 
        strategy.exit("TP/SL", "Short", stop=ShortStop, limit=ShortProfit)