
Тренд-следящая стратегия - это торговая стратегия, основанная на движущихся средних. Эта стратегия использует пересечение показателя движущегося среднего ((EMA) и колебательного движущегося среднего ((HMA) для определения направления рыночной тенденции и, соответственно, генерирует сигналы покупки и продажи.
Эта стратегия использует движущиеся средние с двумя различными параметрами: более короткоциклическая ЭМА и более длинноциклическая HMA. ЭМА быстрее реагирует на ценовые изменения, используя их для определения краткосрочных тенденций; HMA медленнее реагирует на ценовые изменения, используя их для определения долгосрочных тенденций.
Когда краткосрочная EMA проходит длинную HMA, считается, что цена вошла в восходящую тенденцию, и эта стратегия будет куплена по рыночной цене при открытии следующей K-линии; когда краткосрочная EMA проходит длинную HMA, считается, что цена вошла в нисходящую тенденцию, и эта стратегия будет продана по рыночной цене при открытии следующей K-линии.
Для оптимизации времени выхода на рынок в стратегию добавлена опция, основанная на Heikin-Ashi. После включения этой опции торговый сигнал стратегии будет основан на линии Heikin-Ashi, а не на оригинальной линии K. Это поможет уменьшить количество ложных сигналов, поскольку линия Heikin-Ashi может фильтровать оригинальную линию K в осцилляторе.
Также в стратегию включена установка стоп-лосса. Когда убытки от хранения достигают заданного стоп-лосса, стратегия будет стоп-лосса по рыночной цене. Это ограничивает максимальные потери от одной сделки.
Эта стратегия имеет следующие преимущества:
Использование EMA и HMA для перекрестного определения направления тенденции позволяет использовать преимущества различных периодических средних значений для повышения точности определения.
Основываясь на трендовых сделках, можно уменьшить количество ненужных сделок, не переворачивая позиции с незначительными колебаниями.
Heikin-Ashi фильтрует ложные сигналы и оптимизирует время входа на рынок.
Используя мобильную стратегию стоп-лосса, можно эффективно контролировать максимальные потери в одной сделке.
Параметры стратегии могут быть настроены, пользователи могут корректировать их в зависимости от разновидности и цикла, чтобы повысить адаптивность.
Также существуют следующие риски:
В качестве стратегии отслеживания тенденций, в целом рынок не очень хорошо себя ведет.
В этом случае они могут принести большие убытки, если тенденция изменится.
Неправильная установка стоп-ложа может привести к ненужным стоп-ложам и может привести к увеличению убытков.
Неправильная настройка параметров также может привести к частому или полному бездействию торгов.
Настройки циклов EMA и HMA требуют оптимизации для разных сортов и циклов.
Он не может полностью отфильтровать риски поддельных взломов.
Эта стратегия может быть оптимизирована в следующих аспектах:
Для повышения точности оценки используются более широкие пакеты показателей, такие как MACD, KDJ и другие.
Добавление дополнительных фильтров, таких как количество сделок, ATR и другие показатели, снижает вероятность ложных прорывов.
Оптимизация параметров скользящих средних для их адаптации к различным видам и торговым циклам.
Оптимизируйте настройки стоп-магнитности, чтобы сделать стоп-убытки более разумными и избежать слишком мягких или слишком жестких.
Подумайте о том, чтобы добавить защиту прибыли, например, мобильную остановку, частичную остановку и т. д., чтобы блокировать прибыль.
Тестирование различных альтернативных методов расчета стоимости хранения, оптимизация расчета стоимости хранения.
Стратегия отслеживания трендов основана на пересечении движущихся средних, используя 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)