Тенденциальная стратегия выхода из канала ATR

Автор:Чао Чжан, Дата: 2024-01-03 11:53:52
Тэги:

img

Обзор

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

Принцип

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

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

Основными преимуществами этой стратегии являются:

  1. Использование показателей ATR для построения каналов учитывает волатильность рынка лучше, чем простые скользящие средние.
  2. Двухуровневые точки покупки/продажи позволяют поступать поэтапно с контролируемыми рисками.
  3. Теория прорыва точно определяет ключевые точки тренда.
  4. Конкретный код легко понять и реализовать.

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

Основными рисками этой стратегии являются:

  1. Опираться на один индикатор означает высокую вероятность сбоя при сбое ATR.
  2. Отсутствие стоп-лосса и управления позициями приводит к недостаточному контролю рисков.
  3. Коммунальные услуги нуждаются в проверке и могут быть менее эффективными в условиях реального времени.
  4. Неправильные параметры могут привести к сбоям или переоценке.

Руководство по оптимизации

Направления оптимизации этой стратегии включают:

  1. Добавление фильтров с несколькими показателями для предотвращения ошибок.
  2. Добавление модулей стоп-лосса для повышения контроля рисков.
  3. Добавление контроля позиций и управления деньгами.
  4. Настройка параметров для различных продуктов.
  5. Уменьшение частоты торгов и размеров позиций для торгов в реальном времени.

Резюме

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


/*backtest
start: 2023-12-03 00:00:00
end: 2024-01-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Myhaj_Lito

//@version=5
strategy("Renko Trend Strategy",shorttitle = "RENKO-Trend str.",overlay = true)
TF = input.timeframe(title='TimeFrame', defval="60")
ATRlength = input.int(title="ATR length", defval=60, minval=2, maxval=1000)

HIGH = request.security(syminfo.tickerid, TF, high)
LOW = request.security(syminfo.tickerid, TF, low)
CLOSE = request.security(syminfo.tickerid, TF, close)
ATR = request.security(syminfo.tickerid, TF, ta.atr(ATRlength))


RENKOUP = float(na)
RENKODN = float(na)
H = float(na)
COLOR = color(na)
BUY = int(na)
SELL = int(na)
UP = bool(na)
DN = bool(na)
CHANGE = bool(na)

RENKOUP := na(RENKOUP[1]) ? (HIGH + LOW) / 2 + ATR / 2 : RENKOUP[1]
RENKODN := na(RENKOUP[1]) ? (HIGH + LOW) / 2 - ATR / 2 : RENKODN[1]
H := na(RENKOUP[1]) or na(RENKODN[1]) ? RENKOUP - RENKODN : RENKOUP[1] - RENKODN[1]
COLOR := na(COLOR[1]) ? color.white : COLOR[1]
BUY := na(BUY[1]) ? 0 : BUY[1]
SELL := na(SELL[1]) ? 0 : SELL[1]
UP := false
DN := false
CHANGE := false

// calculating 
if not CHANGE and close >= RENKOUP[1] + H * 2
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR * 2
    RENKODN := RENKOUP[1] + ATR
    COLOR := color.rgb(0, 255, 170,60)
    SELL := 0
    BUY += 2
    BUY


if not CHANGE and close >= RENKOUP[1] + H
    CHANGE := true
    UP := true
    RENKOUP := RENKOUP[1] + ATR
    RENKODN := RENKOUP[1]
    COLOR := color.rgb(0, 230, 38,60)
    SELL := 0
    BUY += 1
    BUY

if not CHANGE and close <= RENKODN[1] - H * 2
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR * 2
    RENKOUP := RENKODN[1] - ATR
    COLOR := color.rgb(255, 92, 43,60)
    BUY := 0
    SELL += 2
    SELL
if not CHANGE and close <= RENKODN[1] - H
    CHANGE := true
    DN := true
    RENKODN := RENKODN[1] - ATR
    RENKOUP := RENKODN[1]
    COLOR := color.rgb(245, 69, 69,60)
    BUY := 0
    SELL += 1
    SELL
//// STRATEGY 
if(UP)
    strategy.entry("Long",strategy.long)
if(DN)
    strategy.entry("Short",strategy.short)


// ploting 

bgcolor(COLOR)


Больше