2つのEMAクロスオーバー取引戦略

作者: リン・ハーンチャオチャン,日付: 2023年10月17日 13:56:54
タグ:

img

概要

この戦略は,エントリーと出口タイミングを決定するために,デュアルEMAラインのゴールデンクロスとデスクロスを使用する.特に,速いEMAラインが底からスローEMAラインの上を横切ると,ロングエントリーにゴールデンクロス信号が生成される.速いEMAラインが上からスローEMAライン下を横切ると,ショートエントリーにデスクロス信号が生成される.この戦略はシンプルで実行が容易で,非常に一般的な取引戦略です.

戦略の論理

この戦略の基本コードは次のとおりです

fast = input(25, title="Fast")
slow = input(75, title="Slow") 

matype1=ema(source, fast)
matype2=ema(source, slow)

longCondition = crossover(matype1, matype2)
shortCondition = crossunder(matype1, matype2) 

if (longCondition)
    strategy.entry("Long", strategy.long)
     
if (shortCondition)
    strategy.entry("Short", strategy.short) 

この戦略は,まず,2つのEMAラインを設定し,速いEMA期間が25で,ゆっくりとしたEMA期間が75で,2つのEMAラインの値を計算する.速いEMAがゆっくりとしたEMAを超えると,longConditionが真実になる.速いEMAがゆっくりとしたEMAを下回ると,shortConditionが真実になる.対応する条件が真実である場合,それは長または短になる.

この戦略は,市場騒音をフィルターするためにEMAのスムージング機能を利用し,トレンド変化を迅速に把握することができる.EMAの2つの線間の黄金線と死亡線は,比較的強い取引信号を形成し,取引リスクを効果的に制御することができます.

利点分析

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

  1. 論理はシンプルで直感的で 分かりやすく実行できます

  2. EMAは市場の変動を緩和し 誤った信号を効果的にフィルターします

  3. 金十字と死十字は リスクをコントロールするための強力な取引信号です

  4. 柔軟な EMA 期間が異なる市場環境に適しています

  5. 他の技術指標と簡単に組み合わせられます

  6. EMA パラメータを最適化することで より良い結果が得られます

リスク分析

この戦略のリスクは以下のとおりです.

  1. EMAが頻繁に交差するので,範囲限定市場では頻繁に無効な信号が発信されます.

  2. EMAの遅れは短期的な機会を逃す可能性があります

  3. EMAのクロスオーバーだけでは,トレンド逆転を特定できず,利益の可能性を制限します.

  4. 固定EMA期間が市場の変化に適応できない.

  5. 相当な資本が必要で リスクは大きくなります

  6. ストップ・ロスは厳格でなければ 単一の損失は莫大なものになります

オプティマイゼーションの方向性

戦略は以下の側面で最適化できます.

  1. 異なる市場条件に適した EMA 期間を最適化する.

  2. 信号の質を改善するためにMACDやボリンジャーバンドなどのフィルターを追加します

  3. ATRやADXのようなトレンド判断指標を追加して非効率な取引を減らす

  4. 傾向の方向性を決定するために複数のタイムフレーム分析を組み込む.

  5. EMA期間を動的に最適化するために 機械学習を使用します

  6. ポジションのサイズを最適化して リスクをコントロールする

  7. ストップ・ロスの戦略を最適化して 単一の損失を制限する

概要

この戦略は,二重のEMA金十字と死十字を取引信号として使用し,古典的なトレンドフォロー戦略を形成する. シンプルで簡単に実装され,他の指標と組み合わせることができ,トレンド判断に対する比較的低い要件を持つ投資家に適しています. しかし,利益制限とリスクもあります. 異なる市場環境のために適切な最適化が必要です. 全体として,戦略開発と深入的な研究のための優れた基盤を提供します.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Double EMA CROSS By © EmreE (Emre Ertürk) Also thx for KivancOzbilgic color based bars

//@version=4
strategy(title="Double EMA CROSS", shorttitle="DEC", overlay=true)

matype = input("ema")
hidema = input(false)
sourcetype = input(close, title="Source Type")
source=close
 
// STEP 1:
// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=231)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12) 
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

// STEP 2:
// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

fast = input(25, title="Fast")
slow = input(75, title="Slow")

matype1=ema(source, fast)
matype2=ema(source, slow)


signalcolor = source > matype2 ? color.blue : color.red
signal = cross(fast, slow) 



hizliema=plot(hidema ? na : matype1, color=color.green, linewidth=2,transp=0, title="Fast EMA")
yavasema=plot(hidema ? na : matype2, color=color.red, linewidth=2,transp=0, title="Slow EMA")
//kesisme=plot(signal, style=cross, color=signalcolor, linewidth=5, title="Kesişme")
 

longCondition = crossover(matype1, matype2)
if (afterStartDate and longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(matype1, matype2)
if (afterStartDate and shortCondition)
    strategy.entry("Short", strategy.short)
    

//--------------------------------------------------------

//volume based color bars
length=input(21, "length", minval=1)
avrg=sma(volume,length)

vold1 = volume > avrg*1.5 and close<open
vold2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close<open
vold3 = volume < avrg *0.5 and close<open

volu1 = volume > avrg*1.5 and close>open
volu2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close>open
volu3 = volume< avrg*0.5 and close>open

cold1=#800000
cold2=#FF0000
cold3=color.orange

colu1=#006400
colu2=color.lime
colu3=#7FFFD4

ac = vold1 ? cold1 : vold2 ? cold2 : vold3 ? cold3 : volu1 ? colu1 : volu2 ? colu2 : volu3 ? colu3 : na

barcolor(ac)

もっと