Стратегия стоп-лосса и тейк-профита, основанная на времени и индикаторах ATR


Дата создания: 2024-01-29 16:13:57 Последнее изменение: 2024-01-29 16:13:57
Копировать: 0 Количество просмотров: 748
1
Подписаться
1617
Подписчики

Стратегия стоп-лосса и тейк-профита, основанная на времени и индикаторах ATR

Обзор

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

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

Эта стратегия использует hour и minute переменные в сочетании с условием if, чтобы инициировать открытие позиции в момент времени, указанном в параметре стратегии tradeTime. Например, настройка на 0700, означает, что открытие позиции будет инициировано в 7:00 утра по пекинскому времени.

После открытия позиции стратегия использует функцию ta.atr () для вычисления показателя ATR за последние 5 минут и использует его в качестве основы для остановки убытков. Например, после покупки цена остановки = цена покупки + стоимость ATR; после продажи цена остановки = цена продажи - стоимость ATR.

Это позволяет автоматизировать открытие позиции на основе времени и остановки на основе показателей ATR. Таким образом, снижается частота ручных операций и эффективно контролируется риск.

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

Эта стратегия имеет следующие преимущества:

  1. Высокая степень автоматизации. Можно автоматически заказать в назначенное время без постояльцев, значительно снижая частоту ручной работы.

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

  3. Расширяемость: можно легко интегрировать больше показателей или алгоритмов машинного обучения для оказания помощи в принятии решений. Например, в сочетании с пропорциональными показателями для определения тенденций.

  4. Легко реализовать арбитраж с несколькими разновидностями. Стратегия арбитража с открытыми контрактами может быть легко реализована, если только для разных разновидностей будет установлено одинаковое время торговли.

  5. Легкая интеграция с автоматизированной торговой системой. В сочетании с временным управлением заданиями, можно без присмотра 24 часа в сутки запускать стратегические процедуры, что позволяет полностью автоматизировать торговлю.

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

Однако есть и другие риски:

  1. Риск внезапных событий на рынке. Крупные черные свингеры могут привести к экстремальным колебаниям цен, вызвать убытки и привести к большим потерям.

  2. Риск ликвидности знака. Некоторые сорта имеют плохую ликвидность, не могут полностью совершить сделку в точке остановки лимита и не могут погасить остановку.

  3. Риски оптимизации ATR-параметров. ATR-параметры требуют многократного тестирования и оптимизации. Если они будут слишком большими или слишком маленькими, это повлияет на эффективность стратегии.

  4. Оптимизация риска в точке времени. Фиксированное время открытия позиции может пропустить рыночные возможности, что требует корректировки в точке времени в сочетании с дополнительными показателями.

Оптимизация стратегии

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

  1. В сочетании с другими показателями, чтобы оценить состояние рынка, избегайте открытия позиций в неблагоприятной рыночной среде. Например, MACD, RSI и т. Д.

  2. Используйте алгоритмы машинного обучения для прогнозирования оптимального времени открытия хранилища. Можно собрать больше исторических данных, использовать LSTM и т. Д. для моделирования.

  3. Используйте платформы, такие как Heartbeat, для расширения арбитража на несколько видов.

  4. Оптимизация параметров ATR и параметров остановочных потерь. Оптимальные параметры могут быть найдены с помощью дополнительного повторного отбора.

  5. Запуск стратегии на сервере, интеграция временных задач, полностью автоматизированная работа 7x24 часов.

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

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

Исходный код стратегии
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-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 Sell", 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)")