2つの移動平均逆転取引戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月10日 11:18:38
タグ:

img

概要

この戦略は,高速および遅い移動平均の黄金十字と死十字に基づいて設計されています.高速MAが遅いMAを超えると,ロングに行く.高速MAが遅いMAを下回ると,ショートに行く.この戦略は中長期取引に適しており,市場のトレンド逆転を捉えることができます.

戦略の論理

この戦略は,指数的な移動平均線 (EMA) を用いて,高速線と遅い線を計算する.高速MAの長さは10期,遅いMAの長さは30期である.この戦略は,まず高速EMAと遅いEMAを計算し,その後線をプロットし,トレンド方向を示すために異なる色の背景を示します.

本日の閉店が高速MAより上,高速MAが遅いMAより上である場合,背景は緑色で,上昇傾向を示す.本日の閉店が高速MAより下,高速MAが遅いMAより下である場合,背景は赤色で,低下傾向を示す.

上向きのトレンドでは,赤色のキャンドルストイック (オープンの下の閉じる) が存在し,昨日も赤色のキャンドルストイックであった場合,ロングします.300ポイントでストップロスを設定し,ショートポジションを閉じて利益を得ます.

ダウントレンドでは,緑色のキャンドルスタイク (オープン上の閉じる) が存在し,昨日も緑色のキャンドルスタイクであった場合,ショートします. 300ポイントにストップロスを設定し,ロングポジションを閉じて利益を得ます.

各方向のポジションを開いた後,保持時間が1008000000ミリ秒 (約2週間) を超えると,行き詰まりを防ぐためにポジションを強制的に閉じる.

利点分析

  • 二重EMAシステムは,市場の騒音を効果的にフィルタリングし,トレンド逆転点を特定することができます.
  • 快速で遅いMAsとキャンドルスタイク色の組み合わせは,信頼できるエントリー信号を提供します.
  • ストップ・ロストと収益戦略は,個々の取引の損失を減らす
  • 強制的な位置閉ざしメカニズムは,デッドロックからの大きな損失を回避します

リスク分析

  • EMAシステムは価格急上昇に敏感でないため,取引機会を逃す可能性があります
  • 誤った高速および遅いMAパラメータ設定は,誤った信号を引き起こす可能性があります.
  • ストップ・ロスのポイントが狭すぎると,清算の危険性が高まる.ストップ・ロスの幅が広すぎると,不必要な損失が生じる.
  • 不適切な強制閉じる時間設定は,早速終了または長時間保持につながる可能性があります.

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

  • EMA システムの収益性を異なるパラメータでテストし,高速および遅いMA 長さを最適化する
  • 信号の正確性を向上させるため,確認のためにMACDのような他の指標を追加することを検討します.
  • 日々のボリューム変化とのリンクストップ損失
  • 市場変動に基づいて強制的な閉店時間を動的に調整する

結論

この戦略は,誤った信号を避けるために追加のルールでトレンドとキャンドルスタックフィルターのためのダブルEMAを使用し,全体的に非常にバランスのとれたものです.しかし,EMAパラメータとストップ損失/利益ルールはさらなる最適化が必要です.全体として信頼性の高いトレンド取引戦略です.


/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
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/
// © yeainshukla

//@version=5


strategy('BuyRedSellGreen4H', overlay = true)
greenCandle = close > open
redCandle = open > close

start  = timestamp(2023,9,18,0,00)
end = timestamp(2023,12,31,0,00)


fastLength = input.int(10, title="Fast Average Length")
slowLength = input.int(30, title="Slow Average Length")

averageData = input.source(close, title="Average Data Source")

// Calculate exponential moving averages
fastAverage = ta.ema(averageData, fastLength)
slowAverage = ta.ema(averageData, slowLength)

// Plot averages
plot(fastAverage, color=color.navy, title="Fast EMA")
plot(slowAverage, color=color.fuchsia, linewidth=2, title="Slow EMA")

// Show the moving average trend with a coloured background
backgroundColor = if close > fastAverage and fastAverage > slowAverage
    color.new(color.green, 85)
else if close < fastAverage and fastAverage < slowAverage
    color.new(color.red, 85)
else
    color.new(color.orange, 90)

bgcolor(backgroundColor, title="EMA Background")


if time >= start and time < end
    if(close < open) 
        if(close[1] < open[1])
            strategy.entry("Enter Long", strategy.long)
            strategy.exit("Exit Long", from_entry="Enter Long")
            strategy.close("Enter Short")

    else
        if(close[1] > open[1])
            strategy.entry("Enter Short", strategy.short)
            strategy.exit("Exit Short", from_entry="Enter Short")
            strategy.close("Enter Long")
    if strategy.position_size < 0 or strategy.position_size > 0// short and long is opened.
        if((time - strategy.opentrades.entry_time(strategy.opentrades - 1)) > 1008000000)
            strategy.close("Enter Short")
            strategy.close("Enter Long")

もっと