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

SMA MA
Дата создания: 2024-05-11 17:32:49 Последнее изменение: 2024-05-11 17:32:49
Копировать: 2 Количество просмотров: 608
1
Подписаться
1617
Подписчики

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

Обзор

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

Стратегия использует три простых скользящих средних (SMA): долгосрочные (по умолчанию 200 циклов), среднесрочные (по умолчанию 21 циклов) и краткосрочные (по умолчанию 9 циклов). Когда цена выше долгосрочной и среднесрочной средних линий, и на краткосрочных средних линиях появляется пересечение, стратегия запускает сигнал покупки. В то же время, стратегия также устанавливает фиксированное количество остановок и остановок, чтобы контролировать риск. Кроме того, стратегия ликвидирует все позиции в 17:00 каждого торгового дня.

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

  1. Вычислить простые скользящие средние по длительности (по умолчанию 200 циклов), средневековости (по умолчанию 21 цикл) и краткосрочности (по умолчанию 9 циклов).

  2. Оценить, выше ли текущие цены, чем долгосрочные и среднесрочные средние линии.

  3. Определить, пересекаются ли текущие цены выше среднесрочной линии.

  4. Когда условие 2 и условие 3 выполнены одновременно, и в настоящее время нет позиций, запускается сигнал покупки.

  5. После покупки устанавливается фиксированное количество стоп-стоп и стоп-лосс, а когда цена достигает стоп-стоп или стоп-лосс, она плавно закрывается.

  6. В 17:00 каждого торгового дня все позиции будут ликвидированы.

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

  1. Простая и понятная: Стратегия основана на скользящих средних, принципы просты, легко понять и реализовать.

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

  3. Контроль риска: стратегия устанавливает фиксированные точки стоп и стоп-лосса, которые помогают контролировать риск отдельных сделок.

  4. Автоматическое выравнивание: стратегия автоматически выравнивает позиции в определенное время каждого торгового дня, чтобы избежать риска на ночь.

Стратегический риск

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

  2. В условиях волатильности рынка, частое перекрестное сигнализирование может привести к неэффективности стратегии.

  3. Риск проскальзывания: при резких рыночных колебаниях остановки и остановки с фиксированным количеством баллов могут не выполняться как ожидалось, что приводит к риску проскальзывания.

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

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

  2. Фильтрация трендов: внедрение других технических показателей, таких как ADX, для подтверждения силы тренда, фильтрация ложных сигналов в рыночных колебаниях.

  3. Многоразовая адаптация: улучшение стратегии для адаптации к различным форматным видам и рыночным особенностям.

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

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

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

Исходный код стратегии
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Médias Móveis de MarcosJR", overlay=true)

// Inputs para data inicial e final
start_year = input.int(2020, title="Ano Inicial")
start_month = input.int(1, title="Mês Inicial")
start_day = input.int(1, title="Dia Inicial")

end_year = input.int(2020, title="Ano Final")
end_month = input.int(12, title="Mês Final")
end_day = input.int(31, title="Dia Final")

// Convertendo dia, mês e ano para timestamp
start_date = timestamp(start_year, start_month, start_day, 00, 00)
end_date = timestamp(end_year, end_month, end_day, 23, 59)

// Condição para verificar se a data está dentro do intervalo especificado
date_within_range = true

// Parâmetros para os períodos das médias móveis
ma_short_period = input.int(9, title="MA Curta")
ma_medium_period = input.int(21, title="MA Média")
ma_long_period = input.int(200, title="MA Longa")

// Definindo médias móveis
ma_short = ta.sma(close, ma_short_period)
ma_medium = ta.sma(close, ma_medium_period)
ma_long = ta.sma(close, ma_long_period)

// Plotando as médias móveis no gráfico com espessura aumentada
plot(ma_short, color=color.blue, title="MA Curta", linewidth=2)
plot(ma_medium, color=color.orange, title="MA Média", linewidth=2)
plot(ma_long, color=color.red, title="MA Longa", linewidth=2)

// Verificando se o preço está acima das médias móveis
above_ma_long = close > ma_long
above_ma_medium = close > ma_medium

// Verificando se o preço tocou na média móvel curta
touch_ma_short = ta.crossover(close, ma_short)

// Condições de compra
buy_condition = date_within_range and above_ma_long and above_ma_medium and touch_ma_short

// Sinais de entrada e saída de compra
var float entry_price = na
if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento
    entry_price := close // Define o preço de entrada ao comprar

// Parâmetros para o tamanho do stop gain e stop loss em pontos
stop_gain_points = input.int(100, title="Stop Gain (pontos)", minval=1)
stop_loss_points = input.int(100, title="Stop Loss (pontos)", minval=1)

// Calcular o preço de saída alvo (Stop Gain) e de stop loss
target_price = entry_price + stop_gain_points * syminfo.mintick
stop_loss_price = entry_price - stop_loss_points * syminfo.mintick

// Sair da operação de compra quando o preço atingir o stop gain ou stop loss
if (strategy.position_size > 0)
    strategy.exit("Venda", "Compra", limit=target_price, stop=stop_loss_price)

// Sinais de entrada de compra
if (buy_condition and strategy.opentrades == 0) // Verifica se não há operações em andamento
    strategy.entry("Compra", strategy.long)

// Plotando setas de compra
plotshape(series=buy_condition, title="Sinal de Compra", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)

// Função para verificar se é 17:00 do mesmo dia
is_17_oclock_same_day = hour == 17 and minute == 0 and hour[1] < 17

// Sair de todas as operações às 17:00 do mesmo dia
if (is_17_oclock_same_day)
    strategy.close_all()