この戦略は,エントリーと出口タイミングを決定するために,デュアル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つの線間の黄金線と死亡線は,比較的強い取引信号を形成し,取引リスクを効果的に制御することができます.
この戦略の利点は以下の通りです.
論理はシンプルで直感的で 分かりやすく実行できます
EMAは市場の変動を緩和し 誤った信号を効果的にフィルターします
金十字と死十字は リスクをコントロールするための強力な取引信号です
柔軟な EMA 期間が異なる市場環境に適しています
他の技術指標と簡単に組み合わせられます
EMA パラメータを最適化することで より良い結果が得られます
この戦略のリスクは以下のとおりです.
EMAが頻繁に交差するので,範囲限定市場では頻繁に無効な信号が発信されます.
EMAの遅れは短期的な機会を逃す可能性があります
EMAのクロスオーバーだけでは,トレンド逆転を特定できず,利益の可能性を制限します.
固定EMA期間が市場の変化に適応できない.
相当な資本が必要で リスクは大きくなります
ストップ・ロスは厳格でなければ 単一の損失は莫大なものになります
戦略は以下の側面で最適化できます.
異なる市場条件に適した EMA 期間を最適化する.
信号の質を改善するためにMACDやボリンジャーバンドなどのフィルターを追加します
ATRやADXのようなトレンド判断指標を追加して非効率な取引を減らす
傾向の方向性を決定するために複数のタイムフレーム分析を組み込む.
EMA期間を動的に最適化するために 機械学習を使用します
ポジションのサイズを最適化して リスクをコントロールする
ストップ・ロスの戦略を最適化して 単一の損失を制限する
この戦略は,二重の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)