이 전략은 여러 이동 평균, 트렌드 추종, 구조 파업 및 추진력 지표를 결합한 포괄적인 거래 전략이다. 이 전략은 가격 구조 파업 및 인출 항목을 통합하는 동시에 여러 시간 프레임에서 트렌드를 분석하여 거래 신호를 결정합니다. 리스크 관리에 고정된 스톱 로스 및 영업 목표를 고용하고 거래 정확성을 향상시키기 위해 여러 검증 메커니즘을 사용합니다.
이 전략은 시장 트렌드를 결정하기 위해 세 가지 기하급수적인 이동 평균 (EMA25, EMA50, EMA200) 을 사용합니다. 가격이 EMA200 이상이고 EMA200가 상승세를 보이는 경우 상승 추세가 확인되며 그 반대는 하락 추세를 나타냅니다. 트렌드 방향을 결정한 후 전략은 EMA25 또는 EMA50로 가격 인기를 찾습니다. 또한 전략은 최근 최고 또는 최저의 브레이크와 열기 가격에 대한 폐쇄 가격의 위치를 확인하고 모멘텀 방향을 확인해야합니다. RSI 지표는 추가 필터로 작용하며 구매 신호에 RSI 50 이상과 판매 신호에 50 이하를 요구합니다.
이 전략은 여러 가지 기술 지표의 조율된 사용을 통해 거래 기회와 위험 통제를 효과적으로 균형 잡는 잘 설계된 포괄적인 거래 전략이다. 전략의 핵심 강점은 엄격한 다중 검증 메커니즘에 있으며, 이는 거래 성공률을 향상시키는 데 도움이됩니다. 최적화 할 수있는 영역이 있지만 전반적으로 이것은 탐구 할 가치가있는 전략 프레임워크를 나타냅니다.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Custom Buy/Sell Strategy", overlay=true) // Input parameters ema25 = ta.ema(close, 25) ema50 = ta.ema(close, 50) ema200 = ta.ema(close, 200) rsi = ta.rsi(close, 14) sl_pips = 10 tp_pips = 15 // Convert pips to price units sl_price_units = sl_pips * syminfo.pointvalue tp_price_units = tp_pips * syminfo.pointvalue // Define conditions for buy and sell signals uptrend_condition = ema200 < close and ta.rising(ema200, 1) downtrend_condition = ema200 > close and ta.falling(ema200, 1) pullback_to_ema25 = low <= ema25 pullback_to_ema50 = low <= ema50 pullback_condition = pullback_to_ema25 or pullback_to_ema50 break_of_structure = high > ta.highest(high, 5)[1] candle_imbalance = close > open buy_condition = uptrend_condition and pullback_condition and rsi > 50 and break_of_structure and candle_imbalance pullback_to_ema25_sell = high >= ema25 pullback_to_ema50_sell = high >= ema50 pullback_condition_sell = pullback_to_ema25_sell or pullback_to_ema50_sell break_of_structure_sell = low < ta.lowest(low, 5)[1] candle_imbalance_sell = close < open sell_condition = downtrend_condition and pullback_condition_sell and rsi < 50 and break_of_structure_sell and candle_imbalance_sell // Plot signals on the chart plotshape(series=buy_condition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.large) plotshape(series=sell_condition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.large) // Calculate stop loss and take profit levels for buy signals var float buy_sl = na var float buy_tp = na if buy_condition and strategy.position_size == 0 buy_sl := close - sl_price_units buy_tp := close + tp_price_units strategy.entry("Buy", strategy.long) strategy.exit("TP/SL Buy", from_entry="Buy", limit=buy_tp, stop=buy_sl) label.new(bar_index, high, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(buy_sl) + "\nTP: " + str.tostring(buy_tp), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small) // Calculate stop loss and take profit levels for sell signals var float sell_sl = na var float sell_tp = na if sell_condition and strategy.position_size == 0 sell_sl := close + sl_price_units sell_tp := close - tp_price_units strategy.entry("Sell", strategy.short) strategy.exit("TP/SL Sell", from_entry="Sell", limit=sell_tp, stop=sell_sl) label.new(bar_index, low, text="Entry: " + str.tostring(close) + "\nSL: " + str.tostring(sell_sl) + "\nTP: " + str.tostring(sell_tp), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small) // // Plot stop loss and take profit levels for buy signals // if not na(buy_sl) // line.new(x1=bar_index, y1=buy_sl, x2=bar_index + 1, y2=buy_sl, color=color.red, width=1) // if not na(buy_tp) // line.new(x1=bar_index, y1=buy_tp, x2=bar_index + 1, y2=buy_tp, color=color.green, width=1) // // Plot stop loss and take profit levels for sell signals // if not na(sell_sl) // line.new(x1=bar_index, y1=sell_sl, x2=bar_index + 1, y2=sell_sl, color=color.red, width=1) // if not na(sell_tp) // line.new(x1=bar_index, y1=sell_tp, x2=bar_index + 1, y2=sell_tp, color=color.green, width=1)