移動平均ターニングポイントクロスオーバー取引戦略


作成日: 2024-01-29 11:15:42 最終変更日: 2024-01-29 11:15:42
コピー: 8 クリック数: 585
1
フォロー
1617
フォロワー

移動平均ターニングポイントクロスオーバー取引戦略

概要

移動平均転換点交差取引戦略は,クラシックな技術指標戦略である.この戦略の核心思想は,異なる周期の移動平均を組み合わせて買入シグナルを生成し,移動平均転換点を活用して取引のエクストをさらに最適化することである.この戦略は,様々な時間周期と品種に適用され,安定した収益を得ることができる.

戦略原則

この戦略は主に2つの移動平均線を使用し,短い周期が快線,長い周期が遅線である.快線が下方向から遅線を突破すると買入シグナルが生じ,速い線が上方向から下方向から遅線を突破すると売り出せシグナルが生じます.これはクラシックな移動平均クロス戦略の取引シグナル生成メカニズムである.

さらに,この戦略は,移動平均の転換点を利用して取引を終了する.快線が上から下へと転がる時,多単会場は退場する.快線が下から上へと転がる時,空単会場は退場する.移動平均の転換点は,市場の短期的な逆転の瞬間を捉えることができ,これは戦略を間に合わせた止損または停止に役立て,その結果,全体的な収益率を向上させる.

優位分析

移動平均のターニングポイントクロス取引戦略には以下の利点があります.

  1. 操作はシンプルで,簡単に実装できる。この戦略は,移動平均とROCの2つの指標のみを使用する。コードの実装は複雑ではない。

  2. 連続的損失に強い抵抗力がある.移動平均線は,それ自体には一定の遅滞と滑らかな価格の傾向の特徴がある.これは,一部のノイズをフィルターし,揺れ動いている傾向の中で無効な取引を過剰に発生させることを防ぐことができる.

  3. 単一損失を効果的に制御できる.移動平均の転換点を利用して,時効的に損失を止めて,単一損失の大幅な発生を減らすことができる.

  4. 適用幅広く。この戦略の原理はシンプルで,様々な品種と日線,時線などの異なる取引時間枠に適用できます。パラメータ最適化スペースは大きい。

  5. 収益の安定.市場ホットポイントを追求する戦略とは対照的に,この戦略はリスク管理を重んじ,超高の収益を追求しないが,安定した正の収益を得ることができる.

リスク分析

移動平均のターニングポイントを交差するトレード戦略にはいくつかのリスクがあり,主に以下のいくつかの側面に焦点を当てています.

  1. 移動平均の遅延性。 急速な動きが来るとき,移動平均の交差信号は一定の遅延があり,最適な入場時間を逃す可能性がある。

  2. 空仓時間は長い。この戦略は出場は比較的早いが,入場信号は遅い。これは,部分的に空仓時間が多すぎることにつながり。空仓の間,一定市場での利益の機会を逃してしまう。

  3. 参数最適化は困難である.移動平均の長さ,ROC周期などの参数選択は戦略のパフォーマンスに大きく影響する.しかし,参数最適化は,大量の歴史的データによる反測を必要とするため,最適化は困難である.

  4. 大規模な振動の状況では効果が悪い. 大規模な振動の状況では,移動平均は,戦略のパフォーマンスに影響する時,無効な交差が複数発生する.

最適化の方向

取引戦略をさらに最適化するには,以下の方法があります.

  1. トレンド波指標と組み合わせます. ADX,ATRなどの指標を足し,トレンドの状態を判断します. 明確なトレンドがないときに値で戦略を閉鎖し,無効取引を回避します.

  2. 多時間枠の組み合わせ 高い時間枠で主動トレンドの方向を判断し,逆向きの取引を避ける

  3. 参数自適應最適化.移動平均の長さなどの参数が,リアルタイム市場の波動程度に応じて自適應調整を可能にし,参数強さを向上させる.

  4. パターン認識 │MA交差点でパターンを認識して偽信号をフィルターする │

要約する

移動平均線転換点交差取引戦略は,全体としてリスクと利益のバランスの取れた戦略である.それは,実現しやすさ,連續損失に対する耐性,収益の安定性などの優位性があり,移動平均線の遅れ,空置期間の長すぎなどの問題もある.パラメータ最適化,トレンド判断,パターン認識などの手段を導入することにより,この戦略の効果をさらに向上させることができる.

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

//@version=4
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("SMA", "1st MA Type", options=["SMA", "EMA"])

ma2 = input(50, title="2nd MA Length")
type2 = input("SMA", "2nd MA Type", options=["SMA", "EMA"])

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    ema(price, ma1)
    
price2 = if (type2 == "SMA")
    sma(price, ma2)
else
    ema(price, ma2)


//plot(series=price, style=line,  title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)


longCondition = crossover(price1, price2)
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(price1, price2)
if (shortCondition)
    strategy.entry("Short", strategy.short)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

shortexitCondition = ma1up and ma1down[1]
if (shortexitCondition)
    strategy.close("Short")

longexitCondition = ma1down and ma1up[1]
if (longexitCondition)
    strategy.close("Long")