Низкая волатильность направленная покупка с получением прибыли и остановкой потери

Автор:Чао Чжан, Дата: 2023-12-18 12:07
Тэги:

img

Обзор

Стратегия называется Low Volatility Directional Buy with Profit Taking and Stop Loss. Она использует скользящий средний кроссовер в качестве сигналов покупки и сочетает в себе получение прибыли и остановку потери для блокировки прибыли.

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

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

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

После входа стратегия использует получение прибыли и остановку потери для блокировки прибыли. Приобретение прибыли устанавливается на уровне 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)


Больше