二重指標 戦略をフォローする平均逆転傾向

作者: リン・ハーンチャオチャン開催日:2024年2月1日 10:55:30
タグ:

img

概要

この戦略は,移動平均指標と市場促進指標を組み合わせて買い売りシグナルを生成します.これは平均逆転取引戦略カテゴリーに属します.

原則

ストラクティックオシレータは,スローラインとファストラインの組み合わせである.価格が2日連続でダウンし,ファストラインがスローラインの上にあるとき,セールシグナルを生成する.価格が2日連続でダウンし,ファストラインがスローラインの下にあるとき,購入シグナルを生成する.価格逆転とファストラインとスローラインの関係をモニタリングすることによって,価格トレンドの潜在的なターニングポイントを予測することを目的としている.

2つ目の指標は市場促進指数である.これは価格範囲とボリュームの関係を計算することによって価格動きの効率性を測定する.指数が上昇すると,市場の流動性が向上し,運用効率が向上することを示し,トレンド市場を示す.指数が低下すると,流動性が悪化し,効率が低下することを示し,潜在的な横向的な市場またはトレンド逆転を意味する.

この戦略は,両方の指標が同時に一致する取引信号を発行するときに実際の購入・販売注文を生成します.

利点

  • 誤った信号を避けるため,2つの指標から確認を要求することで信号の正確性が向上します
  • 平均逆転指標とトレンド判断指標の組み合わせは,主要なトレンドに反する取引を避けるのに役立ちます.
  • パラメータの調整を頻繁に行う必要性が減り,手動的な介入が少なくなります

リスク と 解決策

  • 長期にわたる一方的な上昇傾向または下落傾向の場合,逆転機会を活用することは困難で,市場に参入することができません

  • 平均逆転指標のパラメータを緩和して,購入と販売信号をキャプチャするチャンスを増やすことができます.

  • ポジションのサイズも拡大して 利益を補うためにトレンドに乗ることができます

  • 不正確な反転信号は戦略を無効にすることがあります

  • パラメータを最適化したり,偽信号をフィルタリングするために信号確認段階を追加することができます.

強化 分野

  • 最適の設定を見つけるためにより多くのパラメータ組み合わせをテストする
  • より多くの平均逆転指標を探求し,異なる指標のパフォーマンスを評価する
  • 単一の取引損失を制限するためにストップ損失を導入する
  • より正確な逆転信号を生成するためにビッグデータで訓練された機械学習モデルを組み込む

概要

この戦略は,平均逆転指標とトレンド判断指標を組み合わせ,主要なトレンド方向を尊重しながら逆転信号が現れるときに市場に参入する. 双指数確認を使用することで,誤った信号は効果的に排除される. 長期間の一方的なトレンドと誤った逆転信号の間にはリスクがある. パラメータチューニング,ストップ損失,指標アップグレード,機械学習モデルを通じてさらなる最適化が可能である.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 02/02/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
// The Market Facilitation Index is an indicator that relates price range to 
// volume and measures the efficency of price movement. Use the indicator to 
// determine if the market is trending. If the Market Facilitation Index increased, 
// then the market is facilitating trade and is more efficient, implying that the 
// market is trending. If the Market Facilitation Index decreased, then the market 
// is becoming less efficient, which may indicate a trading range is developing that 
// may be a trend reversal.
//
// 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


MFI(BuyZone,SellZone) =>
    pos = 0.0
    xmyVol = volume
    xmyhigh = high
    xmylow = low
    nRes = (xmyhigh - xmylow) / xmyVol * 10000
    pos := iff(nRes > BuyZone, 1,
             iff(nRes < SellZone, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & Market Facilitation Index", 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, "---- MFI ----")
SellZone = input(6.2, minval=0.01, step = 0.01)
BuyZone = input(1, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMFI = MFI(BuyZone,SellZone)
pos = iff(posReversal123 == 1 and posMFI == 1 , 1,
	   iff(posReversal123 == -1 and posMFI == -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 )

もっと