Динамическая стратегия последующего стоп-лосса


Дата создания: 2023-12-21 15:58:54 Последнее изменение: 2023-12-21 15:58:54
Копировать: 1 Количество просмотров: 761
1
Подписаться
1623
Подписчики

Динамическая стратегия последующего стоп-лосса

Обзор

Эта стратегия определяет направление тренда на основе солнечной линии, а затем использует новую высокую или низкую точку, сформированную в течение 15 минут в качестве точки остановки или отслеживания точки остановки, чтобы динамически регулировать остановку для блокирования большей прибыли.

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

  1. Для определения направления тренда используйте сравнение цены закрытия дня K с максимальной ценой и минимальной ценой предыдущего дня. Если цена закрытия выше максимальной цены предыдущего дня, она определяется как тенденция к росту; если цена закрытия ниже минимальной цены предыдущего дня, она определяется как тенденция к снижению.

  2. В восходящем тренде, когда 15-минутная линия K закрывается выше максимальной цены предыдущей 15-минутной линии K, делать больше; в нисходящем тренде, когда 15-минутная линия K закрывается ниже минимальной цены предыдущей 15-минутной линии K, делать меньше.

  3. После увеличения, предыдущая 15-минутная наименьшая цена K-линии является стоп-позицией. После дефолта, предыдущая 15-минутная наивысшая цена K-линии является стоп-позицией.

  4. Когда 15-минутная K-линия вновь создает новую высокую или низкую точку, регулируйте остановку. При перегрузке регулируйте ее на новую низкую точку, при разгрузке - на новую высокую точку, чтобы реализовать динамическую слежку за остановкой.

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

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

Конкретные преимущества:

  1. Основанная на трендовых операциях, возможность своевременно оценить движение рынка и выбрать правильное направление торговли.

  2. 15 минут - это время, которое нужно для того, чтобы часто выходить на поле и уловить больше возможностей.

  3. Динамическая корректировка стратегии стоп-порогов, снижающая риск столкновения стоп-порогов с новыми высокими или новыми низкими.

  4. Установка стоп-позиции рациональна, чтобы максимально избежать ненужных потерь.

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

Основные риски этой стратегии связаны с ошибками в определении тенденций. Конкретные риски следующие:

  1. Ошибки в оценке трендов могут привести к ошибке в направлении торговли.

  2. В случае резких колебаний в краткосрочной перспективе, вероятность того, что 15-минутная остановка будет преодолена, высока.

  3. Недостаточное определение поворотных точек может привести к убыткам.

В соответствии с решением:

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

  2. Оценить волатильность рынка, а в случае больших колебаний - снять ограничения на убытки.

  3. Добавление механизмов определения точек перехода в тренде и своевременное урегулирование позиций до перехода.

Направление оптимизации

Однако есть еще много возможностей для оптимизации этой стратегии:

  1. Добавить другие циклические показатели и оптимизировать тренды.

  2. Тестирование различных параметров стоп-рапортов, выбор оптимальных параметров.

  3. Увеличение количественных показателей, чтобы избежать отклонений от количественных показателей, которые приводят к ошибочным сделкам.

  4. Добавление механизмов поворота тренда и оптимизация точек выхода.

  5. Оценка увеличения диапазона Trailing Stop для дальнейшего уменьшения вероятности столкновения с остановкой.

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

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

Исходный код стратегии
/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-15 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Anand's Strategy", overlay=true)

// Get the high and low of the previous day's candle
prev_high = request.security(syminfo.tickerid, "D", high[2])
prev_low = request.security(syminfo.tickerid, "D", low[2])

// var float prev_high = na
// var float prev_low = na

prev_close = request.security(syminfo.tickerid, "D", close[1])


getDayIndexedHighLow(_bar) =>
    _indexed_high = request.security(syminfo.tickerid, "D", high[_bar])
    _indexed_low = request.security(syminfo.tickerid, "D", low[_bar])
    [_indexed_high, _indexed_low]

var index = 2

while index >= 0
    [indexed_high_D, indexed_low_D] =  getDayIndexedHighLow(index)
  
    if prev_close > indexed_high_D or prev_close < indexed_low_D
        prev_high := indexed_high_D
        prev_low := indexed_low_D
        break
    // Decrease the index to move to the previous 15-minute candle
    index := index - 1


// Determine the trade direction based on the candle criterion
trade_direction = prev_close > prev_high ? 1 : (prev_close < prev_low ? -1 : 0)

// Get the current close from 15-minute timeframe
current_close = request.security(syminfo.tickerid, "15", close[1])
prev_high_15m = request.security(syminfo.tickerid, "15", high[2])
prev_low_15m = request.security(syminfo.tickerid, "15", low[2])

// var float prev_high_15m = na
// var float prev_low_15m = na

getIndexedHighLow(_bar) =>
    _indexed_high = request.security(syminfo.tickerid, "15", high[_bar])
    _indexed_low = request.security(syminfo.tickerid, "15", low[_bar])
    [_indexed_high, _indexed_low]


// Loop through previous 15-minute candles until the condition is met
var  i = 2

while i >= 2
    [indexed_high_15m, indexed_low_15m] =  getIndexedHighLow(i)
  
    if current_close > indexed_high_15m or current_close < indexed_low_15m
        prev_high_15m := indexed_high_15m
        prev_low_15m := indexed_low_15m
        break
    // Decrease the index to move to the previous 15-minute candle
    i := i - 1



buy_condition = trade_direction == 1 and current_close > prev_high_15m
stop_loss_buy = prev_low_15m

// Sell Trade Criteria in Negative Trend
sell_condition = trade_direction == -1 and current_close < prev_low_15m
stop_loss_sell = prev_high_15m


// Trailing Stop Loss for Buy Trade
// Custom Trailing Stop Function for Buy Trade
var float trail_stop_buy = na
trailing_buy_condition = buy_condition and current_close > trail_stop_buy
if trailing_buy_condition
    trail_stop_buy := current_close

// Custom Trailing Stop Function for Sell Trade
var float trail_stop_sell = na
trailing_sell_condition = sell_condition and current_close < trail_stop_sell
if trailing_sell_condition
    trail_stop_sell := current_close

// Take Buy Trade with Stop Loss
if (buy_condition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Buy Stop Loss", "Buy", stop=stop_loss_buy)

// Take Sell Trade with Stop Loss
if (sell_condition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Sell Stop Loss", "Sell", stop=stop_loss_sell)

// Set the background color based on the trade direction
bgcolor(trade_direction == 1 ? color.new(color.green, 90) : trade_direction == -1 ? color.new(color.red, 90) : na)