이 전략의 주요 아이디어는 주간 가격 트렌드를 기반으로 긴 및 짧은 방향을 결정하는 것입니다. 상승 추세에서는 상승 촛불 패턴이있을 때 길게 간다. 가격이 미리 설정된 수익 수준으로 상승 할 때 이익을 취하고 미리 설정된 스톱 손실 수준으로 떨어지면 손실을 멈추게됩니다.
전략은 먼저 주간 경향을 판단하기 위한 조건을 정의합니다.
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)