이 전략은 가격 하락에 따라 포지션을 추가하고 일정한 수익 목표에 도달하면 포지션을 닫는 그리드 거래 시스템이다. 핵심 논리는 시장이 미리 설정된 비율로 떨어지면 구매하고 가격이 목표 이익으로 반등되면 모든 포지션을 폐쇄하고이 과정을 반복적으로 실행하여 수익을 창출하는 것입니다. 이 전략은 특히 변동 시장에서 단기 반등을 포착하는 데 적합합니다.
이 전략은 네트워크 거래와 방향적인 영업의 결합 메커니즘을 사용합니다.
이 전략은 구조적으로 간단하지만 실용적인 그리드 트레이딩 전략으로, 미리 설정된 가격 하락에 대량으로 포지션을 구축하고 수익 목표에 도달할 때 균일하게 포지션을 닫는다. 전략의 핵심 장점은 실행 확실성과 위험 다각화에 있다. 그러나 시장 환경 선택과 매개 변수 최적화는 구현 과정에서 매우 중요하다. 동적 스톱 로스를 추가하고 포지션 관리를 개선함으로써 상당한 최적화 잠재력이 있다. 라이브 트레이딩을 위해 실제 시장 조건에 기반한 철저한 백테스팅과 매개 변수 조정이 권장된다.
/*backtest start: 2019-12-23 08:00:00 end: 2025-01-04 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Buy Down 5%, Sell at 5% Profit", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1) // Inputs initial_date = input(timestamp("2024-01-01 00:00:00"), title="Initial Purchase Date") profit_target = input.float(5.0, title="Profit Target (%)", minval=0.1) // Target profit percentage rebuy_drop = input.float(5.0, title="Rebuy Drop (%)", minval=0.1) // Drop percentage to rebuy // Variables var float initial_price = na // Initial purchase price var int entries = 0 // Count of entries var float total_profit = 0 // Cumulative profit var bool active_trade = false // Whether an active trade exists // Entry Condition: Buy on or after the initial date if not active_trade initial_price := close strategy.entry("Buy", strategy.long) entries += 1 active_trade := true // Rebuy Condition: Buy if price drops 5% or more from the initial price rebuy_price = initial_price * (1 - rebuy_drop / 100) if active_trade and close <= rebuy_price strategy.entry("Rebuy", strategy.long) entries += 1 // Exit Condition: Sell if the price gives a 5% profit on the initial investment target_price = initial_price * (1 + profit_target / 100) if active_trade and close >= target_price strategy.close_all(comment="Profit Target Hit") active_trade := false total_profit += profit_target // Display information on the chart plotshape(series=close >= target_price, title="Target Hit", style=shape.labelup, location=location.absolute, color=color.green, text="Sell") plotshape(series=close <= rebuy_price, title="Rebuy", style=shape.labeldown, location=location.absolute, color=color.red, text="Rebuy") // Draw statistics on the chart var label stats_label = na if (na(stats_label)) stats_label := label.new(x=bar_index, y=close, text="", style=label.style_none, size=size.small) label.set_xy(stats_label, bar_index, close) label.set_text(stats_label, "Entries: " + str.tostring(entries) + "\nTotal Profit: " + str.tostring(total_profit, "#.##") + "%")