黄金取引のためのEMA離脱とパラボリックSARとCCI戦略

作者: リン・ハーンチャオチャン開催日:2023年12月7日17時04分54秒
タグ:

img

概要

これは,パラボリックSAR,CCIおよびEMAの技術指標の組み合わせに基づいたM5タイムフレームにおける金取引戦略である.市場引き下げ時の取引機会を把握するために,トレンド方向と過買い/過売り状況の識別のために3つの異なる指標を使用する.

戦略の論理

  1. パラボリックSARは,金貨のトレンド方向と潜在的な逆転点を決定するために使用される.SARドットが価格を下回り始めると,上昇傾向を示し,SARドットが価格の上回り始めると,下落傾向を示します.

  2. CCIは市場の過剰購入/過剰販売状況を示します.CCIが100を超えると上昇傾向が強くなり,CCIが-100を下ると下落傾向が強くなります.

  3. EMAのクロスオーバーは,価格の短期的転換点を示します. 急速線が上昇しているときにアップトレンドが示唆され, ダウントレンドが低下しているときに示唆されます.

  4. 入場規則:SARが上昇する方向で5分間の EMAを超え,CCIが100を超えるとロング;SARが減少する方向で5分間の EMAを超え,CCIが-100未満になるとショート.

  5. エグジットルール: エントリー価格で利益を取る + 7点,ストップ・ロスは1分間のEMAラインに設定する.

利点

  1. 3つの指標を用いて 傾向と主要なサポート/レジスタンスレベルを特定し 収益性を向上させる.

  2. CCIは誤ったブレイクを効率的にフィルタリングします.SARの逆転とトレンドの方向性が結合して,統合中に不必要なエントリを回避します.

  3. EMAとSARのクロスオーバーは,一時的な引き下げ中に低リスクのエントリを提供します.

  4. 金や小規模口座のような 変動性のある商品に適した 最適化されたパラメータです

リスク

  1. 主にブラック・スワン・イベントで失敗する技術指標に頼ります

  2. 変動性の高い商品で EMAのストップロスは 高い損失を伴うピークに 影響を受ける傾向があります

  3. CCIとSARからの潜在的な誤った信号は,不必要な損失につながる.

  4. 波動性のある動き中にシステム障害が発生すると,効果的なストップ損失実行が妨げられます.

増進 の 機会

  1. 異なるパラメータの組み合わせをテストし,CCIを金の特性に最適化します.

  2. ボリンジャー帯を組み込み 安定性を高めます

  3. 変化する市場に適応するSARパラメータのダイナミック最適化のために機械学習を使用する.

  4. 異なるストップ・ロスト・メカニズムをテストする.例えば,ストップを遅らせることで,ヒットする確率を減らす.

  5. ポジションサイズのモデルを最適化する.例えば,単一の取引損失額を制御するための固定分数,ダイナミックなポジションサイズのモデル.

結論

一般的に,トレンド,主要なサポート/レジスタンスレベル,低リスクエントリのための過買い/過売りゾーンを特定するための複数の指標を組み合わせた安定した金取引戦略である.最適化されたパラメータにより,小口座取引は金の高い変動性を活用することができる.適切なリスク管理を通じて対処できるリスクがある.強化を通じて安定性と収益性をさらに向上させる大きな可能性がある.


/*backtest
start: 2022-11-30 00:00:00
end: 2023-12-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Parabolic SAR and CCI Strategy with EMA Exit", overlay=true)

// Parameters
length = input(50, title="EMA Length")
length_21 = input(21, title="EMA Length 21")
acc = input(0.02, title="Acceleration Factor")
max_acc = input(0.2, title="Max Acceleration Factor")
takeProfitPoints = input(7, title="Take Profit Points")

// Variables
var float ep = 0.0
var float sar = 0.0
var float af = acc

// Calculating 5-minute EMA based on 1-minute data
var float sum_close = na
var float ema_5min = na
if (bar_index % 5 == 0)
    sum_close := 0.0
    for i = 0 to 4
        sum_close := sum_close + close[i]
    ema_5min := ema(sum_close / 5, length_21)

// Calculating 1-minute EMA
ema1 = ema(close, length)
cci = cci(close, 45)

// Custom Parabolic SAR Calculation
trendUp = close > ema1
trendDown = close < ema1

var float prev_sar = na
prev_sar := na(sar[1]) ? low[1] : sar[1]

if trendUp
    ep := high > ep ? high : ep
    af := min(af + acc, max_acc)
    sar := min(prev_sar, prev_sar + af * (ep - prev_sar))

if trendDown
    ep := low < ep ? low : ep
    af := min(af + acc, max_acc)
    sar := max(prev_sar, prev_sar + af * (ep - prev_sar))

// Entry Conditions
longCondition = sar > ema1 and ema1 > ema_5min and cci > 100
shortCondition = sar < ema1 and ema1 < ema_5min and cci < -100

// Exit Conditions
longTakeProfit = strategy.position_avg_price + takeProfitPoints * syminfo.mintick
longStopLoss = ema1
shortTakeProfit = strategy.position_avg_price - takeProfitPoints * syminfo.mintick
shortStopLoss = ema1

// Plotting Entry Points
plotshape(longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)

// Strategy Execution
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

if strategy.position_size > 0
    strategy.exit("Take Profit/Stop Loss", "Long", limit=longTakeProfit, stop=longStopLoss)

if strategy.position_size < 0
    strategy.exit("Take Profit/Stop Loss", "Short", limit=shortTakeProfit, stop=shortStopLoss)


もっと