
春秋重複動量戦略は,主に,異なる周期の変化率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+...
その中で,roc1-roc12は,それぞれ10日,15日から530日までの周期に対応する異なる周期ROCの計算を表しています.
次にoscをa日 (デフォルトは10日) のSMA平滑処理を行い,oscsmt。が得られます.
そしてoscとoscsmtの大きさの関係を比較し,osc上を穿う時,oscsmtは看板信号として,多方向へ入ります.osc下を穿う時,下向き信号として,空方向へ入ります.
最後に,取引の方向を逆転させることもできます.
短期と長期の動態指標を重ね合わせることで,短期と長期のトレンドを同時に捉え,偽の信号を生じさせないようにする.
oscとoscsmtの差値を比較することで,平盤領域の無駄取引を減らすことができます.
カスタマイズ可能なパラメータ,ROCを計算する周期パラメータの調整,およびSMAの平滑パラメータ.
異なる取引スタイルに対応する方向を逆転することもできます.
商品の価格や価格を判断する指標を視覚化します.
ROC指標は突然の異常価格に非常に敏感であり,誤った信号を生じることがあります.SMA平滑パラメータaを適切に大きくしてROC指標の感度を下げることができます.
デフォルトのパラメータは,すべての品種に適用されない可能性があり,異なる品種特性に応じてパラメータを最適化して,最適なパラメータの組み合わせを見つける必要があります.
oscとoscsmtの差値比較のみに基づいて取引信号を生成し,他の指標のフィルター信号と組み合わせて,誤った取引の確率を下げる.
この戦略は中長線取引に適しており,短線取引の効果は良くない.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")