
В данной статье представлена стратегия трендового трейдинга, основанная на нескольких движущихся средних. Эта стратегия применяется в основном на рынке фьючерсов NASDAQ, чтобы улавливать тенденции роста рынка путем анализа позиций цены относительно длинных, средних и коротких движущихся средних, и закреплять все позиции в определенное время.
Стратегия использует три простых скользящих средних (SMA): долгосрочные (по умолчанию 200 циклов), среднесрочные (по умолчанию 21 циклов) и краткосрочные (по умолчанию 9 циклов). Когда цена выше долгосрочной и среднесрочной средних линий, и на краткосрочных средних линиях появляется пересечение, стратегия запускает сигнал покупки. В то же время, стратегия также устанавливает фиксированное количество остановок и остановок, чтобы контролировать риск. Кроме того, стратегия ликвидирует все позиции в 17:00 каждого торгового дня.
Вычислить простые скользящие средние по длительности (по умолчанию 200 циклов), средневековости (по умолчанию 21 цикл) и краткосрочности (по умолчанию 9 циклов).
Оценить, выше ли текущие цены, чем долгосрочные и среднесрочные средние линии.
Определить, пересекаются ли текущие цены выше среднесрочной линии.
Когда условие 2 и условие 3 выполнены одновременно, и в настоящее время нет позиций, запускается сигнал покупки.
После покупки устанавливается фиксированное количество стоп-стоп и стоп-лосс, а когда цена достигает стоп-стоп или стоп-лосс, она плавно закрывается.
В 17:00 каждого торгового дня все позиции будут ликвидированы.
Простая и понятная: Стратегия основана на скользящих средних, принципы просты, легко понять и реализовать.
Следить за тенденциями: анализируя положение цены относительно различных средних циклических линий, стратегия может эффективно улавливать восходящие тенденции рынка.
Контроль риска: стратегия устанавливает фиксированные точки стоп и стоп-лосса, которые помогают контролировать риск отдельных сделок.
Автоматическое выравнивание: стратегия автоматически выравнивает позиции в определенное время каждого торгового дня, чтобы избежать риска на ночь.
Параметрическая оптимизация: эффективность стратегии может быть чувствительна к среднелинейным циклическим параметрам, которые требуют оптимизации в зависимости от различных рынков и сортов.
В условиях волатильности рынка, частое перекрестное сигнализирование может привести к неэффективности стратегии.
Риск проскальзывания: при резких рыночных колебаниях остановки и остановки с фиксированным количеством баллов могут не выполняться как ожидалось, что приводит к риску проскальзывания.
Динамический стоп-стоп: в зависимости от рыночной волатильности или ценового движения, динамически корректируется стоп-стоп и стоп-стоп, чтобы оптимизировать риск-прибыль.
Фильтрация трендов: внедрение других технических показателей, таких как ADX, для подтверждения силы тренда, фильтрация ложных сигналов в рыночных колебаниях.
Многоразовая адаптация: улучшение стратегии для адаптации к различным форматным видам и рыночным особенностям.
Управление капиталом: введение более сложных правил управления капиталом, таких как управление позициями и контроль риска, повышение устойчивости стратегии.
Тренд-трейдинговая стратегия, основанная на многомерных линиях, - это простая и понятная стратегия для отслеживания тенденций, которая захватывает восходящие тенденции рынка, анализируя положение цены относительно различных циклических средних линий. Эта стратегия устанавливает фиксированные точки стоп-лора и автоматически ликвидирует позиции в определенное время в день, чтобы контролировать риск.
/*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()