異なるタイムフレームのモメンタムスタッキング戦略

作者: リン・ハーンチャオチャン開催日:2023年10月26日 17:39:26
タグ:

img

概要

モメントスタッキング戦略は,主に異なる期間の変化率 (ROC) を計算し,重み付けし,トレンド方向を判断するための包括的なモメント指標を形成するためにそれらを積み重ねます.この戦略は,短期的および長期的トレンドをバランスさせ,誤った信号を避けるため,短期的,中期的および長期的モメント指標を積み重ねます.

戦略の論理

戦略はまず,10日,15日,20日等間の ROC指標を計算し,ROCを平ら化し,1-4の重量比で積み重ね,式を得ます.

roc1 = (sma(roc(close,10),10)*1)
roc2 = (sma(roc(close,15),10)*2)  
...
osc = roc1+roc2+roc3+roc4+...

この項には,ROCの計算が 10 日から 530 日までの異なる期間の ROC を表す.

その後,OSCをSMAの (デフォルト10日) でスムーズ化し,OSCSMTを得ます.

Osc と oscsmt を比較します. Osc が oscsmt を上昇信号として越え,ロングに入るとき. Osc が oscsmt を下回り信号として越え,ショートに入るとき.

最後に,取引方向を逆転させることもできます.

利点

  1. 短期的および長期的動向指標を積み重ねることで,短期的および長期的トレンドの両方を把握し,誤った信号を避けることができます.

  2. OSCとOSCSMTを比較することで,横向市場での不必要な取引を減らすことができます.

  3. ROC 期間と SMA のスムーズさを調整するためのカスタマイズ可能なパラメータ

  4. 逆転可能な取引方向は,異なる取引スタイルに対応します.

  5. 視覚的な指標は 買い物・販売のポイントを直感的にします

リスク と 最適化

  1. ROCは急激な価格異常に非常に敏感であり,誤った信号を生む可能性がある. SMAのスムーズさを増加させ,ROCの敏感性を低下させる.

  2. デフォルトパラメータはすべての取引手段に適合しない可能性があります.異なる特徴に基づいて最適なパラメータ組み合わせを見つけるために最適化が必要です.

  3. OSCとOSCSMTクロスオーバーに基づいた取引のみです.シグナルをフィルターし,エラーを減らすために他の指標を追加することができます.

  4. 中長期の取引に適した.使用シナリオを最適化するためにROC期間を調整する必要があります.

結論

モメントスタッキング戦略は,包括的なモメント指標を得るために複数のROC期間を計算し,短期的および長期的トレンドの両方を把握し,誤った信号を避ける.単一のROCと比較して,信号品質と信頼性を大幅に向上させる.しかし,それでもいくつかのモニタリングリスクがあります.パラメータは最適化および他の指標を組み合わせて有効性を最大化する必要があります.


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

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter 08/08/2017
// Pring's Special K is a cyclical indicator created by Martin Pring. 
// His method combines short-term, intermediate and long-term velocity 
// into one complete series. Useful tool for Long Term Investors
// Modified for any source.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Martin Pring's Special K Backtest", shorttitle="UCS_Pring_sK")
a = input(10, title = "Smooth" )
sources = input(title="Source",  defval=close)
reverse = input(false, title="Trade reverse")
roc1 = (sma(roc(sources,10),10)*1)
roc2 = (sma(roc(sources,15),10)*2)
roc3 = (sma(roc(sources,20),10)*3)
roc4 = (sma(roc(sources,30),15)*4)
roc5 = (sma(roc(sources,40),50)*1)
roc6 = (sma(roc(sources,65),65)*2)
roc7 = (sma(roc(sources,75),75)*3)
roc8 = (sma(roc(sources,100),100)*4)
roc9 = (sma(roc(sources,195),130)*1)
roc10 = (sma(roc(sources,265),130)*2)
roc11 = (sma(roc(sources,390),130)*3)
roc12 = (sma(roc(sources,530),195)*4)
osc = roc1+roc2+roc3+roc4+roc5+roc6+roc7+roc8+roc9+roc10+roc11+roc12
oscsmt = sma(osc,a)
pos = iff(osc > oscsmt, 1,
	     iff(osc < oscsmt, -1, nz(pos[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)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(osc, color=blue, title="Martin Pring's Special K")
plot(oscsmt, color = red, title = "Smooth")
hline(0, title="Zero Line")

もっと