Средняя обратная стратегия, основанная на скользящей средней

Автор:Чао Чжан, Дата: 2021-12-21 15:45:23
Тэги:

img

Стратегия называется Mean Reversion Reverse Strategy Based on Moving Average. Основная идея заключается в том, чтобы покупать, когда цена пробивается через ключевые скользящие средние, и получать прибыль при достижении заранее установленных целей.

Основной принцип этой стратегии заключается в том, чтобы использовать возможности отскока на рынках с ограниченным диапазоном, используя реверсию краткосрочных скользящих средних. В частности, когда цены прорываются через длинные скользящие средние циклы (например, 20-дневные и 50-дневные МА) и показывают признаки сильной перепродажи, цены, как правило, восстанавливаются в некоторой степени из-за средней обратной характеристики колебаний рынка. В это время, если более короткие скользящие средние циклы (например, 10-дневный МА) показывают сигнал восходящего отступления, это будет хорошим моментом для покупки. В этой стратегии он будет покупать, когда цена закрытия ниже 20-дневного МА, а выше 50-дневного МА, чтобы захватить свой отскок с краткосрочным отступлением.

Конкретная логика входа заключается в следующем: купить 1 лот, когда цена пробивается через 20-дневный MA, добавить 1 лот, когда цена пробивается через 50-дневный MA, продолжить добавлять 1 лот, когда она пробивается через 100-дневный MA, и добавить до 1 лота, когда она пробивается через 200-дневный MA, максимум 4 лота. Получить прибыль после достижения заданных целей. Он также устанавливает время и условия остановки потерь.

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

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

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

  1. Если рынок продолжит падать, убытки будут увеличиваться.
  2. Сигналы MA могут давать ложные сигналы, что приводит к потерям.
  3. Не может полностью или частично получать прибыль, если не достигнута целевая прибыль

Руководство по оптимизации

  1. Испытать рентабельность и стабильность при различных параметрах
  2. Подумайте о сочетании других индикаторов, таких как MACD, KD, чтобы решить записи
  3. Выбирать подходящие периоды СО на основе характеристик различных продуктов
  4. Внедрение алгоритмов машинного обучения для динамической оптимизации параметров

Резюме

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


/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Больше