Основная идея этой стратегии состоит в том, чтобы объединить время и индикаторы ATR для установки времени покупки и точек остановки убытков. Стратегия выдает сигналы о покупке в указанный момент времени, использует цену закрытия в то время в качестве цены покупки, а затем устанавливает точку остановки убытков по цене покупки плюс значение ATR. Это может отфильтровать некоторые неуместные сроки покупки при использовании ATR для контроля рисков.
Стратегия состоит из следующих основных частей:
Входные параметры: включая время покупки timeTrade и параметр ATR atrLength. timeTrade определяет время покупки, а atrLength определяет параметр периода ATR.
Расчет показателя ATR: расчет значения ATR atrValue на основе параметра atrLength.
Определите условия покупки: генерируйте сигналы покупки, когда комбинация часов и минут равна timeTrade.
Выдача ордера на покупку: переход на длинный срок, когда условие покупки выполнено, и запись цены покупки.
Установка точки остановки потери: точка остановки потери устанавливается по цене покупки плюс значение ATR. Выход с точки остановки потери, когда цена переходит эту точку.
Начертание: начертание линии уровня стоп-лосса.
Самое большое преимущество этой стратегии заключается в двойном подтверждении времени покупки и точки остановки по времени и индикатору ATR. Это позволяет избежать слепого следования за рынком для покупки и эффективно контролирует риски. Во-вторых, точка остановки, установленная ATR, динамически меняется, что может установить разумный диапазон остановки по колебаниям рынка. Наконец, логика стратегии проста и легко понять и отследить.
К основным рискам этой стратегии относятся:
Неправильное определение времени покупки может привести к потере лучших возможностей покупки или покупки на нежелательных рынках.
Неправильное настройка параметров ATR повлияет на эффективность стратегии, если точка остановки потерь слишком велика или слишком мала.
Не в состоянии эффективно отслеживать долгосрочные тенденции, более подходит для краткосрочных операций.
Основные факторы анализа не учитываются.
Эта стратегия может быть дополнительно оптимизирована в следующих аспектах:
Определить более научное время приобретения путем объединения многофакторных моделей.
Оптимизировать настройки параметров ATR путем объединения моделей волатильности.
Усилить механизм отслеживания тенденций для адаптации к более длительным периодам хранения.
Включить фундаментальный анализ для оценки целесообразности сроков выкупа.
В целом, это относительно простая и интуитивно понятная стратегия высокочастотного внутридневного трейдинга. Основная идея заключается в использовании двойного подтверждения времени и индикаторов ATR для определения времени покупки и точек остановки убытков. Преимущества - контролируемые риски и относительно легко реализовать. Но есть также такие проблемы, как недостаточный выбор времени покупки и неадекватная оптимизация параметров.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Time-based Strategy with ATR Take Profit", overlay=true) // Initialize take profit levels var float takeProfitLevel = na var float takeProfitLevelForSell = na var float buyprice = na var float sellprice = na // Input for the time when the trade should be executed tradeTime = input(0700, "Trade Execution Time (HHMM)", "Specify the time in HHMM format", group="Time Settings") // Calculate ATR for the last 5 minutes atrLength = input(14, "ATR Length", "Specify ATR length", group="ATR Settings") atrValue = request.security(syminfo.tickerid, "5", ta.atr(atrLength)) // Define conditions for buy and sell buyCondition = hour * 100 + minute == tradeTime // and strategy.position_size == 0 sellCondition = hour * 100 + minute == tradeTime // and strategy.position_size > 0 // Execute Buy and Sell orders if (buyCondition) strategy.entry("Buy", strategy.long) buyprice := close takeProfitLevel := buyprice + atrValue strategy.exit("Take Profit BUY", from_entry="Buy", limit =takeProfitLevel) // if (sellCondition) // strategy.entry("Sell", strategy.short) // sellprice := close // takeProfitLevelForSell := sellprice -atrValue // strategy.exit("Take Profit Sell", from_entry="Sell", limit=takeProfitLevelForSell) // Plot horizontal lines for take profit levels plot(takeProfitLevel, color=color.green, title="Take Profit Level (Buy)") plot(takeProfitLevelForSell, color=color.red, title="Take Profit Level (Sell)")