Squeeze Momentum on Reversal Strategyは,市場における潜在的な逆転を特定するためにボリンジャーバンド (BB) とケルトナーチャネル (KC) 指標を使用する技術的取引戦略である.この戦略は,BBとKCバンドが一緒に圧縮されると,市場は統合期間にいることを示唆するという考えに基づいている.これは逆転が差し迫っている兆候である.
この戦略は,最初に指定された長さのBBおよびKC帯を計算することによって機能する.デフォルトの長さは20バーである.BB帯は,デフォルトで2.0である指定倍数で倍される.KC帯は,デフォルトで1.5である指定倍数で倍される.
次のステップは,BBとKC帯が一緒に圧縮されているかどうかを確認することです.そうであれば,戦略は,価格がKC帯以上である場合,ロングポジションと,価格がKC帯以下である場合,ショートポジションに入ります. ポジションのサイズは,デフォルトで0.0018である指定された逆転強さによって決定されます.
戦略は,BBとKC帯が離れるときにポジションを退場する.出口信号は,価格がKC帯の外に移動するときに生成される.
Squeeze Momentum on Reversal Strategyは,比較的シンプルな戦略であるが,市場における潜在的な逆転を特定するのに有効である.しかし,いかなる取引戦略も利益をもたらすことは保証されないことを覚えておくことが重要です.ライブ取引で使用する前に,戦略を歴史的なデータでバックテストすることが常に重要です.
戦略の様々な構成要素について詳しく説明します.
ボリンジャーバンド (BB): BB指標は,移動平均値と標準偏差を使用して価格の周りにバンドを作成する波動性指標である.波動性が高いとき帯は広がり,波動性が低いとき帯は狭くなる. ケルトナーチャネル (KC):KC指標はBB指標に似ているが,異なる移動平均値と標準偏差計算を使用している.KC帯は通常BB帯よりも狭いので,変動の変化により敏感である. リバース・ストレンジ:リバース・ストレンジは,戦略が取引に入ると取られるポジションのサイズを決定するパラメータである.より高いリバース・ストレンジは,より大きなポジションサイズをもたらす. Squeeze Momentum on Reversal Strategyは,さまざまなタイムフレームや市場で使用できる汎用的な戦略である.しかし,この戦略はトレンド市場で最も効果的であることを注意することが重要です.不安定な市場では,この戦略は多くの誤った信号を生む可能性があります.
逆転戦略のスプレスモメントを使用するためのヒントは以下です
ストップロスを使って 利益を守ります 市場が有利に動くと 利益を得るためにストップロスを使います リアルタイムの取引に使う前に ストラテジーを過去データでバックテストします 逆転戦略における圧縮モメンタムによって生成されたシグナルを確認するために,さまざまな他の指標を使用します. 逆転戦略における圧縮勢力は,市場の潜在的な逆転を特定するために使用できる強力なツールです.しかし,戦略を賢明に使用し,その限界を理解することは重要です.上記のヒントに従うことで,この戦略を使用する際に成功の機会を高めることができます.
/*backtest start: 2022-09-02 00:00:00 end: 2023-09-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // // @author Odyssee // @version=2 // strategy(shorttitle = "Squeeze MOM", title="Squeeze Momentum on Reversal Strategy", overlay=false) length = input(20, title="BB Length") mult = input(2.0,title="BB MultFactor") lengthKC=input(20, title="KC Length") multKC = input(1.5, title="KC MultFactor") strength = input(0.0018, title="Reversal Strength") useTrueRange = input(true, title="Use TrueRange (KC)", type=bool) // Calculate BB source = close basis = sma(source, length) dev = multKC * stdev(source, length) upperBB = basis + dev lowerBB = basis - dev // Calculate KC ma = sma(source, lengthKC) range = useTrueRange ? tr : (high - low) rangema = sma(range, lengthKC) upperKC = ma + rangema * multKC lowerKC = ma - rangema * multKC sqzOn = (lowerBB > lowerKC) and (upperBB < upperKC) sqzOff = (lowerBB < lowerKC) and (upperBB > upperKC) noSqz = (sqzOn == false) and (sqzOff == false) highest = highest(high, lengthKC) lowest = lowest(low, lengthKC) lastsma = sma(close,lengthKC) valin = linreg(source - avg(avg(highest, lowest), lastsma), lengthKC,0) bcolor = iff( valin > 0, iff( valin > nz(valin[1]), lime, green), iff( valin < nz(valin[1]), red, maroon)) scolor = noSqz ? blue : sqzOn ? black : gray plot(valin, color=bcolor, style=histogram, linewidth=4) plot(0, color=scolor, style=cross, linewidth=2) shortcondition = valin > strength and valin < nz(valin[1]) // line become green longcondition = valin < (strength*-1) and valin > nz(valin[1]) // line become maroon if(longcondition) strategy.entry("BUY", strategy.long) if(shortcondition) strategy.entry("SELL", strategy.short)