3つのEMAトレンドフォロー戦略

作者: リン・ハーンチャオチャン開催日:2023年11月10日11時45分30秒
タグ:

img

概要

3つのEMAトレンドフォロー戦略は,異なる期間のEMA線を計算して価格トレンド方向を判断し,自動的にトレンドを追跡する.この戦略は,特にトレンドインstrumentではシンプルで有効です.

戦略の論理

この戦略では,異なる期間のEMA線を3つ計算し,特に10期,20期および30期EMA線を計算します.Ema関数はコードで3つのEMA線を生成します.

基本論理は3つのEMA線の方向一貫性を判断することです. 3つのEMA線が一緒に上昇すると,長い信号が生成されます. 3つの線が一緒に落ちると,短い信号が生成されます.

具体的には,ema1,ema2とema3が最後のバーで上昇すると,enter_longは trueになり,長い信号が生成されます.ema1,ema2とema3がすべて最後のバーに落ちると,enter_shortは trueになり,短い信号が生成されます.

ロングとショートシグナルに基づいて,戦略は対応するロングとショートポジションを開く.出口論理はエントリーシグナルとは対照的である.もしEMA1,EMA2とEMA3が現在のバーで一緒に上昇しない場合,EXIT_LONGはtrueになり,ロングポジションは閉鎖される.EMA1,EMA2とEMA3が現在のバーで一緒に落ちない場合,EXIT_SHORTはtrueになり,ショートポジションは閉鎖される.

3つのEMA線の方向性一貫性を判断することで,全体的な傾向を決定し,追跡することができます.

利点

  • 3つのEMA線を使用すると,単一の線と比較して傾向方向をより信頼的に判断できます.間違った信号の確率は低いです.

  • EMAは価格変化により敏感であり,時間とともにトレンド逆転を反映することができる.SMAなどと比較してトレンド判断により適している.

  • 異なる期間の EMA の組み合わせは,短期および中長期のトレンドの両方を考慮します.短期の EMA は10期,中長期のトレンドは20期および30期です.

  • 戦略の論理はシンプルで,理解しやすい,初心者にも適しています.また,パラメータは,異なる楽器のための大きな最適化スペースを持っています.

  • この戦略は,EMA線のみをベースに,リソースが少なく,並行性が高いのに適しています.

リスク

  • EMA線方向の一貫性は必要だが,トレンド判断には不十分である.EMAラインの誤ったブレイク時に誤った信号が発生する可能性がある.

  • EMA線はトレンド逆転に遅れており,時間の転換点を反映できず,損失を引き起こす可能性があります.

  • EMAは価格変動に敏感であるため,長期ショートポジションの頻繁なフリップは取引コストを増加させる可能性があります.

  • この戦略は,EMA線が頻繁に変動する 変動しやすい市場では効果的ではありません.

  • EMAの周期差を最適化して 偽の信号を減らすか 偽のブレイクをフィルタリングする他の指標を追加することができます

  • リアルトレンドを確認し,ターニングポイントを特定し,損失を削減します.またストップロスを緩めることができます.

  • ポジションの転機頻度を減らすために EMA 期間を増やしたり,他の MA インディケーターを使用したり.

  • 不必要な取引を避けるために,市場範囲が特定されたときに戦略を停止します.

最適化

  • 期間の調整: EMA 期間の調整により,異なる楽器に対応します.

  • フィルターを追加する: EMAの偽のブレイクを避けるために MA,BOLLなどを追加する.

  • ストップ・ロスト: 利益を固定するためにストップを遅らせます.

  • リスク管理: ポジションのサイズを最適化し,単一の損失の影響を制限する.

  • 市場体制:波動性を用いて波動を測定し,戦略の関与を制御する.

  • 適応性パラメータ: 安定性を向上させるため,市場の変化に基づいて EMA 期間を自動最適化する.

結論

EMA線を通じてトレンド方向を特定することによって戦略トレンドをフォローする3つのEMA.これは,大きな最適化スペースでシンプルで実用的です.誤ったブレイクアウトや振動などのリスクは注意する必要があります.継続的な最適化により,この戦略は強力なトレンドフォローソリューションになり得ます.


/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
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/
// © QuantCT

//@version=4
strategy("PMA Strategy Idea",
         shorttitle="PMA", 
         overlay=true,
         pyramiding=0,     
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=1000,           
         commission_type=strategy.commission.percent, 
         commission_value=0.075)
         
// ____ Inputs

ema1_period = input(title="EMA1 Period", defval=10)
ema2_period = input(title="EMA2 Period", defval=20)
ema3_period = input(title="EMA3 Period", defval=30)
long_only = input(title="Long Only", defval=false)
slp = input(title="Stop-loss (%)", minval=1.0, maxval=25.0, defval=5.0)
use_sl = input(title="Use Stop-Loss", defval=false)

// ____ Logic

ema1 = ema(hlc3, ema1_period)
ema2 = ema(hlc3, ema2_period)
ema3 = ema(hlc3, ema3_period)
    
enter_long = (rising(ema1, 1) and rising(ema2, 1) and rising(ema3, 1))
exit_long = not enter_long
enter_short = (falling(ema1, 1) and falling(ema2, 1) and falling(ema3, 1))
exit_short = not enter_short

strategy.entry("Long", strategy.long, when=enter_long)
strategy.close("Long", when=exit_long) 
if (not long_only)
    strategy.entry("Short", strategy.short, when=enter_short)
    strategy.close("Short", when=exit_short) 

// ____ SL

sl_long = strategy.position_avg_price * (1- (slp/100))
sl_short = strategy.position_avg_price * (1 + (slp/100))
if (use_sl)
    strategy.exit(id="SL", from_entry="Long", stop=sl_long)
    strategy.exit(id="SL", from_entry="Short", stop=sl_short)

// ____ Plots

colors = 
 enter_long ? #27D600 :
 enter_short ? #E30202 :
 color.orange

ema1_plot = plot(ema1, color=colors)
ema2_plot = plot(ema2, color=colors)
ema3_plot = plot(ema3, color=colors)
fill(ema1_plot, ema3_plot, color=colors, transp=50)


もっと