Стратегия направленной покупки со стоп-прибылью и стоп-лоссом с низкой волатильностью


Дата создания: 2023-12-18 12:00:07 Последнее изменение: 2023-12-18 12:00:07
Копировать: 1 Количество просмотров: 573
1
Подписаться
1621
Подписчики

Стратегия направленной покупки со стоп-прибылью и стоп-лоссом с низкой волатильностью

Обзор

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

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

Эта стратегия использует 3 различных цикла скользящих средних: 50 циклов, 100 циклов и 200 циклов. Логика ее покупки заключается в следующем: когда 50 циклов проходит 100 циклов, и когда 100 циклов проходит 200 циклов, делается дополнительный вход.

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

После входа, стратегия использует метод остановки для блокирования прибыли. Цель остановки составляет 8% от цены входа, а линия остановки составляет 4% от цены входа. Установка остановки больше, чем остановка, способствует получению прибыли больше, чем убыток, обеспечивает общую прибыльность стратегии.

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

Эта стратегия имеет следующие преимущества:

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

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

Однако эта стратегия также несет в себе некоторые риски:

  1. Неправильный сигнал может привести к убыткам.
  2. “Все, что мы делаем, - это пытаемся привлечь внимание общественности.
  3. Неправильная установка параметров стоп-лосса может повлиять на прибыль.

Ответ:

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

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

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

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

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

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

//@version=4
strategy(shorttitle='Low volatility Buy w/ TP & SL (by Coinrule)',title='Low volatility Buy w/ TP & SL', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"

//MA inputs and calculations
movingaverage_fast = sma(close, input(50))
movingaverage_slow = sma(close, input(200))
movingaverage_normal= sma(close, input(100))



//Entry 
strategy.entry(id="long", long = true, when = movingaverage_slow > movingaverage_normal and movingaverage_fast > movingaverage_normal)

//Exit
longStopPrice  = strategy.position_avg_price * (1 - 0.04)
longTakeProfit = strategy.position_avg_price * (1 + 0.08)

strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())

//PLOT

plot(movingaverage_fast, color=color.orange, linewidth=2)
plot(movingaverage_slow, color=color.purple, linewidth=3)
plot(movingaverage_normal, color=color.blue, linewidth=2)