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


作成日: 2023-11-10 11:45:30 最終変更日: 2023-11-10 11:45:30
コピー: 1 クリック数: 723
1
フォロー
1617
フォロワー

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

概要

三つのEMAトレンド追跡戦略は,異なる周期のEMA平均線を計算して,価格のトレンド方向を判断し,トレンド追跡を実現する.この戦略は,簡単に実行し,トレンドが明らかな品種で効果が顕著である.

戦略原則

この策略は,3つの異なる周期のEMA平均線を計算し,10周期,20周期,30周期のEMA。コード内のema関数によって3つの平均線を計算する。

戦略は主に3つの均線の方向を判断する.もし3つの均線が同時に上ると,多行シグナルを生成する.もし3つの均線が同時に下ると,空行シグナルを生成する.

プラスと空の信号の具体的な判定論理は,ema1,ema2とema3が過去1行Kで同時に上昇した場合,enter_longは真であり,多の信号を生成する.ema1,ema2とema3が過去1行Kで同時に低下した場合,enter_shortは真であり,空の信号を生成する.

プラスとマイクのシグナルに応じて,戦略は,対応するプラスとマイクのポジションを確立する.平仓の論理は,入場シグナルとは対照的に,ema1,ema2とema3の現在のKラインが同時に上昇しない場合,exit_longは真であり,平らになる多ポジションである.ema1,ema2とema3の現在のKラインが同時に下落しない場合,exit_shortは真であり,平らになる空席である.

このように,3つのEMA平均線の方向一致性を判断することで,価格の全体的な傾向を判断し,トレンド追跡を実現することができる.

戦略的優位性

  • 三つのEMA平均線を使用して,トレンドの方向を比較的に正確に判断することができます.単一の平均線と比較して,三つの平均線はトレンドを判断するのにより信頼性があり,誤信号が発生する確率は低いです.

  • EMAは価格の変化に敏感で,トレンドの転換をタイムリーに反映することができる.SMAなどの他の平均線と比較して,EMAはトレンドの方向を判断するのに適しています.

  • 異なる周期EMAを組み合わせて使用すると,短期および中長期のトレンドを兼ねることができる。10周期EMAは短期トレンドを判断し,20周期および30周期EMAは中長期トレンドを判断する。

  • 策略の実装はシンプルで,分かりやすく,初心者の学習に適しています.また,パラメータの最適化スペースは広く,異なる品種に合わせてパラメータを調整できます.

  • 戦略はEMAの均等な動作のみに基づいており,リソースが少なく,大量に適した配送で運用される.

戦略リスク

  • 三つのEMA均線方向の一致は,トレンドを判断するための必要だが不十分な条件である。EMA均線方向の偽突破時,誤信号が生じる。

  • トレンド転換時に,EMA平均線交差は遅滞し,トレンド転換点をタイムリーに反映できず,損失を引き起こす可能性があります.

  • EMAは価格変化に敏感で,多頭と空頭が頻繁に変換される場合,頻繁に平仓を開き,取引費を増やす.

  • 大幅に揺れ動いた市場では,EMA平均線が方向転換を繰り返し発生し,トレンドを正確に判断することができない.この戦略は効果的ではない.

  • 3つのEMA平均線周期のギャップを適当に拡大して,誤信号の確率を下げることができる。または,他の指標のフィルターで偽突破を加える。

  • 量能指標などと組み合わせてトレンドを確認し,トレンドの転換点を識別し,損失を減らすことができる。また,ストップ・ロスの位を適切に緩和することもできる。

  • 適当にEMAパラメータを増やして,平仓の頻度を低下させることができる。または他の均線指標を採用して代替することができる。

  • 市場が揺れ動いていると認識すると,戦略を一時停止して無効取引を回避できます.

最適化の方向

  • 周期最適化: 3つのEMAの周期パラメータを,異なる品種特性に適応するように調整する.

  • フィルター条件:MA,BOLLなどの指標を加え,EMA偽突破を避ける.

  • トレーリングストップ: トレーリングストップは,トレイルストップを徐々に追跡し,利益を保護します.

  • 資金管理:ポジション管理を最適化し,単一の損失が全体に与える影響を軽減する.

  • 市場動態判断:波動率などの指標に基づいて市場の揺れの程度を判断し,制御戦略の関与.

  • パラメータ自主適応:EMAサイクルパラメータを市場の変化に応じて自動的に最適化して,戦略の柔軟性を向上させる.

要約する

三つのEMAトレンド追跡戦略は,EMA均線方向で価格トレンドを判断し,自動追跡トレンドを取引する.この戦略は,シンプルで実用的で,パラメータ調整の余地があり,品種特性に合わせて最適化することができる.同時に,一定のリスクがあり,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)