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


Дата создания: 2024-02-27 14:38:45 Последнее изменение: 2024-02-27 14:38:45
Копировать: 0 Количество просмотров: 584
1
Подписаться
1617
Подписчики

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

Обзор

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

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

Эта стратегия использует в качестве торгового сигнала простой скользящий средний ((SMA) двух различных циклов. Первый - более длинный период SMA, который представляет собой направление общей тенденции. Второй - более короткий период SMA, который используется для захвата краткосрочных колебаний цен.

Когда краткосрочный SMA пересекает долгосрочный SMA снизу, это означает, что цена в целом находится в тенденции к росту, поэтому стратегия открывает многоочередные позиции. Когда цена падает, перепроверяя долгосрочный SMA, это предвещает конец краткосрочного pullback, когда стратегия рассматривает остановку убытков или закрытие позиции с прибылью.

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

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

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

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

  • Время окончания реверса трудно определить, может быть предрешено ошибочное остановка
  • В случае изменения тренда, невозможно быстро остановить убытки, возможно, они будут значительными.
  • Неправильная настройка параметров может привести к слишком частым или консервативным сделкам

Оптимизация стратегии

В этой стратегии есть место для дальнейшей оптимизации:

  1. Использование более сложных инструментов для определения колебаний и тенденций цен, таких как ленты Брин, индикатор KD и т. д.
  2. В сочетании с другими факторами, определяющими время окончания ретроспекции, такими как изменение объема торговли, волатильность и т. д.
  3. Динамично изменяйте размер позиции, чтобы максимизировать прибыль
  4. Оптимизация логики остановки с использованием KAMA, облака Ичимоку и более низкой временной шкалы для оценки времени остановки

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

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

Исходный код стратегии
/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)