動向平均に基づく戦略をフォローする傾向

作者: リン・ハーンチャオチャン,日付: 2024-01-22 17:26:04
タグ:

img

概要

戦略の論理

低速EMAが低速EMAを下から横切ると,市場は上昇傾向に入っていることを示し,買い信号を生成する.低速EMAが低速EMAを下から横切ると,低速EMAの開始を標示し,売り信号を生成する.

利点分析

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

  1. 移動平均をベースに 短期的な市場騒音をフィルタリングし 傾向を追います
  2. パラメータの最適化が可能で,EMAの速さと遅さをカスタマイズできます.
  3. 中期から長期の動向や短期的調整を追跡できる
  4. シンプルで明快な論理で 分かりやすく実行し 初心者にも適しています

リスク分析

リスクもあります:

  1. MAシステムに固有の遅れは,価格逆転点を逃す可能性があります.他の指標で最適化することができます.

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

  1. EMA期間を最適化して 収益性を向上させる
  2. 偽のブレイクを避けるために取引量などの他の指標を追加します.
  3. トレンドの強度指標を組み込み トレンドの逆転を回避する
  4. より広い適応性を確保するパラメータ最適化

結論

この戦略は,2つのEMAクロスオーバーに基づいて取引システムを構築し,市場のトレンドを決定するために高速および遅いEMA関係を使用する.シグナル生成はシンプルで明確である.それはいくつかのノイズをフィルターし,トレンドに沿って,中長期トレンド取引に適している.マルチインジケーター最適化およびリスク管理を通じて普遍性と効率性を向上させる余地がある.


/*backtest
start: 2023-01-21 00:00:00
end: 2024-01-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10)


// === Inputs ===
// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 30, title = "Fast MA Period", minval = 1)

// long ma
maSlowSource   = input(defval = close, title = "Slow MA Source")
maSlowLength   = input(defval = 100, title = "Slow MA Period", minval = 1)

// invert trade direction
tradeInvert = input(defval = false, title = "Invert Trade Direction?")
// risk management
useStop     = input(defval = true, title = "Use Initial Stop Loss?")
slPoints    = input(defval = 0, title = "Initial Stop Loss Points", minval = 1)
useTS       = input(defval = true, title = "Use Trailing Stop?")
tslPoints   = input(defval = 0, title = "Trail Points", minval = 1)
useTSO      = input(defval = false, title = "Use Offset For Trailing Stop?")
tslOffset   = input(defval = 0, title = "Trail Offset Points", minval = 1)

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=blue)
plot(slowMA, color=purple)

goLong() => crossover(fastMA, slowMA)
killLong() => crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when = goLong())
strategy.close("Buy", when = killLong())

// Shorting if using
goShort() => crossunder (fastMA, slowMA)
killShort() => crossover(fastMA, slowMA)
//strategy.entry("Sell", strategy.short, when = goShort())
//strategy.close("Sell", when = killShort())

if (useStop)
    strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 )
    strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)

もっと