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