2つの移動平均逆転戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-26 15:27:58
タグ:

概要

双移動平均逆転戦略は,平均逆転と移動平均原理を組み合わせた取引戦略である. 123逆転方法を使って最初に逆転取引信号を生成し,その後,2/20指数移動平均値でシグナルをフィルタリングし,両方の信号が一致するときにのみ取引を行う.この戦略は,強度を改善するために短期的な逆転機会を把握し,長期的トレンドフィルターを使用して高い確率設定を特定することを目的としている.

戦略の論理

戦略は2つの部分からなる.

  1. 123 逆転戦略

123の逆転戦略は"How I Tripped My Money in the Futures Market"という本から由来する.閉店価格が2日間で高値から低値に下がり,9日間のスローストキャストが50を下回ると,ロングに行く逆転点を示唆する.閉店価格が2日間で低値から高値に上昇し,9日間の急速ストキャストが50を超えると,ショートに行く逆転点を示唆する.

  1. 2/20 指数関数移動平均戦略

この戦略は,長期トレンドを決定するために2/20 EMAを使用する.価格が2/20 EMAラインを超えると,上昇傾向を示す.価格が2/20 EMAラインを下回ると,下落傾向を示す.これは偽のブレイクアウトをフィルタリングする.

この戦略は123の逆転信号が2/20のEMA信号と一致するときにのみ取引信号を生成します.

利点分析

この戦略は,短期的な逆転と長期的傾向を組み合わせることで,以下の利点があります.

  1. 短期的な逆転から高利益の機会を掴む

123 逆転目標は,価格変動が頻繁に起き,利益目標がより大きくなる場合,過剰購入と過剰売却のシナリオです.

  1. 2/20 EMAフィルターは偽のブレイクリスクを回避する.

純粋な逆転戦略はトレンド市場に敏感である. 2/20 EMAフィルターはトレンドに対する信号を排除し,偽造時の悪い取引を防ぐ.

  1. 二重条件はリスク報酬のプロフィールを向上させる

単一の指標は誤った信号を生むことが多い. 互いを補完する2つの指標を組み合わせることで,信頼性とリスク・リターンの結果が著しく向上します.

  1. 明確な論理は最適化を直感的にします

各コンポーネントの明確な機能により,論理は直感的に理解し,最適化し,変化する市場環境に適応できます.

リスク分析

利点 に も かかわらず,いくつかの リスク を 考慮 する 必要 が あり ます.

  1. 逆転は実現しないかもしれない

過去の業績は将来の成果を保証するものではありません.実際の逆転ブランスの程度は不確実であり,損失を引き起こす可能性があります.

  1. 傾向は拡大する

2/20 EMA は,強いトレンド市場を完全にフィルターすることはできません.短期的訂正は,より大きなトレンドに圧倒されることがあります.

  1. パラメータ最適化が重要です

パラメータ設定に対して性能は非常に敏感であり,広範なバックテストを通じて堅調に最適化され,変化する市場に調整する必要があります.

  1. 長期的有効性は不明

短期的な良い結果は持続的な業績を保証するものではありません.市場は非常にストカスティックで,長期的な結果は多様な環境で堅牢な検証を必要とします.

これらのリスクは,パラメータ調整,ストップ損失,リスク制御などによって管理できる.ボリューム,変動指標などの条件により強度が向上する.機械学習技術により動的最適化も可能である.

増進 の 機会

戦略をさらに最適化する方法:

  1. 逆転パラメータを最適化

異なるパラメータセットをテストして,より安定した,より高い品質の信号のための反転パターンを検出します.

  1. 移動平均のシステムを最適化する

異なるMAパラメータで実験するか,より正確な傾向評価のために複数のMAチェックを組み込む.

  1. フィルターを追加する

ボリューム,揮発性,その他のフィルタを組み込み,誤った信号を軽減し安定性を向上させることができます.

  1. 動的最適化を実装する

大規模な歴史的データセットにおける機械学習技術は 動的で堅牢なパラメータ調整を可能にします

  1. ストップ・ロスの戦略を組み込む

インテリジェントなストップ・ロスのルールにより 最大引き上げとリスクの暴露を制御できます

  1. 資金管理を最適化する

ポジションのサイズと資本の配分がより良くなり 全体的な業績が向上します

結論

ダブル移動平均逆転は,シンプルで実用的な短期取引戦略である.平均逆転とトレンドフォローのコンセプトを組み合わせることで,偽のブレイクアウトを回避しながら高い確率の価格逆転から利益を得ることを目指している.明確な論理は理解,最適化,適用を直感的にする.しかし,リスクのない戦略はない.多様な取引環境で一貫した利益を得るために,強度とリスク管理の継続的な改善が必要です.


/*backtest
start: 2023-09-18 00:00:00
end: 2023-09-25 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 06/08/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


EMA220(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ema(xPrice, Length)
    nHH = max(high, high[1])
    nLL = min(low, low[1])
    nXS = iff((nLL > xXA)or(nHH < xXA), nLL, nHH)
    pos :=  iff(close > xXA and close > nXS , 1,
    	     iff(close < xXA and close < nXS, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & 2/20 Exponential MA", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- 2/20 Exponential MA ----")
LengthMA = input(20, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posEMA220 = EMA220(LengthMA)
pos = iff(posReversal123 == 1 and posEMA220 == 1 , 1,
	   iff(posReversal123 == -1 and posEMA220 == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

もっと