2つの要素によるモメント追跡逆転戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-18 11時33分40秒
タグ:

img

概要

この戦略は,株の価格逆転因子とモメンタム因子を組み合わせて,短期的な逆転と市場における長期的持続から生じる機会を捉えるための二要素モデルを構築する.まず,短期的な価格逆転信号を決定するために123チャートパターンを使用し,その後,中長期の傾向を判断するためにラガーRSI指標を組み込み,最終的に二要素信号の効果的な統合を達成する.

戦略の原則

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

  1. 123 逆転パターン因子

    この部分では,過去2日間の閉店価格の変化を調査することによって,短期的な価格逆転信号を検出します.特に,昨日の閉店価格が前2日より低く,今日の閉店価格が昨日のより高くなった場合,それは上昇価格逆転信号として決定することができます.ストック指標は判断を支援する補助手段として機能します.

  2. ラグエール フィルタリング RSI 因数

    この部分はラガーフィルターを使用して,より反応性の高いRSIインジケーターを構築する.価格変化に対する伝統的なRSIインジケーターの感度は比較的低い. 対照的に,ラガーフィルターは,歴史的なデータを使用し,価格変動に対する感度を向上させる指標を構築することができます. 新しいRSIインジケーターは,中長期トレンドを決定するために使用されます.

最終的には,この戦略は,両要因からの信号を組み合わせ,短期的な逆転が市場全体の動向に合わせて発生することを確保し,リターセインメントの機会を活用します.

戦略 の 利点

この戦略の最大の利点は,逆転とトレンドファクターの成功の組み合わせにある.逆転ファクタは価格統合後の短期的な引き下げ機会を捉え,トレンドファクタは全体的な長/短バイアスが変化しないことを保証する.スタンドアロン逆転またはモメントモデルと比較して,この二要素モデルでは,誤った信号を下げながら,長/短信号の精度を向上させることができます.

さらに,ラグエールRSIの導入により,価格変動に対するモデルの感受性が向上し,これは特に高周波取引において極めて重要です.

リスク分析

この戦略が直面する主なリスクは,二つの要因からの矛盾する信号の可能性である.特に不安定な市場訂正中に,短期的な価格が頻繁に逆転し,中長期的傾向も変化し始めることがあります.そのような場合,二つのタイプの信号は容易に不一致または遅延を経験することができます.これは間違った戦略信号と逃げたエントリーチャンスまたは不必要な損失につながる.

また,パラメータ構成が不十分である場合,戦略のパフォーマンスも低下する可能性があります.逆転要因とトレンド要因に属する技術指標のパラメータは,別々に最適化およびテストする必要があります.不適切なパラメータ組み合わせは,戦略の有効性を著しく低下させることがあります.

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

この戦略の将来の最適化の主な焦点は,信号フィルタリングとパラメータ選択を含む.二要素信号が衝突するときに効果を発揮するために,より多くのフィルタリング条件を導入し,取引が高い確実性シナリオでのみ行われることを保証する.これは誤った信号を劇的に減らすことができます.

パラメータ選択については,機械学習および科学実験方法を用いて,さまざまなパラメータ組み合わせを体系的にテストし,最適な構成に到達しようと試みることができる.これはかなりのコンピューティング力を必要とするが,戦略の安定性を大幅に改善することができる.

概要

この戦略は,短期的な引き下げと中期から長期間の持続性を利用するために,二要素モデルを通じて逆転とトレンド要因を成功裏に統合した.ラガーフィルタリングRSIの導入により,価格変化に対するモデルの感受性が向上する.次の段階は,シグナルフィルタリングとパラメータ最適化に焦点を当て,戦略をさらに強化する.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 21/01/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 is RSI indicator which is more sesitive to price changes. 
// It is based upon a modern math tool - Laguerre transform filter.
// With help of Laguerre filter one becomes able to create superior 
// indicators using very short data lengths as well. The use of shorter 
// data lengths means you can make the indicators more responsive to 
// changes in the price.
//
// 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

LB_RSI(gamma,BuyBand,SellBand) =>
    pos = 0.0
    xL0 = 0.0
    xL1 = 0.0
    xL2 = 0.0
    xL3 = 0.0
    xL0 := (1-gamma) * close + gamma * nz(xL0[1], 1)
    xL1 := - gamma * xL0 + nz(xL0[1], 1) + gamma * nz(xL1[1], 1)
    xL2 := - gamma * xL1 + nz(xL1[1], 1) + gamma * nz(xL2[1], 1)
    xL3 := - gamma * xL2 + nz(xL2[1], 1) + gamma * nz(xL3[1], 1)
    CU = (xL0 >= xL1 ? xL0 - xL1 : 0) + (xL1 >= xL2 ? xL1 - xL2 : 0)  + (xL2 >= xL3 ? xL2 - xL3 : 0)
    CD = (xL0 >= xL1 ? 0 : xL1 - xL0) + (xL1 >= xL2 ? 0 : xL2 - xL1)  + (xL2 >= xL3 ? 0 : xL3 - xL2)
    nRes = iff(CU + CD != 0, CU / (CU + CD), 0)
    pos := iff(nRes > BuyBand, 1,
    	     iff(nRes < SellBand, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Laguerre-based RSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
gamma = input(0.5, minval=-0.1, maxval = 0.9)
BuyBand = input(0.8, step = 0.01)
SellBand = input(0.2, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posLB_RSI = LB_RSI(gamma,BuyBand,SellBand)
pos = iff(posReversal123 == 1 and posLB_RSI == 1 , 1,
	   iff(posReversal123 == -1 and posLB_RSI == -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 )

もっと