
Основная идея этой стратегии заключается в том, чтобы в сочетании с временем и ATR-индикатором устанавливать время покупки и точку остановки. Стратегия посылает сигналы покупки в определенное время в указанный момент времени, используя цену закрытия в качестве цены покупки, а затем в качестве точки остановки добавляет значение ATR к цене покупки. Таким образом, можно отфильтровать некоторые нежелательные моменты покупки, а также использовать ATR для управления риском.
Эта стратегия состоит из следующих частей:
Входные параметры: включают в себя параметры времени покупки timeTrade и ATRatrLength. timeTrade определяет время покупки, аatrLength определяет параметры цикла ATR.
Вычислить ATR: вычислить значение ATR по параметруatrLength.
Определение условий покупки: генерирует сигнал покупки, когда комбинация часов и минут равна timeTrade.
Издание указания на покупку: делать больше, когда соответствует условиям покупки, записывать цену покупки buyprice。
Установка точки стоп-лосса: точка стоп-лосса добавляется к цене покупки. Стоп-лосса выходит, когда цена превышает эту точку стоп-лосса.
Нарисуй горизонтальную линию с остановкой.
Наибольшее преимущество этой стратегии заключается в том, что она использует время и показатели 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)")