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


Дата создания: 2024-01-18 12:23:59 Последнее изменение: 2024-01-18 12:23:59
Копировать: 1 Количество просмотров: 357
1
Подписаться
1214
Подписчики

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

Обзор

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

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

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

Когда цена ниже 20-й и выше 50-й линии, запускается первая группа покупок; когда цена ниже 50-й и выше 100-й линии, запускается вторая группа покупок; когда цена ниже 100-й и выше 200-й линии, запускается третья группа покупок; когда цена ниже 200-й линии, запускается четвертая группа покупок. Количество покупок также постепенно увеличивается, соответственно qt1, qt2, qt3 и qt4

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

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

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

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

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

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

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

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

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

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

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

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

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