Основная идея этой стратегии состоит в том, чтобы определить направление длинного и короткого на основе еженедельной ценовой тенденции. В восходящем тренде он длинный, когда есть бычьи свечи. Он получает прибыль, когда цена поднимается до предустановленного уровня получения прибыли и останавливает потерю, когда она падает до предустановленного уровня остановки потери.
Стратегия сначала определяет условия для оценки еженедельной тенденции:
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)
Это реализует стратегию остановки потерь и получения прибыли.
Преимущества этой стратегии включают:
Существуют также некоторые риски:
Чтобы контролировать эти риски, можно рассмотреть некоторые оптимизации:
Стратегия также может быть оптимизирована следующими способами:
В целом, это довольно практичная стратегия, подчеркивающая торговлю в соответствии с тенденциями при одновременном контроле рисков. Она может служить базовой стратегией внутридневного трейдинга и может быть модульно оптимизирована для различных рынков и продуктов для создания диверсифицированных торговых портфелей. В фактическом использовании контроль затрат и избегание ловушек остаются критическими, поэтому поддержание правильного менталитета является ключевым.
/*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)