Эта стратегия определяет направление тренда на основе ежедневных свечей и использует новые высокие или низкие точки, сформированные 15-минутными свечами, как цену остановки потери или цену остановки потери, чтобы динамически корректировать остановку потери и закрепить больше прибыли.
Сравните цену закрытия ежедневных свечей с самой высокой и самой низкой ценой предыдущей ежедневной свечи, чтобы определить направление тренда. Если цена закрытия выше, чем самая высокая цена предыдущего дня, она определяется как восходящий тренд. Если цена закрытия ниже, чем самая низкая цена предыдущего дня, она определяется как нисходящий тренд.
Когда вы находитесь в восходящем тренде, займите длинный курс, когда цена закрытия 15-минутного свеча выше, чем самая высокая цена предыдущего 15-минутного свеча. Когда вы находитесь в нисходящем тренде, займите короткий курс, когда цена закрытия 15-минутного свеча ниже, чем самая низкая цена предыдущего 15-минутного свеча.
Установите самую низкую цену предыдущей 15-минутной свечи как цену стоп-лосса после длинного хода. Установите самую высокую цену предыдущей 15-минутной свечи как цену стоп-лосса после короткого хода.
Когда 15-минутный свечник снова достигнет нового максимума или минимума, корректируйте цену стоп-лосса соответственно.
Самое большое преимущество этой стратегии заключается в том, что она может динамически регулировать цену стоп-лосса.
В частности, преимущества включают:
Суждения, основанные на тренде, могут своевременно определить тенденции рынка и выбрать правильное направление торговли.
Торговля в 15-минутный промежуток времени позволяет частые входы и выходы, чтобы поймать больше возможностей.
Динамическая корректировка стоп-лосса на основе новых максимумов или минимумов снижает риски возникновения стоп-лосса.
Разумное расположение стоп-лосса в значительной степени позволяет избежать ненужных потерь.
Основным риском этой стратегии являются ошибки в оценке тенденций.
Неправильное суждение о дневном тренде может привести к неправильному направлению торговли.
Цены могут сильно колебаться в краткосрочной перспективе, увеличивая вероятность того, что 15-минутный стоп-лосс будет достигнут.
Неправильное определение точек перелома тренда может привести к потерям.
Соответствующие решения:
Добавьте показатели из других временных рамок для всеобъемлющих суждений, чтобы избежать зависимости от одного временного рамок.
Оценить волатильность рынка и расслабить диапазон стоп-лосса надлежащим образом во время высокой волатильности.
Добавить механизм идентификации точки переворота тренда для закрытия позиций своевременно до переворота.
Есть еще много возможностей для дальнейшей оптимизации:
Добавьте другие индикаторы временных рамок для оптимизации сбора трендов.
Испытайте различные параметры соотношения стоп-лосса, чтобы найти оптимальные параметры.
Добавить показатели объема, чтобы избежать ошибок от дивергенции объема.
Добавьте механизмы обратного движения тренда для оптимизации точек выхода.
Оценить возможность расширения интервалов цены на остановку для дальнейшего снижения рисков возникновения стоп-лосса.
Общая производительность этой стратегии хороша. Логика ясна и понятна. У нее есть такие преимущества, как динамическая коррекция стоп-лосса, частая торговля и торговля в соответствии с тенденциями. Она может эффективно контролировать риски и блокировать прибыль, и стоит дальнейшего тестирования и оптимизации. Но все еще есть возможности для улучшения. Рекомендуется улучшить такие аспекты, как всеобъемлющее суждение с нескольких углов, оптимизация параметров, добавление механизмов идентификации обратного тренда и т. Д., Чтобы еще больше укрепить стабильность и рентабельность стратегии.
/*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)