
Тренд-фильтрационная стратегия пересечения движущихся средних и длинных линий является стратегией количественной торговли. Эта стратегия определяет направление тенденции рынка путем пересечения быстро движущихся средних и медленно движущихся средних линий, при условии определения эффективной тенденции. В то же время, эта стратегия также устанавливает более длительный цикл движущихся средних линий в качестве фильтра на тенденции, и только тогда эффективный торговый сигнал может быть сформирован, когда цена прорывает эту движущуюся среднюю линию.
Эта стратегия основана на принципе пересечения движущихся средних линий. В частности, вычисляются движущиеся средние линии с двумя различными периодами, которые обычно устанавливаются на 20-й и 50-й день.
Кроме того, в этой стратегии в качестве индикатора общей тенденции используется 200-дневная скользящая средняя линия. Вышеупомянутый простой перекрестный сигнал считается эффективным только тогда, когда цена превышает 200-дневную линию. Это создает механизм фильтрации тенденций, который позволяет избежать большого количества недействительных сигналов в консолидированном рынке.
Это позволит избежать слишком частого совершения сделок, снизить стоимость сделок и снизить риск проскальзывания.
Мобильная среднелинейная пересекающаяся оценка четкая и понятная.
Механизм фильтрации трендов может отфильтровывать большую часть неэффективных сигналов, повышая выигрышную вероятность.
Гибко адаптируемые параметры передвижной средней линии для различных сортов и временных периодов.
Можно установить стоп-стоп, чтобы контролировать единичные убытки.
Когда цена колеблется вблизи средней линии, может быть создано несколько недействительных сигналов, приводящих к чрезмерной торговле.
Долгоциклическая средняя линия может отстать от рынка и пропустить переломный момент.
Нельзя использовать новые разновидности или короткие периоды.
Параметры стратегии требуют многократного тестирования и оптимизации. Неправильная настройка может привести к неудаче стратегии.
Решение риска:
Применение более длинных средних циклов или добавление условий фильтрации тенденций.
В сочетании с другими показателями, такие как энергетический показатель, показатель колебаний и т. д.
Повышение адаптивности параметров цикла движущейся средней линии.
Добавление параметров оптимизации и механизма обратной связи, динамическая коррекция параметров стратегии.
Попробуйте различные типы скользящих средних, например, скользящие средние с линейным весом.
Добавлена адаптивная мобильная средняя циклическая функция.
Повышение эффективности пересечения движущейся средней линии в сочетании с индикаторами колебаний в определении сегментации тренда.
Добавление алгоритмов машинного обучения для автоматической оптимизации параметров стратегии.
Изучение стратегий комбинирования различных сортов и использование взаимосвязи между ними.
Тренд-фильтрация в целом является простой и практичной стратегией количественного измерения средней и длинной линий. Она определяет среднюю и длинную тенденции путем пересечения равномерных линий, а затем использует фильтрацию тенденций для уменьшения неэффективных сигналов.
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
////////////////////////////////////////////////////////////////////////////////
// Booz Strategy
// Developed for Godstime
// Version 1.1
// 11/28/2021
////////////////////////////////////////////////////////////////////////////////
//@version=4
strategy("Booz Strategy", "", true)
// ----------------------------- Inputs ------------------------------------- //
source_ma_type = input("EMA", "Source MA Type", options=["SMA", "EMA"])
source_ma_length = input(50, "Source MA Length")
fast_ma_length = input(20, "Fast MA Length")
slow_ma_length = input(50, "Slow MA Length")
use_trend_filter = input(true, "Trend Filter")
trend_filter_ma_type = input("EMA", "Trend Filter MA Type", options=["SMA", "EMA"])
trend_filter_ma_length = input(200, "Trend Filter MA Period")
show_mas = input(true, "Show MAs")
swing_trading_mode = input(false, "Swing Trading")
// -------------------------- Calculations ---------------------------------- //
fast_ma = ema(close, fast_ma_length)
slow_ma = ema(close, slow_ma_length)
source_ma = source_ma_type == "EMA"? ema(close, source_ma_length):
sma(close, source_ma_length)
trend_filter_ma = trend_filter_ma_type == "EMA"? ema(close, trend_filter_ma_length):
sma(close, trend_filter_ma_length)
// --------------------------- Conditions ----------------------------------- //
uptrend = not use_trend_filter or close > trend_filter_ma
buy_cond = crossover(fast_ma, slow_ma) and uptrend
downtrend = not use_trend_filter or close < trend_filter_ma
sell_cond = crossunder(fast_ma, slow_ma) and downtrend
// ---------------------------- Plotting ------------------------------------ //
bgcolor(use_trend_filter and downtrend? color.red: use_trend_filter? color.green: na)
plot(show_mas? fast_ma: na, "Fast MA", color.green)
plot(show_mas? slow_ma: na, "Slow MA", color.red)
plot(show_mas? source_ma: na, "Source MA", color.purple)
plot(show_mas? trend_filter_ma: na, "Trend Filter MA", color.blue)
// ---------------------------- Trading ------------------------------------ //
// Inputs
sl_perc = input(1.0, "Stop Loss (in %)", group="Backtest Control")/100
tp_perc = input(1.0, "Take Profit (in %)", group="Backtest Control")/100
leverage = input(10, "Leverage", maxval=100, group="Backtest Control")
bt_start_time = input(timestamp("2021 01 01"), "Backtest Start Time", input.time, group="Backtest Control")
bt_end_time = input(timestamp("2021 12 31"), "Backtest End Time", input.time, group="Backtest Control")
// Trading Window
in_trading_window = true
trade_qty = 1
// Long Side
strategy.entry("Long Entry", strategy.long, trade_qty, when=buy_cond and in_trading_window)
long_tp = strategy.position_avg_price * (1 + tp_perc)
long_sl = strategy.position_avg_price * (1 - sl_perc)
if not swing_trading_mode
strategy.exit("Long Exit", "Long Entry", limit=long_tp, stop=long_sl)
// Short Side
strategy.entry("Short Entry", strategy.short, trade_qty, when=sell_cond and in_trading_window)
short_tp = strategy.position_avg_price * (1 - tp_perc)
short_sl = strategy.position_avg_price * (1 + sl_perc)
if not swing_trading_mode
strategy.exit("Short Exit", "Short Entry", limit=short_tp, stop=short_sl)
// End of trading window close
strategy.close_all(when=not in_trading_window)