
이 전략은 피포나치 리트랙트 레벨, 이동평균선 교차, 그리고 동력 트렌드 판단을 결합한 통합 거래 시스템이다. 그것은 빠른 이동평균선과 느린 이동평균선의 교차를 통해 거래 신호를 생성하며, 피포나치 리트랙트 레벨을 중요한 가격 기준점으로 사용하며, 트렌드 판단을 결합하여 거래 시기를 최적화한다. 시스템은 또한 위험 관리를 구현하기 위해 백분율 중지 및 중지 설정을 통합한다.
전략의 핵심 논리는 다음과 같은 핵심 요소에 기초합니다.
이것은 여러 클래식 기술 분석 도구를 결합 한 포괄적 인 거래 전략입니다. 이동 평균, 피보나치 회수 및 트렌드 분석을 결합하여 전략은 시장에서 잠재적인 거래 기회를 잡을 수 있습니다. 또한, 완벽한 위험 관리 시스템과 명확한 시각적 인터페이스는 훌륭한 실용성을 제공합니다. 일부 고유한 위험이 있지만, 지속적인 최적화 및 개선으로 전략은 실제 거래에서 더 나은 성능을 기대합니다.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Buy/Sell Strategy with TP, SL, Fibonacci Levels, and Trend", overlay=true)
// Input for stop loss and take profit percentages
stopLossPercentage = input.int(2, title="Stop Loss (%)") // Stop loss percentage
takeProfitPercentage = input.int(4, title="Take Profit (%)") // Take profit percentage
// Example of a moving average crossover strategy
fastLength = input.int(9, title="Fast MA Length")
slowLength = input.int(21, title="Slow MA Length")
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// Entry conditions (Buy when fast MA crosses above slow MA, Sell when fast MA crosses below slow MA)
longCondition = ta.crossover(fastMA, slowMA)
shortCondition = ta.crossunder(fastMA, slowMA)
// Plot moving averages for visual reference
plot(fastMA, color=color.blue, title="Fast MA")
plot(slowMA, color=color.red, title="Slow MA")
// Fibonacci Retracement Levels
lookback = input.int(100, title="Lookback Period for Fibonacci Levels")
highLevel = ta.highest(high, lookback)
lowLevel = ta.lowest(low, lookback)
fib236 = lowLevel + (highLevel - lowLevel) * 0.236
fib382 = lowLevel + (highLevel - lowLevel) * 0.382
fib50 = lowLevel + (highLevel - lowLevel) * 0.5
fib618 = lowLevel + (highLevel - lowLevel) * 0.618
// Display Fibonacci levels as text on the chart near price panel (left of candle)
label.new(bar_index, fib236, text="Fib 23.6%: " + str.tostring(fib236, "#.##"), style=label.style_label_left, color=color.purple, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib382, text="Fib 38.2%: " + str.tostring(fib382, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib50, text="Fib 50%: " + str.tostring(fib50, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, fib618, text="Fib 61.8%: " + str.tostring(fib618, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
// Trend condition: Price uptrend or downtrend
trendCondition = close > fastMA ? "Uptrending" : close < fastMA ? "Downtrending" : "Neutral"
// Remove previous trend label and add new trend label
var label trendLabel = na
if (not na(trendLabel))
label.delete(trendLabel)
// Create a new trend label based on the current trend
trendLabel := label.new(bar_index, close, text="Trend: " + trendCondition, style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
// Buy and Sell orders with Stop Loss and Take Profit
if (longCondition)
// Set the Stop Loss and Take Profit levels based on entry price
stopLossLevel = close * (1 - stopLossPercentage / 100)
takeProfitLevel = close * (1 + takeProfitPercentage / 100)
// Enter long position with stop loss and take profit levels
strategy.entry("BUY", strategy.long)
strategy.exit("Sell", "BUY", stop=stopLossLevel, limit=takeProfitLevel)
// Display TP, SL, and Entry price labels on the chart near price panel (left of candle)
label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, close, text="BUY\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.blue, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
if (shortCondition)
// Set the Stop Loss and Take Profit levels based on entry price
stopLossLevel = close * (1 + stopLossPercentage / 100)
takeProfitLevel = close * (1 - takeProfitPercentage / 100)
// Enter short position with stop loss and take profit levels
strategy.entry("SELL", strategy.short)
strategy.exit("Cover", "SELL", stop=stopLossLevel, limit=takeProfitLevel)
// Display TP, SL, and Entry price labels on the chart near price panel (left of candle)
label.new(bar_index, takeProfitLevel, text="TP\n" + str.tostring(takeProfitLevel, "#.##"), style=label.style_label_left, color=color.green, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, stopLossLevel, text="SL\n" + str.tostring(stopLossLevel, "#.##"), style=label.style_label_left, color=color.red, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
label.new(bar_index, close, text="SELL\n" + str.tostring(close, "#.##"), style=label.style_label_left, color=color.orange, textcolor=color.white, size=size.small, xloc=xloc.bar_index, yloc=yloc.price)
// Plot Buy/Sell labels on chart
plotshape(series=longCondition, title="BUY Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="SELL Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")