Стратегия покупки по времени стоп-лосса, основанная на времени и ATR


Дата создания: 2024-02-28 17:36:50 Последнее изменение: 2024-02-28 17:36:50
Копировать: 0 Количество просмотров: 630
1
Подписаться
1617
Подписчики

Стратегия покупки по времени стоп-лосса, основанная на времени и ATR

Обзор

Основная идея этой стратегии заключается в том, чтобы в сочетании с временем и ATR-индикатором устанавливать время покупки и точку остановки. Стратегия посылает сигналы покупки в определенное время в указанный момент времени, используя цену закрытия в качестве цены покупки, а затем в качестве точки остановки добавляет значение ATR к цене покупки. Таким образом, можно отфильтровать некоторые нежелательные моменты покупки, а также использовать ATR для управления риском.

Стратегический принцип

Эта стратегия состоит из следующих частей:

  1. Входные параметры: включают в себя параметры времени покупки timeTrade и ATRatrLength. timeTrade определяет время покупки, аatrLength определяет параметры цикла ATR.

  2. Вычислить ATR: вычислить значение ATR по параметруatrLength.

  3. Определение условий покупки: генерирует сигнал покупки, когда комбинация часов и минут равна timeTrade.

  4. Издание указания на покупку: делать больше, когда соответствует условиям покупки, записывать цену покупки buyprice。

  5. Установка точки стоп-лосса: точка стоп-лосса добавляется к цене покупки. Стоп-лосса выходит, когда цена превышает эту точку стоп-лосса.

  6. Нарисуй горизонтальную линию с остановкой.

Анализ преимуществ

Наибольшее преимущество этой стратегии заключается в том, что она использует время и показатели ATR для двойного подтверждения времени покупки и остановки убытков. Это позволяет избежать слепого следования за покупкой на рынке и эффективно контролирует риск. Во-вторых, остановка убытков, установленная с использованием ATR, является динамичной и позволяет устанавливать разумные пределы убытков в зависимости от степени волатильности рынка. Наконец, логика стратегии проста, легко понятна и отслеживается.

Анализ рисков

Основные риски, связанные с этой стратегией:

  1. Неправильно настроенное время покупки может привести к тому, что вы упустите лучший момент покупки или купите на нежелательном рынке.

  2. ATR параметры неправильно настроены, слишком большие или слишком маленькие стоп-поики могут повлиять на эффективность стратегии.

  3. Нельзя эффективно отслеживать длинную линию, она лучше подходит для короткой линии.

  4. Не учитываются фундаментальные аналитические факторы.

Направление оптимизации

Эта стратегия может быть улучшена в следующих аспектах:

  1. Покупки в более научных целях были определены с использованием многофакторной модели.

  2. Оптимизация параметров ATR в сочетании с моделью волатильности.

  3. Дополнение механизма отслеживания тенденций, позволяющего приспосабливаться к более длительным периодам хранения.

  4. Покупатели, которые покупают данные, не могут рассчитывать на то, что они будут использовать данные, полученные в результате покупки.

Подвести итог

Эта стратегия в целом является более простой и интуитивно понятной стратегией высокочастотного интрадного трейдинга. Основная идея заключается в использовании времени и двойного подтверждения показателей 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)")