Тенденция после стратегии с отслеживанием стоп-лосса

Автор:Чао Чжан, Дата: 2023-10-30 15:21:54
Тэги:

img

Обзор

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

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

  1. Установите время начала и остановки обратного тестирования на основе ввода пользователя.

  2. Инициализируйте длинную и короткую цены остановки, и отстающие проценты.

  3. Введите длинный, когда цена превышает линию MA.

  4. Вычислить расстояние стоп-лосса с помощью ATR и установить цену стоп-лосса.

  5. По мере того как цена продолжает расти, остановка потерь вверх, чтобы получить больше прибыли.

  6. Когда цена достигнет порога прибыли, возьмите частичную прибыль.

  7. Входите в короткий период, когда цена опускается ниже линии MA.

  8. Вычислить расстояние стоп-лосса с помощью ATR и установить цену стоп-лосса.

  9. По мере того как цена продолжает падать, остановка потерь снижается, чтобы закрепить больше прибыли.

  10. Когда цена достигнет порога прибыли, возьмите частичную прибыль.

Преимущества

  • Следующая стоп-лосс может следовать тенденциям и получать больше прибыли, защищая прибыль.

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

  • Частичная прибыль помогает зафиксировать некоторые прибыли и уменьшает риски вывода.

  • Простая и понятная логика, легко понятная и реализуемая.

Риски

  • Внезапное изменение тренда может привести к большим потерям при большом расстоянии остановки.

  • Стоп-лосс на основе ATR может быть слишком чувствительным и быть остановлен преждевременно.

  • Неправильное соотношение частичной прибыли может упустить тенденцию или увеличить убытки.

  • Многие параметры нуждаются в оптимизации, например, период ATR, процент отставания, коэффициент получения прибыли.

  • Стратегия зависит только от MA и ATR, могут возникнуть неправильные сигналы.

Оптимизация

  • Добавьте другие индикаторы, такие как MACD, KD, чтобы отфильтровать торговые сигналы и избежать неправильных сигналов MA.

  • Рассмотрим динамические коэффициенты прибыли, основанные на силе тренда.

  • Испытывайте различные периоды ATR для оптимальной стабильности или используйте другие индикаторы для остановки потерь.

  • Внедрить машинное обучение для автоматической оптимизации параметров и их динамической корректировки.

  • Используйте модели глубокого обучения для обнаружения тенденций и автоматического генерирования сигналов.

Резюме

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


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © felipefs

//@version=4
strategy("Meu Script", overlay=true)
plot(ohlc4)

//Funçao de Datas
testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(6, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => time >= testPeriodStart and time <= testPeriodStop ? true : false

//Funções de Trailing Stop
long_stop_price = 0.0
short_stop_price = 0.0
long_trail_perc = 0
short_trail_perc = 0

long_stop_price := if (strategy.position_size > 0)
    stopValue = close * (1 - long_trail_perc)
    max(stopValue, long_stop_price[1])
else
    0

short_stop_price := if (strategy.position_size < 0)
    stopValue = close * (1 + short_trail_perc)
    min(stopValue, short_stop_price[1])
else
    999999

//Função de Debug
debug(value) =>
    x = bar_index
    y = close
    label.new(x, y, tostring(value))
    
//Take Profit
profit = close * (1 + 0.12)
strategy.entry("Long", true)
strategy.exit("Take Profit 1 Long", from_entry="Long", limit=profit, qty_percent=50.0)
 
//ATR Stop
 
// xATRTrailingStopLong = 0.0
// xATR = atr(nATRPeriod)
// nLossLong = nATRMultipLong * xATR

// if (strategy.position_size > 0)
//     xATRTrailingStopLong := max(nz(xATRTrailingStopLong[1]), close - nLossLong)

Больше