単純移動平均に基づくタートル取引戦略


作成日: 2023-12-29 16:45:51 最終変更日: 2023-12-29 16:45:51
コピー: 2 クリック数: 848
1
フォロー
1621
フォロワー

単純移動平均に基づくタートル取引戦略

概要

この戦略は,2つの異なるパラメータのセットの単純な移動平均を計算し,それをポジションと平仓の信号として使って,利益を得ます.この戦略は,最初にアメリカのトレーダーであるリチャード・デニスによって1983年に提案され,単純なルールに依存して安定した利益を得ることができ,後にCurtis Faithによってさらに普及し,広く知られています.

戦略原則

この策略は,同時にお2つのセットの快線と慢線を計算する.快線パラメータは,ポジション構築周期20日,ポジション緩和周期10日;スローラインパラメータは,ポジション構築周期55日,ポジション緩和周期20日とする.価格が上線を突破したときに,ポジション構築周期の最高値が多順位シグナルを誘発する.価格が下線を突破したときに,ポジション構築周期の最低値が空順位シグナルを誘発する.信号は,同様に,価格が下線を突破したときに,ポジション構築周期の最低値が多順位シグナルを誘発する.

この戦略は,移動平均の均線理論に依存して利益を得ます.つまり,短期平均線に長期平均線を穿えると,価格上昇の信号とみなされ,下落すると価格下落の信号とみなされます.この戦略の快線と慢線は,同様の役割を果たします.

戦略的優位性

  1. 規則はシンプルで明快で,理解しやすく,実行可能で,初心者のためのものです.
  2. 倉庫の建設と維持の基準を明確にし,取引を頻繁にしないようにする.
  3. 快線と遅線のダブル移動平均を組み合わせて,価格変動によるノイズを平らげ,より明確な取引信号を生成します.
  4. 複数のパラメータを組み合わせることで,リスクを制御し,誤った取引を防ぐことができます.
  5. 長期にわたって安定した収益を上げ,実績で証明されている.

リスクと解決策

  1. 戦略自体は機械化されていて,特殊な状況について判断できないし,一定の利益上限がある.
    • さらに多くの指標を導入したり,機械学習に基づくモデルによる意思決定を試みることができます.
  2. 移動平均は指標として後退している.
    • 倉庫建設と倉庫の周期を適当に短縮する
  3. 引き上げの制限はなし
    • 設定可能なストップポイント

最適化の方向

  1. ストップダストモジュールを追加し,最大撤退を制御します.
  2. 他の指標と組み合わせたフィルター信号
  3. 移動平均のパラメータを動的に調整する
  4. データ処理モジュールを追加し,異常データの影響を削除する
  5. 機械学習モデルと組み合わせてトレンドを決定する

要約する

この戦略は,典型的なトレンドフォロー戦略の1つである. 簡単な二重移動平均を頼りに取引ルールを確立し,市場トレンドを追跡することによって安定した収益を得ることができる. この戦略は,理解しやすい実装,ポジションの信号の明快さ,長期の実況検証収益,初心者の学習研究に適しています. 同時に,より複雑な量化取引の基礎を設ける. 継続的な最適化により,より良いパフォーマンスを得る見通しがある.

ストラテジーソースコード
/*backtest
start: 2023-11-28 00:00:00
end: 2023-12-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//coded by tmr0
//original idea from «Way of the Turtle: The Secret Methods that Turned Ordinary People into Legendary Traders» (2007) CURTIS FAITH
strategy("20 years old Turtles strategy by tmr0", shorttitle = "Turtles", overlay=true)

enter_fast = input(20, minval=1)
exit_fast = input(10, minval=1)
enter_slow = input(55, minval=1)
exit_slow = input(20, minval=1)

fastL = highest(enter_fast)
fastLC = lowest(exit_fast)
fastS = lowest(enter_fast)
fastSC = highest(exit_fast)

slowL = highest(enter_slow)
slowLC = lowest(exit_slow)
slowS = lowest(enter_slow)
slowSC = highest(exit_slow)

enterL1 = high > fastL[1]
exitL1 = low <= fastLC[1]
enterS1 = low < fastS[1]
exitS1 = high >= fastSC[1]

enterL2 = high > slowL[1]
exitL2 = low <= slowLC[1]
enterS2 = low < slowS[1]
exitS2 = high >= slowSC[1]


//bgcolor(exitL1 or exitL2? red: enterL1 or enterL2? navy:white)

strategy.entry("fast L", strategy.long, when = enterL1)
strategy.entry("fast S", strategy.short, when = enterS1)
strategy.close("fast L", when = exitL1)
strategy.close("fast S", when = exitS1)

strategy.entry("slow L", strategy.long, when = enterL2)
strategy.entry("slow S", strategy.short, when = enterS2)
strategy.close("slow L", when = exitL2)
strategy.close("slow S", when = exitS2)
//zl=0
//z=strategy.netprofit / 37 * koef  //ежемесячная прибыль
//z=strategy.grossprofit/strategy.grossloss
//z1=plot (z, style=line, linewidth=3, color = z>zl?green:red, transp = 30)
//hline(zl, title="Zero", linewidth=1, color=gray, linestyle=dashed)