Эта стратегия сочетает в себе два технических индикатора: канал Дончиана и простую скользящую среднюю (SMA). Она открывает длинную позицию, когда цена прорывается ниже нижней полосы канала Дончиана и закрывается выше SMA. И наоборот, она открывает короткую позицию, когда цена прорывается выше верхней полосы канала Дончиана и закрывается ниже SMA. Длинная позиция закрывается, когда цена достигает верхней полосы канала Дончиана, в то время как короткая позиция закрывается, когда цена достигает нижней полосы. Эта стратегия подходит для рынков с сильными тенденциями.
Динамический канал Дончиана и стратегия комбинации простых скользящих средних - это простая и удобная в использовании структура количественной стратегии торговли. Она строит логику входа и выхода с точки зрения следования тренду и выхода волатильности, что делает ее подходящей для инструментов с сильными тенденциями. Однако стратегия плохо работает на часто ограничивающихся диапазоном рынках, а ее устойчивость параметров посредственна. Приспособляемость и устойчивость стратегии могут быть улучшены путем внедрения вспомогательных условий входа, динамического получения прибыли и механизмов самоприспособления параметров. В целом эта стратегия может служить базовой стратегией, которая может быть дополнительно изменена и улучшена для создания более продвинутых количественных стратегий.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("FBK Donchian Channel Strategy", overlay=true) // Inputs donchian_period = input.int(20, title="Donchian Channel Period") donchian_offset = input.int(1, title="Donchian Channel Offset") sma_period = input.int(200, title="SMA Period") start_date = input(timestamp("2023-01-01 00:00 +0000"), title="Start Date") end_date = input(timestamp("2023-12-31 23:59 +0000"), title="End Date") trade_type = input.string("Both", title="Trade Type", options=["Buy Only", "Sell Only", "Both"]) // Calculate indicators donchian_upper = ta.highest(high, donchian_period)[donchian_offset] donchian_lower = ta.lowest(low, donchian_period)[donchian_offset] sma = ta.sma(close, sma_period) // Plot indicators plot(donchian_upper, color=color.red, title="Donchian Upper") plot(donchian_lower, color=color.green, title="Donchian Lower") plot(sma, color=color.blue, title="SMA") // Helper function to check if within testing period is_in_testing_period() => true // Entry conditions long_condition = low <= donchian_lower and close > sma short_condition = high >= donchian_upper and close < sma // Exit conditions exit_long_condition = high >= donchian_upper exit_short_condition = low <= donchian_lower // Open long position if (is_in_testing_period() and (trade_type == "Buy Only" or trade_type == "Both") and long_condition) strategy.entry("Long", strategy.long) // Close long position if (is_in_testing_period() and exit_long_condition) strategy.close("Long") // Open short position if (is_in_testing_period() and (trade_type == "Sell Only" or trade_type == "Both") and short_condition) strategy.entry("Short", strategy.short) // Close short position if (is_in_testing_period() and exit_short_condition) strategy.close("Short") // Close all positions at the end of the testing period if not is_in_testing_period() strategy.close_all()