移動平均ロングショート戦略


作成日: 2023-10-09 16:00:02 最終変更日: 2023-10-09 16:00:02
コピー: 0 クリック数: 617
1
フォロー
1617
フォロワー

概要

この戦略は,移動平均に基づく多空戦略である.これは,3つの異なるパラメータの移動平均を使用して取引信号を生成する.価格が移動平均を上越しするときに多空し,下越しするときに空空する.この戦略には,3つの移動平均があり,段階的に多空し,トレンドを追跡することができます.

戦略原則

この策略は,sma関数を使って,lenの長さである移動平均maを計算する. そして,longline1,longline2,longline3の移動平均を,maに基づいて計算する.このうち,longline1の移動は-4%,longline2の移動は-5%,longline3の移動は-6%である.

買い信号生成時に,現時点でポジションがない場合,価格がlongline1を突破したとき,ポジションを多く開きます. 1手ポジションがある場合は,価格がlongline2を突破したとき,さらに1手を開きます. 2手ポジションがある場合は,価格がlongline3を突破したとき,さらに1手を開きます. 最大3手ポジションを多く持っています.

売る信号が生成される時,当時は多ポジションを保有し,価格を下回る時に平ポジションを保有する.

この戦略は,トレンドトラッキング効果を実現するために,分量的に分級することで,より多くのことを行うことができます.

戦略的優位性

  • 移動平均を用いてトレンドの方向を判断し,市場騒音を効果的にフィルターし,収益を安定させる
  • 株価が上昇するにつれて,株価が上昇し,株価が上昇するにつれて,株価が上昇します.
  • 移動平均は,トレンドを把握するためのエントリーポイントです.
  • 引き下がりは比較的少ないが,最大引き下がりは20%ほどでコントロールされている.

戦略リスク

  • この戦略は単なるトレンド戦略であり,市場を整理するときに, 囚われやすいものです.
  • 移動平均は信号の遅延を生じ,トレンド転換点を逃す可能性があります.
  • 集団で殺すのは追いつくのが簡単で,殺すのが危険だ.
  • ストップ・ロスト戦略がないため,突発的な事件で大きな損失を招く可能性があります.

リスク対策:

  • 他の指標で判断できれば,トレンドの転換点を特定できます.
  • 移動平均のパラメータを合理的に設定し,信号が遅れるため長すぎないようにします.
  • 過剰生産量を適切に削減し,追及を防止する
  • 移動ストップを増加して損失を制御する

戦略最適化の方向性

この戦略は以下の点で最適化できます.

  1. 傾向の方向を判断する他の指標の判断を追加します.例えば,MACDにトレンドの強さを判断します.

  2. 移動平均のパラメータを最適化して,最適なパラメータの組み合わせを探します.

  3. 集団での多量殺人の数と割合を調整し,追尾殺人を防止する.

  4. ATRによるストップポイントを設定できるモバイルストップメカニズムを追加

  5. 市場変動に合わせてポジション数を動的に調整し,大きな変動時にポジションを減額できます.

  6. 戦略に最も適した品種を見つけるために,さまざまな品種のパラメータの効果をテストする

  7. Exit モジュールを開発し,特定の形状が発生したときに停止退出を考慮する

要約する

全体として,この戦略は,移動平均を使用してトレンドの方向を判断して取引し,分批分級を単行で行うことでトレンドを追跡して利益を得ることができる.しかし,一定の遅れがあり,追及するリスクがある.我々は,補助判断指標,最適化パラメータ,ポジション管理の調整,停止メカニズムの追加などの方法で,この戦略を最適化して,異なる市場状況に適応して,安定した制御可能な利益の効果を達成することができる.

ストラテジーソースコード
/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Lenghs")
src = input(ohlc4, title = "MA Source")
longlevel1 = input(-4.0, title = "Long line 1")
longlevel2 = input(-5.0, title = "Long line 2")
longlevel3 = input(-6.0, title = "Long line 3")
needoffset = input(true, title = "Offset")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult
longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult
longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult

//Lines
offset = needoffset ? 1 : 0
plot(ma, color = color.blue)
plot(longline1, offset = offset, color = color.lime)
plot(longline2, offset = offset, color = color.lime)
plot(longline3, offset = offset, color = color.lime)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2))
if size > 0
    strategy.entry("TP", strategy.short, 0, limit = ma)