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


Дата создания: 2023-12-21 15:45:23 Последнее изменение: 2023-12-21 15:45:23
Копировать: 1 Количество просмотров: 454
1
Подписаться
1182
Подписчики

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

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

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

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

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

  1. Использование обратных характеристик средней линии для эффективного выявления краткосрочных шансов на отскок
  2. Построение складов в партиях снижает риски появления единичных пунктов.
  3. Настройка условий остановки, чтобы закрепить прибыль
  4. Фильтрация с использованием стартовых цен и предыдущих минимумов, чтобы избежать ложных прорывов

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

  1. При длительном удержании риски возврата могут быть. Убытки могут расшириться, если рынок продолжит падать.
  2. Сигналы средней линии могут быть ошибочными, что приводит к убыткам
  3. Возможно, не достигнут установленный параметр, не удастся полностью или частично остановить торможение

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

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

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

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

Исходный код стратегии
/*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)