平滑移動平均と移動平均の取引戦略


作成日: 2023-10-17 16:11:19 最終変更日: 2023-10-17 16:11:19
コピー: 1 クリック数: 1110
1
フォロー
1617
フォロワー

平滑移動平均と移動平均の取引戦略

EMAとヘイキン・アシの取引戦略に関する記事です.

概要

この戦略は,平らな移動平均と平均線を用いてトレンドを判断し,価格が異なる周期を突破した移動平均に基づいて取引シグナルを生成する.

戦略原則

この戦略は,15周期と50周期の指数移動平均EMAを使用する.現在のHeikin Ashiの閉盘価格を計算し,EMAと対比する.閉盘価格が2つのEMAより高く,15EMAが50EMAより高くなったら,買入シグナルを生成する.閉盘価格が2つのEMAより低く,15EMAが50EMAより低くなったら,売出シグナルを生成する.

価格が15EMAを突破すると,逆転取引を行う.

優位分析

  1. EMAは市場騒音を効果的にフィルターし,トレンドの方向性を判断します.

  2. 短期および中期トレンドを同時に捉えるために,異なる周期的なEMAを組み合わせることができます.

  3. Heikin Ashiは,偽の侵入をフィルターし,取引信号を検証する.

  4. 戦略はシンプルでわかりやすく,実行しやすい.

リスク分析

  1. EMAは後退しており,トレンドの転換点を逃している可能性がある.

  2. 固定パラメータは市場の変化に適応せず,ダイナミックな最適化が必要である.

  3. 取引は頻繁で,取引コストは高い可能性があります.

  4. 突破取引は偽の突破の影響を受けやすいので,他の指標と組み合わせて検証する必要があります.

パラメータの最適化,他の指標の統合などによってリスクを低減することができる.

最適化の方向

  1. 動的に最適化EMAパラメータ,市場の変化に応じて周期的に調整

  2. 突破フィルターを最適化し,偽突破を回避する.例えば,取引量検証を増やす.

  3. MACDなどの他の指標と組み合わせて,取引信号を検証する.

  4. トレンドによる遅滞EMA,震動による先行EMA.

要約する

この戦略は,EMAを活用してトレンドの方向を判断し,ハイキン・アシで信号を検証し,簡潔で直接である。しかしEMAの遅れや偽突破のリスクには注意が必要である。パラメータ最適化,指標統合などの方法で改善し,リスクを低減しながら戦略の効果を高めることができる。

ストラテジーソースコード
/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-12 02:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("EMA & Heikin Ashi", shorttitle="EMA & Heikin Ashi", overlay=true, initial_capital=1)


// squaa's Strategy
//
// Idea by Thw on March 10, 2018.
//
//
// The strategy should be used with high leverages,
// never stop running,
// and is always long or short.

// Input
price = input(close)
MA1_Length = input(15)
MA2_Length = input(50)


haclose = request.security(heikinashi(syminfo.tickerid), timeframe.period, close)

// === FUNCTION EXAMPLE ===
start     = timestamp(2018, 01, 01, 20, 00)  // backtest start window
window()  => time >= start ? true : false // create function "within window of time"


// Calculation
MA1 = ema(price, MA1_Length)
MA2 = ema(price, MA2_Length)

// Strategy
long = haclose > MA1 and haclose > MA2 and MA1 > MA2 and window()
short = haclose < MA1 and haclose < MA2 and MA1 < MA2 and window()

// MA trend output color
MA2_color = long?lime:short?red:blue

strategy.entry("Long", strategy.long, when=long)
strategy.entry("Short", strategy.short, when=short)
strategy.close("Long", when=haclose < MA1)
strategy.close("Short", when=haclose > MA1)


// MA output
EMA1 = plot(MA1, title="EMA 1", style=linebr, linewidth=1, color=MA2_color)
EMA2 = plot(MA2, title="EMA 2", style=linebr, linewidth=3, color=MA2_color)
fill(EMA1, EMA2, color=silver, transp=50)

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)