この戦略は,異なる期間の移動平均を計算し,そのクロスオーバーをトレンドを追跡するための購入・販売信号として利用することで,取引信号を生成する.基本的な論理は,より短い期間の移動平均を用い,より長い期間のトレンドのターニングポイントを追跡することである.
トレーディング・シグナルの論理は,短い期間のMAは価格変化により早く反応し,最新のトレンドを反映させることができるが,長い期間のMAは全体的なトレンドをより良く表現し,ノイズをフィルタリングすることができる.短い期間のMAが長い期間のMAを横切ると,トレンド逆転を示し,取引シグナルが起動する.
この戦略は,シンプルなMAクロスオーバーによってトレンド変化を捉える.これは典型的なトレンドフォロー戦略に属している.利点は,パラメータチューニングによってシンプルで,使いやすくて,適応可能である.デメリットは,遅い反応と誤った信号である.全体として,明確な論理があり,アルゴ取引の良い出発点である. ライブ取引には適切なリスク管理と最適化が必要である.
/*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")