Тенденция по стратегии с остановкой потерь и получением прибыли

Автор:Чао Чжан, Дата: 2024-02-21 14:55:41
Тэги:

img

Обзор

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

Логика стратегии

Стратегия сначала определяет условия для оценки еженедельной тенденции:

isUptrend = close > close[1]
isDowntrend = close < close[1] 

Если текущее закрытие выше, чем предыдущее закрытие, оно рассматривается как восходящий тренд. В противном случае, это нисходящий тренд.

Затем определяется внутридневный торговый сигнал:

buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

То есть предыдущее закрытие выше, чем предыдущее открытие (бытовая свеча), и предыдущее открытие выше, чем закрытие до предыдущего дня (разрыв вверх), и оно находится в восходящем тренде.

После входа в позицию, стоп-лосс устанавливается на предыдущее закрытие минус 1,382 раза предыдущего дня:

stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())

Приобретение прибыли устанавливается на предыдущее закрытие плюс 2 раза разница между предыдущим закрытием и остановкой убытков:

takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

Это реализует стратегию остановки потерь и получения прибыли.

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

Преимущества этой стратегии включают:

  1. Торговля по тенденциям позволяет избежать рисков обратного тренда
  2. Сигнал входа сочетает бычью свечу и разрыв вверх, чтобы избежать преждевременного длинного входа.
  3. Позиционирование стоп-лосса является разумным для контроля одиночных потерь
  4. Срок получения прибыли большой с высоким потенциалом прибыли

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

Существуют также некоторые риски:

  1. Невозможно определить точки переворота тренда, может упустить поворотные возможности
  2. Стоп-лосс слишком близко с большей вероятностью попасть в ловушку
  3. Без учета контроля затрат, прибыль может снизиться при высокой частоте торговли

Чтобы контролировать эти риски, можно рассмотреть некоторые оптимизации:

  1. Установка прицепов вблизи стоп-лосса для отслеживания стоп-лосса
  2. Добавить модуль управления затратами для ограничения частоты заказов
  3. Добавьте суждение о поддержке/сопротивлении

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

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

  1. Определить тенденцию на основе более факторов, таких как направление MA, изменение объема и т.д.
  2. Оптимизируйте сигналы входа с помощью большего количества моделей свечей
  3. Динамически отслеживать остановку потерь и получение прибыли в соответствии с колебаниями цен
  4. Добавить количественный модуль для управления размером позиции
  5. Комбинации нескольких временных рамок для фильтрации на основе тенденций более высокого уровня

Резюме

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend Following Strategy with Stop Loss and Take Profit", overlay=true)

// Function to get previous day's close and open
getPrevDayClose() =>
    request.security(syminfo.tickerid, "D", close[1])

getPrevDayOpen() =>
    request.security(syminfo.tickerid, "D", open[1])

// Determine weekly trend
isUptrend = close > close[1]
isDowntrend = close < close[1]

// Determine daily conditions for buy
buyCondition = getPrevDayClose() > getPrevDayOpen() and getPrevDayOpen() > getPrevDayClose()[1] and isUptrend

// Calculate stop loss and take profit
stopLoss = getPrevDayClose() - 1.382 * (getPrevDayClose() - getPrevDayOpen())
takeProfit = getPrevDayClose() + 2 * (getPrevDayClose() - stopLoss)

// Strategy logic
if (isUptrend)
    strategy.entry("Buy", strategy.long, when = buyCondition)
    strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=stopLoss, profit=takeProfit)
    
if (isDowntrend)
    strategy.entry("Sell", strategy.short)

// Plotting the trend on the chart
plotshape(series=isUptrend, title="Uptrend", color=color.green, style=shape.triangleup, location=location.abovebar)
plotshape(series=isDowntrend, title="Downtrend", color=color.red, style=shape.triangledown, location=location.belowbar)

// Plotting stop loss and take profit levels on the chart
plot(stopLoss, color=color.red, title="Stop Loss", linewidth=2, style=plot.style_cross)
plot(takeProfit, color=color.green, title="Take Profit", linewidth=2, style=plot.style_cross)


Больше