Стратегия покупки ATR Stop Loss на основе времени

Автор:Чао Чжан, Дата: 2024-02-28 17:36:50
Тэги:

img

Обзор

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

Принцип стратегии

Стратегия состоит из следующих основных частей:

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

  2. Расчет показателя ATR: расчет значения ATR atrValue на основе параметра atrLength.

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

  4. Выдача ордера на покупку: переход на длинный срок, когда условие покупки выполнено, и запись цены покупки.

  5. Установка точки остановки потери: точка остановки потери устанавливается по цене покупки плюс значение ATR. Выход с точки остановки потери, когда цена переходит эту точку.

  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)")


Больше