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