双向移動平均取引戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-18 15:11:04
タグ:

img

概要

この戦略は,二重移動平均値を使用して取引信号を生成する.短期移動平均値が長期移動平均値を超えると購入信号を送信し,逆が起きたとき売却信号を送信する.この戦略は,移動平均値のトレンドフォロー能力を組み合わせて,価格トレンドを効果的に把握し,トレンド取引を実施する.

戦略の論理

この戦略は,異なる期間の2つの指数関数移動平均値 (EMA) を活用する. EMA1は,期間の9で設定された短期MAであり,EMA2は,期間の21で設定された長期MAである.この戦略は,EMA1がEMA2を超えると購入信号を生成し,EMA2を下回ると販売信号を生成する.

この戦略は,価格が新しいトレンド方向を開始するときにシグナルを捕捉するために移動平均のトレンド追跡能力を利用する.例えば,価格が下落から反転すると,短期MAは長期MAよりも早く上昇する.上記の交差は上昇傾向が始まる早期信号を生成する.

利点

この戦略の最大の強みは,価格傾向を効果的に識別する能力にあります.特に傾向が強い市場に適しています.移動平均値自体にはトレンドフォローする優れた機能があり,ダブルMAメカニズムはさらに改善します.また,シングルMA戦略と比較して,ダブルMAはより多くの偽信号をフィルタリングし,信頼性を向上させることができます.

デメリット

最も大きなリスクは,価格が劇的に変動すると,MAsの遅滞性により,最良のエントリーまたは出口ポイントが欠落する可能性があります.また,市場が範囲で統合すると,より無効な信号があり,戦略の安定性が低下します.

リスクを軽減するために,MA期間のようなパラメータをそれに応じて調整したり,追加のフィルターを追加したりできます.例えば,波動性指数を組み合わせて値を設定し,波動性の高い条件での取引を回避します.

強化

最適化空間は主に以下の側面にあります:

  1. 最適な組み合わせを見つけるためにMA期間のパラメータを最適化
  2. シグナル信頼性を向上させるため,フィルターとして他の指標を追加
  3. 異なる製品と市場制度に応じて調整可能なパラメータを設定する
  4. 正確なエントリーポイントを決定するためにボリューム指標を組み合わせる
  5. ストップ・ロスのメカニズムを最適化

概要

この戦略は,トレンド逆転を検出するための価格トレンド追跡能力の強さを持つ二重指数移動平均値で信号を生成する.しかし,MA遅延のような制限は存在する.次のステップは,信号品質,エントリータイミング,さまざまな次元からのストップ損失を向上させることである.


/*backtest
start: 2024-01-18 00:00:00
end: 2024-02-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © technicalTruff99446

//@version=4
strategy("AhmetMSA", overlay=true, initial_capital = 10000, commission_value = 0.002, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, calc_on_order_fills = true)
//2. DEĞERDEN SONRA GEÇMİŞ HESAPLAMA DEĞERİ, KOMİSYON ORANI, PARANIN TAMAMI, DEĞERLERİ EKLEMDİ

emaShPD = input (title="EMA KISA PERİYOT", defval=9, minval=1)
emaLngPD = input (title="EMA UZUN PERİYOT", defval=21, minval=1)

//input   DEĞİŞKEN DEĞER ATAMA

ema1 = ema (close,emaShPD)
ema2 = ema (close,emaLngPD)

//EMALAR ARASINI BOYAMA upTrend downTrend
upTrend   = plot (ema1, color=#4DFF00, linewidth=2, title= "EMA KISA", transp=0)
downTrend = plot (ema2, color=#FF0C00, linewidth=3, title= "EMA UZUN", transp=0)
//linewidth ÇİZGİ KALINLIĞI
//title     İSİM VERME

//BACKTESTİN BAŞLANGIÇ TARİHİNİ BELİRLEME
yearin = input(2024, title = "Backtest Başlangıç Tarihi")
//longCondition = crossover(ema1, ema2)
//shortCondition = crossover(ema2, ema1)
buy = crossover(ema1, ema2) and yearin >= year
sell = crossover(ema2, ema1) and yearin >= year
//ta.crossunder  KESİŞİM KODU

//Barları BOYAMA
barbuy  = ema1 >= ema2
barsell = ema2 <  ema1




//AL SAT AŞK KUTUCUKLU EKRANA YAZMA
plotshape(buy, title = "AL AŞK", text = 'AL AŞK', style = shape.labelup, location = location.belowbar, color= color.green,   textcolor = color.white, transp = 0, size = size.tiny)
plotshape(sell, title = "SAT AŞK", text = 'SAT AŞK', style = shape.labeldown, location = location.abovebar, color= color.red,   textcolor = color.white, transp = 0, size = size.tiny)

//Barları BOYAMA KOŞULU
barcolor(barbuy? #4DFF00: barsell? #FF0C00: #FF0C00)


fill(upTrend, downTrend, color = ema1 >= ema2?#4DFF00 : #FF0C00, transp = 80, title = "bgcolor")

//longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
//shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
//14 GÜNLÜĞÜN KAPANIŞDEĞERİNİN 28 GÜNLÜK KAPANIŞ DEĞERİNİ KESMESİ KOŞULU



if (buy)
    strategy.entry("AL AŞK", strategy.long)


if (sell)
    strategy.entry("SAT AŞK", strategy.short)


もっと