이 전략은 트레이딩 신호로서 이중 EMA 크로스오버 접근 방식을 사용하며, 빠른 EMA는 65의 기간을 가지고 있고 느린 EMA는 240의 기간을 가지고 있다. 또한 볼륨을 필터 조건으로 사용하며, 현재 볼륨이 지정된 임계치를 초과할 때만 거래를 실행한다. 전략은 각 거래에 고정된 위험 금액 (10달러) 을 설정하고 위험 금액에 따라 위치 크기를 동적으로 계산한다. 빠른 EMA가 느린 EMA를 넘어서서 볼륨 조건이 충족되면 긴 포지션에 진입한다. 반대로 빠른 EMA가 느린 EMA를 넘어서서 볼륨 조건이 충족되면 쇼트 포지션에 진입한다. 스톱 러스 (Stop Loss) 와 취리 (Take Profit) 수준은 고정 가격 거리를 기반으로 설정되며, 손실은 엔트리 가격 이하로 배치되고 수익은 엔트리 가격 이하로 1500달러로 배치된다.
이 전략은 트렌드 결정의 기초로 65/240 이중 EMA 크로스오버를 사용하며, 신호 신뢰성을 향상시키기 위해 볼륨 필터 조건과 결합된다. 고정된 리스크 포지션 사이징과 고정된 가격 스톱 로스/트랙 이윤 설정은 위험을 어느 정도 제어하고 리스크-어워드 비율을 유리한 방향으로 기울일 수 있다. 그러나 전략은 또한 상대적으로 후진한 트렌드 탐지, 포지션 사이징에 대한 유연성 부족, 그리고 스톱 로스 및 트랙 이윤 수준에 대한 동적 조정 부족 등의 문제로 직면한다. 미래 최적화와 개선은 멀티 EMA 시스템을 구축하고, 포지셔닝 사이징을 최적화하고, 동적 스톱 로스 및 트랙 이윤 메커니즘을 구현하고, 더 안정적이고 신뢰할 수 있는 거래 성과를 달성하기 위해 헤지 지표를 통합하는 데 집중할 수 있다.
/*backtest start: 2024-05-06 00:00:00 end: 2024-05-13 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy with 1:3 RR, Volume Filter, and Custom Stop Loss/Take Profit (BTC)", overlay=true, currency="USD", initial_capital=100) // Define EMA lengths ema_length_fast = 65 ema_length_slow = 240 // Calculate EMAs ema_fast = ta.ema(close, ema_length_fast) ema_slow = ta.ema(close, ema_length_slow) // Define crossover conditions bullish_crossover = ta.crossover(ema_fast, ema_slow) bearish_crossover = ta.crossunder(ema_fast, ema_slow) // Plot EMAs plot(ema_fast, color=color.blue, title="Fast EMA") plot(ema_slow, color=color.red, title="Slow EMA") // Define volume filter volume_threshold = 1000 // Adjust as needed // Define risk amount per trade risk_per_trade = 0.5 // $10 USD // Calculate position size based on risk amount stop_loss_distance = 100 take_profit_distance = 1500 position_size = risk_per_trade / syminfo.mintick / stop_loss_distance // Execute trades based on crossovers and volume filter if (bullish_crossover and volume > volume_threshold) strategy.entry("Buy", strategy.long, qty=position_size) strategy.exit("Exit", "Buy", stop=close - stop_loss_distance, limit=close + take_profit_distance) if (bearish_crossover and volume > volume_threshold) strategy.entry("Sell", strategy.short, qty=position_size) strategy.exit("Exit", "Sell", stop=close + stop_loss_distance, limit=close - take_profit_distance)