이 전략은 이중 이동 평균 크로스오버 신호를 기반으로 한 양적 거래 시스템으로, 단기 및 장기 이동 평균의 교차점을 통해 시장 트렌드 변화를 식별하며, 위험을 제어하기 위해 동적 스톱 로스 및 영업 관리와 결합합니다. 전략은 거래에 대한 시장 주문을 사용하여 신호가 활성화되면 기존 포지션을 자동으로 폐쇄하고 새로운 포지션을 열고, 스톱 로스 및 영업 수준을 설정하여 자본 안전을 보호합니다.
이 전략은 다른 기간의 두 개의 간단한 이동 평균 (SMA) 을 거래 신호의 주요 기초로 사용한다. 단기 MA가 장기 MA를 넘을 때 긴 신호가 생성되고 단기 MA가 장기 MA를 넘을 때 짧은 신호가 생성된다. 시스템은 신호가 발생했을 때 현재 위치 상태를 확인하고, 먼저 모든 카운터 포지션을 닫고, 신호 방향에 따라 새로운 포지션을 열고, 각 거래는 미리 설정된 비율에 따라 자동으로 스톱 로스 및 영업 수준을 설정하여 리스크 리워드 비율의 동적 관리를 달성한다.
이 전략은 명확한 논리를 가진 포괄적 인 양적 거래 전략입니다. 이중 MA 크로스오버를 통해 트렌드 변화를 포착하고 동적인 스톱 로스 및 영리 레벨로 위험을 관리합니다. 전략의 강점은 체계적인 접근과 리스크 제어에 있습니다. 그러나 라이브 트레이딩에서 다양한 시장 위험에주의를 기울여야합니다. 지속적인 최적화와 개선을 통해 전략은 다른 시장 환경에서 안정적인 성능을 유지할 수 있습니다. 라이브 구현 전에 철저한 백테스팅을 수행하고 실제 조건에 따라 매개 변수를 조정하는 것이 좋습니다.
/*backtest start: 2024-10-01 00:00:00 end: 2024-10-31 23:59:59 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD) // Configurable Inputs stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1) take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1) short_ma_length = input.int(title="Short MA Length", defval=9, minval=1) long_ma_length = input.int(title="Long MA Length", defval=21, minval=1) // Moving Averages short_ma = ta.sma(close, short_ma_length) long_ma = ta.sma(close, long_ma_length) // Plotting Moving Averages plot(short_ma, color=color.blue, title="Short MA") plot(long_ma, color=color.red, title="Long MA") // Buy and Sell Signals buy_signal = ta.crossover(short_ma, long_ma) sell_signal = ta.crossunder(short_ma, long_ma) // Market Buy Logic if (buy_signal and strategy.position_size <= 0) // Close any existing short position if (strategy.position_size < 0) strategy.close(id="Market Sell") // Calculate Stop Loss and Take Profit Prices entry_price = close long_stop = entry_price * (1 - stop_loss_percent / 100) long_take_profit = entry_price * (1 + take_profit_percent / 100) // Enter Long Position strategy.entry(id="Market Buy", direction=strategy.long) strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit) // Alert for Market Buy alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close) // Market Sell Logic if (sell_signal and strategy.position_size >= 0) // Close any existing long position if (strategy.position_size > 0) strategy.close(id="Market Buy") // Calculate Stop Loss and Take Profit Prices entry_price = close short_stop = entry_price * (1 + stop_loss_percent / 100) short_take_profit = entry_price * (1 - take_profit_percent / 100) // Enter Short Position strategy.entry(id="Market Sell", direction=strategy.short) strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit) // Alert for Market Sell alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)