이것은 이중 이동 평균 크로스오버를 기반으로 하는 거래 전략이다. 서로 다른 길이의 두 이동 평균이 교차할 때 구매 및 판매 신호를 생성한다. 구체적으로, 더 빠른 MA가 더 느린 MA를 넘을 때 길게, 더 빠른 MA가 더 느린 MA를 넘을 때 짧게 간다.
이 전략의 핵심 논리는 두 이동 평균 사이의 교차 원칙에 있다. 이동 평균은 특정 기간 동안의 수학적 평균 가격이다. 시장 소음을 필터링하고 더 명확한 가격 추세를 밝히는 데 도움이됩니다.
이 전략에서, 단기 MA는 단기 트렌드를 포착하고, 장기 MA는 장기 트렌드를 포착합니다. 단기 MA는 최신 가격 변화에 반응하는 데 더 민감하기 때문에, 장기 MA를 넘어서면 앞으로의 트렌드 전환을 신호합니다.
구체적으로, 전략은 사용자가 정의한 긴 기간과 짧은 기간에 ta.sma를 사용하여 MAs를 계산합니다. 그 다음 ta.crossover와 ta.crossunder를 사용하여 두 MAs 사이의 황금 크로스오버와 죽음의 크로스오버를 감지합니다. 짧은 MA가 긴 MA를 넘으면 길게 가십시오. 짧은 MA가 아래에 넘으면 짧게 가십시오.
이 전략의 주요 장점은 다음과 같습니다.
또한 몇 가지 위험이 있습니다.
위험을 완화하기 위해 매개 변수를 조정하고, 스톱 로스 및 영업이익을 포함하거나 다른 기술적 지표를 추가할 수 있습니다.
더 많은 최적화를 할 수 있습니다.
결론적으로, 이것은 논리 및 매개 변수에서 단순함 덕분에 시장 반전을 효과적으로 포착 할 수있는 최적화 전략입니다. 동시에 다양한 거래 요구에 맞게 최적화 할 수있는 큰 잠재력을 가지고 있습니다.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Cross 2 Moving Average Strategy", shorttitle="2MA Cross", overlay=true) // User-defined input for moving averages long_period = input(20, title="Long Period") short_period = input(5, title="Short Period") type_ma = input.string("SMA", title = "MA type", options = ["SMA", "EMA"]) // Calculating moving averages long_ma = ta.sma(close, long_period) short_ma = ta.sma(close, short_period) // Plot moving averages plot(long_ma, title="Long Moving Average", color=color.red) plot(short_ma, title="Short Moving Average", color=color.green) // Strategy logic for crossing of moving averages longCondition = ta.crossover(short_ma, long_ma) shortCondition = ta.crossunder(short_ma, long_ma) // Entry orders if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Optional: Add stop loss and take profit stop_loss_perc = input(1, title="Stop Loss (%)") / 100 take_profit_perc = input(2, title="Take Profit (%)") / 100 strategy.exit("Exit Long", from_entry="Long", stop=close*(1-stop_loss_perc), limit=close*(1+take_profit_perc)) strategy.exit("Exit Short", from_entry="Short", stop=close*(1+stop_loss_perc), limit=close*(1-take_profit_perc))