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


Дата создания: 2023-11-06 10:34:19 Последнее изменение: 2023-11-06 10:34:19
Копировать: 0 Количество просмотров: 721
1
Подписаться
1617
Подписчики

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

Обзор

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

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

Эта стратегия использует движущиеся средние с двумя различными параметрами: более короткоциклическая ЭМА и более длинноциклическая HMA. ЭМА быстрее реагирует на ценовые изменения, используя их для определения краткосрочных тенденций; HMA медленнее реагирует на ценовые изменения, используя их для определения долгосрочных тенденций.

Когда краткосрочная EMA проходит длинную HMA, считается, что цена вошла в восходящую тенденцию, и эта стратегия будет куплена по рыночной цене при открытии следующей K-линии; когда краткосрочная EMA проходит длинную HMA, считается, что цена вошла в нисходящую тенденцию, и эта стратегия будет продана по рыночной цене при открытии следующей K-линии.

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

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

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

Эта стратегия имеет следующие преимущества:

  1. Использование EMA и HMA для перекрестного определения направления тенденции позволяет использовать преимущества различных периодических средних значений для повышения точности определения.

  2. Основываясь на трендовых сделках, можно уменьшить количество ненужных сделок, не переворачивая позиции с незначительными колебаниями.

  3. Heikin-Ashi фильтрует ложные сигналы и оптимизирует время входа на рынок.

  4. Используя мобильную стратегию стоп-лосса, можно эффективно контролировать максимальные потери в одной сделке.

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

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

Также существуют следующие риски:

  1. В качестве стратегии отслеживания тенденций, в целом рынок не очень хорошо себя ведет.

  2. В этом случае они могут принести большие убытки, если тенденция изменится.

  3. Неправильная установка стоп-ложа может привести к ненужным стоп-ложам и может привести к увеличению убытков.

  4. Неправильная настройка параметров также может привести к частому или полному бездействию торгов.

  5. Настройки циклов EMA и HMA требуют оптимизации для разных сортов и циклов.

  6. Он не может полностью отфильтровать риски поддельных взломов.

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

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Для повышения точности оценки используются более широкие пакеты показателей, такие как MACD, KDJ и другие.

  2. Добавление дополнительных фильтров, таких как количество сделок, ATR и другие показатели, снижает вероятность ложных прорывов.

  3. Оптимизация параметров скользящих средних для их адаптации к различным видам и торговым циклам.

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

  5. Подумайте о том, чтобы добавить защиту прибыли, например, мобильную остановку, частичную остановку и т. д., чтобы блокировать прибыль.

  6. Тестирование различных альтернативных методов расчета стоимости хранения, оптимизация расчета стоимости хранения.

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

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

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

//@version=5
strategy("𝐉𝐔𝐈𝐂𝐘 𝐓𝐑𝐄𝐍𝐃", overlay=true, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

//Heikin Ashi Option
ha = input(true, title = "Heikin Ashi Source")
src = ha ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, barmerge.gaps_off, barmerge.lookahead_off) : close
usestoploss = input(true, title="Stop Loss")

//EMA
len1 = input.int(9, minval=1, title="EMA Length")
ema = ta.ema(src, len1)
emaline = plot(ema, title="EMA", color=color.blue, linewidth=2)

//HMA
len2 = input.int(69, minval=1, title="HMA Length")
hma = ta.wma(2*ta.wma(src, len2/2)-ta.wma(src, len2), math.floor(math.sqrt(len2)))
hmaline = plot(hma, title="HMA", color=color.purple, linewidth=2)
fillcolor = hma < ema ? color.blue : color.purple
fill(emaline, hmaline, title="EMA Fill", color=color.new(fillcolor, 80), editable=true)

//Stop Loss Conditions
stoplosspercent = input.float(title="Stop Loss (%)", defval=-6.5, minval=-50, maxval=0, step=.1) / 100
stoploss = strategy.position_avg_price * (1 + stoplosspercent)
stop = stoploss > close and stoploss[1] < close[1] and strategy.position_size > 0 and usestoploss

//Buy Sell Conditions
buy = hma < ema
sell = hma > ema

//Trades and Alerts
if buy
	strategy.entry("Long Position", strategy.long, comment="BUY")
//	alert("{\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if sell and strategy.openprofit > 0
	strategy.close("Long Position", comment="SELL")
//	alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)
if stop
    strategy.close("Long Position", comment="STOP")
//    alert("{\n\"action\": \"close_at_market_price\",\n\"message_type\": \"bot\",\n\"bot_id\": 6477543,\n\"email_token\": \"9b842a1b-9cb4-48ac-9ed4-524c98557e5f\",\n\"delay_seconds\": 0\n}", alert.freq_once_per_bar)

//Alternate Labels
var pos = 0
if buy and pos <= 0
    pos := 1
if sell and pos >= 0
    pos := -1
buylabel  = pos ==  1 and (pos !=  1)[1]
selllabel = pos == -1 and (pos != -1)[1]

//Plot Labels
plotshape(buylabel,  style=shape.labelup,   location=location.belowbar, color=color.blue,   text="BUY",  textcolor=color.white, size=size.tiny)
plotshape(selllabel, style=shape.labeldown, location=location.abovebar, color=color.purple, text="SELL", textcolor=color.white, size=size.tiny)
plotshape(stop,      style=shape.labeldown, location=location.abovebar, color=color.yellow, text="STOP", textcolor=color.white, size=size.tiny)