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

Автор:Чао Чжан, Дата: 2024-01-18 12:23:59
Тэги:

img

Обзор

Эта стратегия - это стратегия, основанная на скользящих средних. Она использует линии EMA разных периодов для построения нескольких наборов торговых сигналов для отслеживания тренда. Когда цена опускается ниже длинных скользящих средних, стратегия будет постепенно строить длинные позиции, чтобы снизить среднюю стоимость. Стратегия также устанавливает условия остановки потери на основе коротких поворотов скользящих средних, чтобы обеспечить прибыль.

Логика стратегии

Стратегия использует 5 линий EMA разных периодов для построения торговых сигналов, которые являются 10-дневными, 20-дневными, 50-дневными, 100-дневными и 200-дневными EMA. Стратегия определяет 4 условия покупки на основе ценовой связи с этими линиями EMA для реализации пирамидальной торговли.

Когда цена находится ниже 20-дневной EMA, а выше 50-дневной EMA, запускается первый сигнал покупки. Когда цена находится ниже 50-дневной EMA, а выше 100-дневной EMA, запускается второй сигнал покупки. Третий и четвертый сигналы покупки запускаются, когда цена падает ниже 100-дневной EMA и 200-дневной EMA соответственно. Размер позиции также постепенно расширяется с qt1 до qt4.

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

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

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

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

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

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

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

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

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

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

Заключение

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


/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
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)

Больше