
이 전략은 쌍평선 교차 신호에 기반한 정량 거래 시스템으로, 단기 및 장기 이동 평균의 교차로 시장 추세 변화를 식별하고, 동적 스톱 손실 관리와 결합하여 위험을 제어한다. 전략은 시가 단위를 사용하여 거래하며, 신호가 터지면 자동으로 기존 포지션을 청산하고 새로운 포지션을 열고, 스톱 손실 지점을 설정하여 자금을 보호한다.
전략은 두 개의 다른 주기의 간단한 이동 평균 ((SMA) 을 거래 신호의 주요 기초로 사용합니다. 단기 평균선 위에 장기 평균선을 통과할 때, 시스템은 여러 신호를 생성합니다. 단기 평균선 아래에 장기 평균선을 통과할 때, 시스템은 마이너스 신호를 생성합니다. 시스템은 신호가 생성될 때 현재 포지션 상태를 검사합니다. 역으로 포지션이 있다면 먼저 포지션을 평정합니다.
이 전략은 구조가 완전하고 논리가 명확한 양적 거래 전략이다. 동적 스톱스톱 손해 관리 위험과 함께 쌍평선 교차로 트렌드 변화를 포착한다. 전략의 장점은 체계화 정도가 높고 위험은 통제 가능하지만 실장에서는 여전히 다양한 종류의 시장 위험에 대처하는 데 주의를 기울여야 한다. 지속적인 최적화 및 개선으로 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 것으로 보인다. 실장 전에 충분한 피드백 검증을 수행하고 실제 상황에 따라 매개 변수 설정을 조정하는 것이 좋습니다.
/*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)