双重EMAクロスオーバー戦略

作者: リン・ハーンチャオチャン開催日:2023年10月16日 16:15:38
タグ:

img

概要

これは,高速EMAと遅いEMA指標に基づいた二重EMAクロスオーバー取引戦略である.この戦略は,高速EMAが遅いEMAを超えるとロングシグナルを生成し,高速EMAが遅いEMAを下回るとロングポジションを閉じる.この戦略は,中期取引にシンプルで実用的である.

戦略の論理

この戦略は主に二重EMA指標を用いて実施される.高速EMAは価格変動を敏感に反映するための短い期間があり,遅いEMAは長期的な傾向を示すための長い期間を有する.

低速EMAが低速EMAの上を横切ると,金色の十字が形成され,ロングの短期間の上昇価格勢いを示します.低速EMAが低速EMAを下に横切ると,低速モメンタムを示し,ロングポジションを閉じます.

具体的には,この戦略には以下の内容が含まれます.

  1. 期間,ソースなどを含む,高速および遅いEMAの入力パラメータ

  2. 速度の EMA と 遅さの EMA を計算する.

  3. 高速EMAが低速EMAを超えると黄金十字を定義する.

  4. 低速EMAを低速EMAを下回るときに死十字を定義する.

  5. 金色の十字架で長走する

  6. 死の十字架の位置を 閉じろ

  7. ショート・オプションとストップ・損失/利益引き取りのオプション

  8. 出力 買取 販売 通知

この単純な二重EMAクロスオーバーシステムにより 戦略は短期的な傾向を把握し 利益を得ることができます

利点分析

この戦略には以下の利点があります.

  1. 論理は単純で明白で 分かりやすい

  2. 双 EMA を使います 簡単に実行できます

  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パラメータのダイナミック最適化

  2. 精度を高めるために ストックフィルターを追加します

  3. 低変動環境におけるポジションを減らすため,変動指数を含める.

  4. 信号の音量確認を追加します.

  5. 20SMAのブレイクのように 信号を受け取る前に 価格レベルを設定します

  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)



もっと