이 전략은 MACD 다단계 시간 프레임 교차 신호와 52주 고저동 동적 지지부진의 압력치를 결합한 양적 거래 시스템이다. 이 전략은 주경과 일계 두 시간 주기 MACD 지표 교차를 통해 거래 신호를 확인하고, 52주 고저동적 형성 동적 지지부진의 압력선을 활용하여 시장 움직임을 판단하는 데 도움을 주며, 더 안정적인 거래 결정을 가능하게 한다.
이 전략은 다음과 같은 핵심 논리에 기반을 두고 있습니다.
이 전략은 MACD 다시간 프레임 크로스 신호와 52주 고저의 동적인 지지부진 압박선을 결합하여 전체적인 트렌드 추적 거래 시스템을 구축한다. 이 전략의 장점은 신호 확인의 신뢰성과 위험 통제의 완전성에 있다. 그러나 여전히 불안한 시장과 뒤처진 위험에 대한 주의가 필요하다. 이 전략은 지속적인 최적화와 개선으로 트렌드 시장에서 안정적인 수익을 얻을 수 있다.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MACD Bitcoin strategy con 52W High/Low (linee estese)", overlay=true)
// === MACD SETTINGS ===
fastLength = 12
slowLength = 26
signalSmoothing = 9
// Funzione per ottenere i valori MACD
getMACD(source, timeframe) =>
[macdLine, signalLine, _] = ta.macd(source, fastLength, slowLength, signalSmoothing)
[macdLine, signalLine]
// Valori MACD Settimanali
[macdWeekly, signalWeekly] = request.security(syminfo.tickerid, "W", getMACD(close, "W"), lookahead=barmerge.lookahead_on)
// Valori MACD Giornalieri
[macdDaily, signalDaily] = getMACD(close, "D")
// Variabile per lo stop loss
var float lowOfSignalCandle = na
// Condizione per l'ingresso
longConditionWeekly = ta.crossover(macdWeekly, signalWeekly)
exitConditionDaily = ta.crossunder(macdDaily, signalDaily)
// Imposta Stop Loss sulla candela giornaliera
if (exitConditionDaily)
lowOfSignalCandle := low
// Condizione di ingresso nel trade
enterTradeCondition = macdWeekly > signalWeekly and ta.crossover(macdDaily, signalDaily)
if (enterTradeCondition)
strategy.entry("MACD Long", strategy.long)
if (not na(lowOfSignalCandle))
strategy.exit("Stop Loss", "MACD Long", stop=lowOfSignalCandle)
if (strategy.position_size == 0)
lowOfSignalCandle := na
// // === 52 WEEK HIGH/LOW SETTINGS ===
// // Input per selezionare tra Highs/Lows o Close
// high_low_close = input.string(defval="Highs/Lows", title="Base 52 week values on candle:", options=["Highs/Lows", "Close"])
// // Calcolo dei valori delle 52 settimane
// weekly_hh = request.security(syminfo.tickerid, "W", ta.highest(high, 52), lookahead=barmerge.lookahead_on)
// weekly_ll = request.security(syminfo.tickerid, "W", ta.lowest(low, 52), lookahead=barmerge.lookahead_on)
// weekly_hc = request.security(syminfo.tickerid, "W", ta.highest(close, 52), lookahead=barmerge.lookahead_on)
// weekly_lc = request.security(syminfo.tickerid, "W", ta.lowest(close, 52), lookahead=barmerge.lookahead_on)
// // Selezione dei valori in base all'input
// high_plot = high_low_close == "Highs/Lows" ? weekly_hh : weekly_hc
// low_plot = high_low_close == "Highs/Lows" ? weekly_ll : weekly_lc
// // === LINEE ORIZZONTALI ESTESE FINO AL PREZZO ATTUALE ===
// var line highLine = na
// var line lowLine = na
// // Linea Orizzontale per il 52W High
// if (na(highLine))
// highLine := line.new(bar_index, high_plot, bar_index + 1, high_plot, color=color.green, width=2, style=line.style_dashed, extend=extend.right)
// else
// line.set_y1(highLine, high_plot)
// line.set_y2(highLine, high_plot)
// // Linea Orizzontale per il 52W Low
// if (na(lowLine))
// lowLine := line.new(bar_index, low_plot, bar_index + 1, low_plot, color=color.red, width=2, style=line.style_dashed, extend=extend.right)
// else
// line.set_y1(lowLine, low_plot)
// line.set_y2(lowLine, low_plot)
// // Etichette per le linee orizzontali
// var label highLabel = na
// var label lowLabel = na
// if (na(highLabel))
// highLabel := label.new(bar_index, high_plot, "52W High", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.small)
// else
// label.set_y(highLabel, high_plot)
// label.set_x(highLabel, bar_index)
// if (na(lowLabel))
// lowLabel := label.new(bar_index, low_plot, "52W Low", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.small)
// else
// label.set_y(lowLabel, low_plot)
// label.set_x(lowLabel, bar_index)
// // Tracciamento delle Linee Estese
// plot(high_plot, title="52W High", color=color.green, style=plot.style_linebr)
// plot(low_plot, title="52W Low", color=color.red, style=plot.style_linebr)