ダブルEMAゴールデンクロスとデスクロス戦略


作成日: 2023-10-16 16:15:38 最終変更日: 2023-10-16 16:15:38
コピー: 1 クリック数: 638
1
フォロー
1617
フォロワー

ダブルEMAゴールデンクロスとデスクロス戦略

概要

この戦略は,双EMA指標に基づく金叉死叉取引戦略である.この戦略は,快線EMAと慢線EMAを計算することで,快線上での慢線を横切るときに多行し,快線下での慢線を横切るときに平行する.この戦略は,簡単で,中短期取引に適している.

戦略原則

この戦略は,主に二重のEMA指標に基づいて実現する. まず,快線EMAと慢線EMAを計算する. 快線EMAの周期は短く,価格変化をセンシティブに反映する. 慢線EMAの周期は長く,長期のトレンドを反映する. 快線が下から慢線を横切るとき,金叉信号を生じ,短期価格の上昇勢いが強いことを示すと,買って良い. 快線が上から下から慢線を横切るとき,死叉信号を生じ,短期価格の下降勢いが強いことを示すと,平仓するべきである.

具体的には,この戦略は以下のステップで構成されています.

  1. SMA周期の長さ,データソースなどを含む高速線EMAと遅線EMAのパラメータを入力します.

  2. 速線EMAと遅線EMAを計算する

  3. ゴールドフォーク時刻の定義: 速線は下から遅線を貫く

  4. デッドフォークの定義: 速線は上から下を通る

  5. フォークで買い物を増やす

  6. 死にかけている時に平定する

  7. 任意の空白を許可するか,ストップ・ストップ・ストップの策略を使用するか

  8. 購入・売却のニュース通知を輸出する

この簡単な二重EMAの交差策によって,短期的な価格トレンドを順番に捉え,利益を得ることができます.

優位分析

この戦略の利点は以下の通りです.

  1. 戦略はシンプルでわかりやすく,理解しやすい.

  2. EMAの2つの指標だけで実現しやすい.

  3. 価格の短期的なトレンドを順番に捉え,利回りは波動的利益を得ることができる.

  4. EMA周期をカスタマイズし,異なる周期の市場環境に柔軟に適応します.

  5. 選択可能な空白,柔軟なリスク管理戦略.

  6. 取引リスクをコントロールするために,ストップ・ストップ・ストップ戦略を使用するかどうかを選択できます.

  7. 販売の通知をエクスポートし,監視が簡単です.

  8. 戦略を簡単に最適化し,EMAパラメータを柔軟に設定し,利益の空間を最適化します.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 双重EMA戦略は,誤った信号を発生し,不必要な損失を招く可能性があります.

  2. ストップポイントの不合理な設定は損失を拡大する可能性があります.

  3. 取引の頻度が高くなり,取引コストや滑り場リスクが増加する可能性があります.

  4. 固定EMAパラメータは市場の変化に適応できない.

  5. 落ち着かない判断力 落ち着かない判断力

  6. 市場が逆転するかは不明で,逆転する可能性もある.

対応するリスク管理策:

  1. EMAパラメータを最適化し,偽信号の確率を下げる.

  2. ストップ・ロスを合理的に設定し,単一損失をコントロールする.

  3. EMAサイクルを最適化し,取引頻度を低下させる.

  4. EMAのパラメータは,市場段階によって動的に調整できます.

  5. 傾向を判断する指標を増やし,後押しを避ける.

  6. トレンド判定指標と組み合わせて,大トレンドの方向性を決定する.

最適化の方向

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

  1. 動的にEMAパラメータを最適化し,異なる市場段階において異なるEMA周期組合せを採用し,パラメータの利回り効果を最適化する.

  2. 株の選択条件を高め,条件を満たした株を戦略的に取引し,成功率を高めること.

  3. 波動率指標と組み合わせて,低波動期におけるポジション回避リスクを低減する.

  4. 交差量指標を組み合わせて,高量でトレンドを確認できる信号のみを生成する.

  5. 20日線を突破してEMA戦略取引を行うなど,価格条件を設定する.

  6. ストップ・ロスの戦略を最適化し,利益をロックするストップ・ストップ条件を設定します.

  7. 逆転のポジションを避けるために,大規模なトレンドの判断を高めましょう.

  8. ディープラーニングアルゴリズムと様々な機械学習アルゴリズムを組み合わせた継続的な最適化戦略.

要約する

総括すると,この双EMA金叉死叉戦略の全体的な考え方は,単純明快で,容易に理解し,実行し,順次価格変動を捕獲して利益を得ることができるが,一定利益のリスクも存在する.パラメータ最適化,止損止まり,株価フィルタリング,大レベルのトレンド判断などの手段によってリスクを制御し,安定して満足のいく利益を得ることができる.この戦略は,常に最適化・エグレッショナルになり,継続的な研究と改善に値する.

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

//@version=4

strategy("EMA Strategy", shorttitle="EMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// invert trade direction
shorting = input(defval=false, title="Allow Shorting?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_buy  = input("Buy message", title="Buy Alert Message")
message_sell   = input("Sell message", title="Sell Alert Message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_buy)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_sell)

// Shorting if using
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_sell)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_buy)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08)