스윙 트레이딩 전략


생성 날짜: 2023-10-11 16:29:37 마지막으로 수정됨: 2023-10-11 16:29:37
복사: 0 클릭수: 647
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

개요

이것은 이동 평균의 교차에 기반한 트렌드 추적 전략으로, 스톱 로드 관리와 레버리지 효과를 결합하여, 여러 시장의 트렌드를 식별하고 이익을 극대화하기 위한 것이다.

전략 원칙

이 전략은 빠른 이동 평균과 느린 이동 평균의 교차를 거래 신호로 사용한다. 빠른 이동 평균 위에 느린 이동 평균을 통과할 때, 다중 상위 포지션을 취하고, 빠른 이동 평균 아래 느린 이동 평균을 통과할 때, 빈 상위 포지션을 취한다.

비주류 트렌드의 노이즈 거래를 필터링하기 위해, 전략은 또한 200 일 이동 평균을 트렌드 필터로 도입한다. 가격이 200 일 이동 평균보다 높거나 낮을 때만 거래 신호를 낸다.

전략은 간격 거래 중지 손실 전략을 사용합니다. 거래 후 고정 비율의 중지 손실과 중지 손실이 설정됩니다. 예를 들어, 중지 손실이 1%이며, 중지 손실 또는 중지 가격에 도달하면 청산됩니다.

거래 수익을 증대하기 위해 전략은 레버리지 효과를 사용합니다. 시장의 특성에 따라 적절한 레버리지 비율을 선택할 수 있습니다. 예를 들어 10배 레버리지입니다.

우위 분석

  • 전략의 장점 중 하나는 암호화폐, 주식 및 선물 시장을 포함한 여러 시장의 트렌드를 식별할 수 있다는 것입니다.

  • 빠른 속도 평균선 교차와 트렌드 필터를 적용하여 트렌드 방향을 더 잘 식별하고 트렌드 상황에서 더 나은 승률을 얻을 수 있습니다.

  • 간격적인 스톱 로스 스 전략은 단일 손실을 견딜 수 있는 범위 내에서 제어할 수 있으며, 전략의 안정적인 운영에 도움이 된다.

  • 레버리지 효과는 거래 수익을 증대시켜 전략의 장점을 최대한 활용할 수 있습니다.

  • 시각화 된 인터페이스 디자인, 다양한 배경 색상 로그인을 사용하여 다중 헤드 및 빈 헤드 시장, 사용자는 직관적으로 현재의 시장 상황을 판단 할 수 있습니다.

위험 분석

  • 전략은 트렌드 트레이딩 사상에 기반하며, 불안정한 시장에서 거래 효과는 할인된다. 위치 크기를 적절히 통제해야 한다.

  • 고정 비율의 중지 손실 은 리베이트의 위험이 있으며, 특정 시장에 따라 중지 손실 의 폭을 조정해야합니다.

  • 레버리지는 거래 규모를 확대하고 거래 위험을 증가시킵니다. 레버리지는 통제해야하며, 허용 가능한 손실 범위를 초과하지 않습니다.

  • 이동 평균 자체는 지연성이 있으며 거래 신호 지연 문제가 발생할 수 있습니다.

최적화 방향

  • 다양한 변수 조합의 전략 성능을 연구할 수 있으며, 변수 조합이 더 우수한 속속 평균선 길이를 선택할 수 있다.

  • 다른 지표 또는 모델과 결합하여 필터링 신호로 전략의 정확성을 향상시킬 수 있습니다. 예를 들어 ATR 중지, RSI 지표 등을 도입합니다.

  • 트렌드 인식 지표, DC 지표 등으로 트렌드를 판단하는 전략을 더욱 향상시킬 수 있다.

  • 기계 학습 모델과 결합하여 전략적 신호 최적화를 통해 보다 효과적인 거래 시기를 식별할 수 있다.

  • 동적으로 스톱스트로프를 조정하는 것을 고려할 수 있으며, 변동률과 시장 상황에 따라 더 합리적인 스톱스트로프를 설정할 수 있다.

요약하다

