이 전략은 선택된 주식이나 암호화폐에서 잠재적인 브레이크아웃 기회를 식별하기 위해 이중 이동 평균 시스템을 사용합니다. 핵심 원칙은 단기 이동 평균이 장기 이동 평균 아래에서 다시 반등 할 때 구입하고 가격이 장기 이동 평균을 다시 테스트 할 때 판매하는 것입니다.
이 전략은 거래 신호로 서로 다른 기간을 가진 두 가지 간단한 이동 평균 (SMA) 을 사용합니다. 첫 번째 SMA는 전반적인 트렌드 방향을 나타내는 더 긴 기간을 가지고 있습니다. 두 번째 SMA는 단기 가격 변동을 포착하는 더 짧은 기간을 가지고 있습니다.
단기 SMA가 아래에서 장기 SMA를 넘을 때, 전체적으로 가격 상승 추세를 알리고 따라서 전략은 긴 포지션을 개설합니다. 장기 SMA를 다시 테스트하기 위해 가격이 다시 내려갈 때, 단기 pullback가 끝났고 전략은 포지션에서 중단하거나 이익을 취하는 것을 고려합니다.
또한 이 전략은 극한 상황에서의 거래를 피하기 위해
이 전략을 최적화 할 수있는 더 많은 공간이 있습니다.
이 전략은 트렌드 추종 및 풀백 거래의 장점을 결합하여 기회를 탐지하기 위해 이중 이동 평균 시스템을 사용합니다. 동시에 부득이한 포지션 개척을 방지하기 위해 부착 된 과잉 구매 / 과잉 판매 조건이 있습니다. 심층 연구와 최적화를 가치가있는 매우 실용적인 양 거래 전략입니다.
/*backtest start: 2023-02-20 00:00:00 end: 2024-02-26 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=5 strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // Inputs ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA') ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA') sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters") too_deep = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') too_thin = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too') // Calculations ma1 = ta.sma(close,ma_length1) ma2 = ta.sma(close,ma_length2) too_deep2 = (ma2/ma1-1) < too_deep too_thin2 = (ma2/ma1-1) > too_thin // Entry and close condtions var float buy_price = 0 buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2 close_condition1 = (close > ma2) and strategy.position_size > 0 and (close < low[1]) stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na close_condition2 = strategy.position_size > 0 and stop_distance > sl stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na // Entry and close orders if buy_condition strategy.entry('Long',strategy.long) if buy_condition[1] buy_price := open if close_condition1 or close_condition2 strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : "")) buy_price := na plot(ma1,color = color.blue) plot(ma2,color = color.orange)