
이 전략은 다른 주기의 이동 평균을 계산하여 그들의 교차를 구매 및 판매 신호로 설정하여 트렌드를 추적합니다. 핵심 논리는 더 짧은 주기의 이동 평균을 사용하여 더 긴 주기의 트렌드를 추적하는 것입니다.
위의 거래 신호 설정의 배후에 있는 논리는, 단기 이동 평균은 가격 변화에 더 빨리 반응하여 최신 트렌드를 반영할 수 있고, 장기 이동 평균은 전체 트렌드를 잘 반영하여, 노이즈를 필터링할 수 있다는 것이다. 단기 이동 평균이 장기 이동 평균을 가로지르면, 트렌드가 변하는 것을 의미하며, 따라서 거래 신호를 설정한다.
이 전략은 간단한 이동 평균 횡단 방식을 통해 가격 트렌드의 전환을 포착하며, 전형적인 트렌드 추적 전략에 속한다. 장점은 간단하고 이해하기 쉽고, 작동하기 쉽고, 파라미터를 조정하여 여러 가지 시장 환경에 적응할 수 있다. 단점은 갑작스러운 사건에 대한 반응이 민감하지 않으며, 잘못된 신호를 발생시키는 데 쉽다.
/*backtest
start: 2023-02-23 00:00:00
end: 2024-02-29 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MA Crossover Strategy", overlay=true)
// Функция для получения скользящего среднего на заданном таймфрейме
getMA(source, length, timeframe) =>
request.security(syminfo.tickerid, timeframe, ta.sma(source, length))
// Вычисляем 200-периодное и 100-периодное скользящее среднее для текущего таймфрейма
ma200 = getMA(close, 200, "240")
ma100 = getMA(close, 100, "240")
// Открываем позицию Long, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossover(ma100, ma200))
strategy.entry("Long", strategy.long)
// Закрываем позицию Long, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossunder(ma100, ma200))
strategy.close("Long")
// Открываем позицию Short, если 100-периодное скользящее среднее пересекает 200-периодное сверху вниз
if (ta.crossunder(ma100, ma200))
strategy.entry("Short", strategy.short)
// Закрываем позицию Short, если 100-периодное скользящее среднее пересекает 200-периодное снизу вверх
if (ta.crossover(ma100, ma200))
strategy.close("Short")
// Рисуем линии скользящих средних на графике
plot(ma200, color=color.blue, linewidth=2, title="200 MA")
plot(ma100, color=color.red, linewidth=2, title="100 MA")