이 전략은 전반적으로 과학적인 시스템으로 트렌드 추적 방법을 사용하고 있으며, 손실을 막기 위해 스톱과 레버를 사용하여 위험을 제어하고 수익을 증대합니다. 이 전략은 다양한 시장에 널리 적용할 수 있으며, 안정적인 초과 수익을 얻을 수 있습니다. 그러나 파라미터 최적화, 풍선 제어 및 전략 업데이트와 같은 측면에 주의를 기울여야만 장기적으로 효과적으로 작동합니다.

전략 소스 코드
/*backtest
start: 2023-09-10 00:00:00
end: 2023-10-10 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////////////////////////////////////////////
// Bozz Strategy
// Developed for Godstime
// Version 1.1
// 11/28/2021
////////////////////////////////////////////////////////////////////////////////

//@version=4
// strategy("Bozz Strategy", "", true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, margin_long=0, margin_short=0)

// ----------------------------- Inputs ------------------------------------- //
source_ma_type = input("EMA", "Source MA Type", options=["SMA", "EMA"])
source_ma_length = input(50, "Source MA Length")
fast_ma_length = input(20, "Fast MA Length")
slow_ma_length = input(50, "Slow MA Length")
use_trend_filter = input(true, "Trend Filter")
trend_filter_ma_type = input("EMA", "Trend Filter MA Type", options=["SMA", "EMA"])
trend_filter_ma_length = input(200, "Trend Filter MA Period")
show_mas = input(true, "Show MAs")
swing_trading_mode = input(false, "Swing Trading")

// -------------------------- Calculations ---------------------------------- //
fast_ma = ema(close, fast_ma_length)
slow_ma = ema(close, slow_ma_length)
source_ma = source_ma_type == "EMA"? ema(close, source_ma_length): 
                                     sma(close, source_ma_length)
trend_filter_ma = trend_filter_ma_type == "EMA"? ema(close, trend_filter_ma_length): 
                                                 sma(close, trend_filter_ma_length)

// --------------------------- Conditions ----------------------------------- //
uptrend = not use_trend_filter or close > trend_filter_ma
buy_cond = crossover(fast_ma, slow_ma) and uptrend

downtrend = not use_trend_filter or close < trend_filter_ma
sell_cond = crossunder(fast_ma, slow_ma) and downtrend

// ---------------------------- Plotting ------------------------------------ //
bgcolor(use_trend_filter and downtrend? color.red: use_trend_filter? color.green: na)
plot(show_mas? fast_ma: na, "Fast MA", color.green)
plot(show_mas? slow_ma: na, "Slow MA", color.red)
plot(show_mas? source_ma: na, "Source MA", color.purple)
plot(show_mas? trend_filter_ma: na, "Trend Filter MA", color.blue)


// ---------------------------- Trading  ------------------------------------ //
// Inputs
sl_perc = input(1.0, "Stop Loss (in %)", group="Backtest Control")/100
tp_perc = input(1.0, "Take Profit (in %)", group="Backtest Control")/100
leverage = input(10, "Leverage", maxval=100, group="Backtest Control")
bt_start_time = input(timestamp("2021 01 01"), "Backtest Start Time", input.time, group="Backtest Control")
bt_end_time = input(timestamp("2021 12 31"), "Backtest End Time", input.time, group="Backtest Control")

// Trading Window
in_trading_window = true
trade_qty = (strategy.equity * leverage) / close 

// Long Side
strategy.entry("Long Entry", strategy.long,  when=buy_cond and in_trading_window)
long_tp = strategy.position_avg_price * (1 + tp_perc)
long_sl = strategy.position_avg_price * (1 - sl_perc)
if not swing_trading_mode
    strategy.exit("Long Exit", "Long Entry", limit=long_tp, stop=long_sl)

// Short Side
strategy.entry("Short Entry", strategy.short, when=sell_cond and in_trading_window)
short_tp = strategy.position_avg_price * (1 - tp_perc)
short_sl = strategy.position_avg_price * (1 + sl_perc)
if not swing_trading_mode
    strategy.exit("Short Exit", "Short Entry", limit=short_tp, stop=short_sl)

// End of trading window close
strategy.close_all(when=not in_trading_window)