移動平均ゴールデンクロスとデッドクロスに基づく取引戦略


作成日: 2024-01-24 11:48:29 最終変更日: 2024-01-24 11:48:29
コピー: 1 クリック数: 696
1
フォロー
1664
フォロワー

移動平均ゴールデンクロスとデッドクロスに基づく取引戦略

概要

移動平均金線叉死叉取引戦略は,快線EMA ((fastLength) と遅線EMA ((slowLength) の交差を計算して買入と売却の信号を生成する.快線上を遅線を横切ると買入の信号を生成する.快線下を遅線を横切ると売却の信号を生成する.この戦略はシンプルで実用的で,中中短線取引に適している.

戦略原則

この戦略は,2つの移動平均,快線と慢線を使用する. 快線パラメータEMAfastLengthは9日線をデフォルトし,慢線パラメータEMAAslowLengthは26日線をデフォルトする. 2つのEMA線の交差を計算して,市場での買入・売却の信号を判断する.

  1. 速線が下から上へ突破すると,購入信号が発せられます.
  2. スローラインが上から下へと落ちると,売り信号が発せられます.

特定の取引シグナルと戦略のルールは以下の通りです.

  1. 速線でスローラインを突破すると,多入場する.速線下からスローラインを突破すると,平仓退場する.
  2. 価格のターゲットパーセンテージ (デフォルトの0.15%) で,上昇が15%に達すると平仓を終了します.
  3. 価格のStopLosspercentage (デフォルトは0.20%) で,価格が20%まで下がれば平仓を停止する.
  4. ツイッターで投稿した記事

この戦略は,2つの移動平均線が金叉と死叉の時に取引を行う戦略です.

優位分析

  1. 戦略はシンプルで分かりやすい.
  2. 移動平均の適用により,市場騒音をフィルターし,取引シグナルをより正確にします.
  3. 取引規則は明確で,明確なストップ・ストップ・ロスの戦略があります.
  4. テストパラメータは,異なる市場状況に合わせて柔軟に調整できます.

リスク分析

  1. 移動平均は後退性であり,短期的な価格変動を逃し,買い値と売り値の不正確さを引き起こす可能性があります.
  2. 異なる周期の移動平均のパラメータは,偽信号を生じ,損失をもたらす可能性があります.
  3. この策略は,いくつかのパラメータのみに依存し,最適なパラメータの組み合わせを見つける必要のある超パラメータ最適化の需要があります.
  4. この戦略は,特定の大規模なトレンドでは失敗しやすい.

リスクに対して,最適化できるパラメータには,移動平均周期,取引品種,ストップ・ストラストレッシャーなどがあり,リスクを減らすために多くのテストが必要である.

最適化の方向

この戦略の移動平均の交差思考はシンプルで実用的で,以下の方法で最適化できます.

  1. 移動平均のタイプを変更:EMAに加えて,SMA,LWMA,HMAなどの線型もテストできます.
  2. 他の指標の判断を加える:RSI,MACDなどの指標を組み合わせた散発時の取引.
  3. 自動最適化パラメータ:EMAの2つの周期パラメータを自動最適化して検索し,最適なパラメータ組み合わせを探します.
  4. トレンドフィルター: 大規模なトレンド状況に応じて選択的に取引する.
  5. ストップ・ストップ・ダメージ戦略の最適化:固定パーセントのストップ・ストップ・ダメージ方法を改良し,実戦効果を高める.

これらの最適化テストによって,戦術の実戦的効果と安定性を大幅に向上させることができる.

要約する

移動平均線交差戦略の構想はシンプルで,実用的なアプリケーションは継続的に最適化する必要があります.この戦略は,取引信号生成の論理と基本取引ルールを示しています.この基礎で,この戦略は,実用的な戦いの量化戦略に大きく最適化することができます.移動平均線のアプリケーションは,この戦略の構想を私たちに提供しています.

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

//@version=4
strategy("EMA Cross by MarketAlpha", overlay=true)
EMAfastLength = input(defval = 9, minval = 2)
EMAslowLength = input(defval = 26, minval = 2)
Targetpercentage = input(defval = 0.15, title = "Profit Target in percentage", minval = 0.05)
StopLosspercentage = input(defval = 0.20, title = "Stop Loss in percentage", minval = 0.05)
profitpoints = close*Targetpercentage
stoplosspoints = close*StopLosspercentage
price = close

FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2000)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"

emafast = ema(price, EMAfastLength)
emaslow = sma(price, EMAslowLength)
plot(emafast,color=green)
plot(emaslow,color=red)

enterLong() => crossover(emafast, emaslow)
strategy.entry(id = "MarketAlpha Long", long = true, when = window() and enterLong())
strategy.exit("Exit Long", from_entry = "MarketAlpha Long", profit = profitpoints,loss = stoplosspoints)

enterShort() => crossunder(emafast, emaslow)
strategy.entry(id = "MarketAlpha Short", long = false, when = window() and enterShort())
strategy.exit("Exit Short", from_entry = "MarketAlpha Short", profit = profitpoints,loss = stoplosspoints)