超トレンド 双動平均クロスオーバー戦略

作者: リン・ハーンチャオチャン, 日付: 2023-09-19 21:38:06
タグ:

概要

これはスーパートレンド指標に基づいた二重移動平均クロスオーバー戦略である.スーパートレンドは2つの移動平均から構成され,そのクロスオーバーは購入と販売のシグナルとして機能する.この戦略はトレンド以下のカテゴリに属している.

戦略の論理

  1. 2*ema5 - ema(ema5,5) を計算する

  2. 2*ema2 - ema(ema2,2) という式で,遅い線 demaSlow を計算する.

  3. 急速線は5日間のEMAで,価格変動により敏感で,遅い線は2日間のEMAで,反応が遅い.

  4. 低速線が低速線を下から横切ると 買い信号を発生し 上から下へと横切ると 売り信号を発生します

  5. 傾向の変化を決定するために異なる応答速度を持つ2つの線をクロスオーバーすることは,傾向を追求する典型的な戦略です.

  6. 買い/売るシグナルに基づいて取引を行う.

基本論理は単純で明瞭です.MAパラメータを調整することで,異なるサイクル市場に適応できます.

利点分析

  1. トレンド変化を決定するためにダブルMAクロスオーバーを使用することは,シンプルで実用的な技術です.

  2. 速度と速度が遅いラインのパラメータは,異なる期間を最適化するために調整できます.

  3. 明確なシグナルと簡単な実行

  4. 戦略を検証するバックテスト機能を完了します

  5. インタフェースは直感的に 交差点を示しています

  6. 論理を理解しやすく,初心者にも適しています.

リスク分析

  1. ダブルMAクロスオーバーには遅延信号や偽信号がある.パラメータを調整したりフィルターを追加したりすることで改善することができる.

  2. 範囲や不安定な市場では効果がなく,ストップ・ロスの傾向がある.トレンドメカニズムを追加できる.

  3. バックテストでは最適化スペースが限られ 真の取引効果は未確認です

  4. 取引コストが 収益性に影響を及ぼすことを 監視する必要があります

オプティマイゼーションの方向性

  1. 最適なマッチを見つけるために,異なるMA長度組み合わせをテストする.

  2. 信号フィルタリングのための他の指標を追加します.例えばKDJです.

  3. ストップ・ロスのメカニズムを追加し,単一の取引損失額を制御します.

  4. 異なる市場条件に異なる割合を使用するためにポジションサイズを追加します.

  5. 資金管理を最適化し 利益率などのリスク指標を設定します

  6. パラメータ最適化や信号予測のための機械学習アルゴリズムを考えてみましょう

概要

このスーパートレンド・ダブルMA戦略は,異なるサイクルに適応できるシンプルなトレンドフォローシステムである.他の技術指標とリスクコントロールと組み合わせることで,安定性をさらに高めることができます.拡張の可能性が高く,学習が容易で,非常に実践的な量子取引戦略です.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

strategy(title = "SuperTrend", shorttitle = "BTC")
ema5=ta.ema(close, 5)
ema2=ta.ema(close, 2)
 
demaFast =  request.security(syminfo.tickerid, "30", 2 * ema5 - ta.ema(ema5, 5)  )

plotchar((2 * ema5 - ta.ema(ema5, 5)), "d", "", location = location.top)
plotchar(demaFast, "fast", "", location = location.top)

demaSlow  = request.security(syminfo.tickerid,"30", 2 * ema2 - ta.ema(ema2, 2)  )
plotchar(demaSlow, "slow", "", location = location.top)

buy = ta.crossover(demaSlow, demaFast)
sell = ta.crossunder(demaSlow, demaFast)
strategy.entry("BUY", strategy.long, 1, when = buy)
strategy.entry("SELL", strategy.short, 1, when = sell )

もっと