この戦略の主な考え方は,買取と売却のタイミングを分析するためのLazyBear
この戦略は,トレンドと圧縮ゾーンを特定するためにボリンジャーバンドとケルトナーチャネルを組み込む.具体的には,20期ボリンジャーバンドと20期ケルトナーチャネルを計算する.ボリンジャーバンドが完全にケルトナーチャネル内に落ちると,それは圧縮信号と見なされる.ボリンジャーバンドの下帯がケルトナーチャネルの下帯の上に,ボリンジャーバンド上帯がケルトナーチャネル上帯下に落ちると圧縮ゾーンが識別される.逆に,ボリンジャーバンド下帯がケルトナーチャネル下帯下に落ち,ボリンジャーバンド上帯がケルトナーチャネル上帯の上に上昇すると,それは圧縮ゾーンではない.
さらに,戦略はモメント傾斜の変化を分析するために線形回帰を利用する. 過去20期間の価格の線形回帰値を典型価格をマイナスすると計算する. 線形回帰値の傾斜が正であれば上向きの傾向とみなされる. 傾斜が負であれば下向きの傾向である. 圧縮圏内でモメント傾斜の逆転があった場合,それは購入または販売をシグナル化する. 具体的には,圧縮圏内では,モメントが正から負に転移すると販売信号を発信する. そして圧縮圏内では,モメントが負から正に転移すると購入信号を発信する.
誤った信号をフィルタリングするために,ストラテジーは閉じる価格が50日指数動平均値以上で,50日指数動平均値が上向きの傾斜にあるかどうかを判断する.両条件を満たすときのみ,購入信号が実行される.
これは非常にスマートな戦略であり,市場を多次元的に判断するために,2種類の異なる指標を使用し,誤った信号を効果的に回避することができます.特に,その利点は以下のとおりです.
多次元分析と精度の向上のためにボリンジャー帯,ケルトナーチャネル,モメント指標の包括的な適用
圧縮ゾーンでは 運動勢の逆転のピークと底辺を効果的に特定し ターンを正確に把握できます
閉じる価格と50日間のEMAに基づくトレンドフィルタリングは,統合中に繰り返しポジションを開設することを避ける.
圧迫地帯でのみ発信する信号は 偽信号を減少させ 収益率を上げます
大規模なパラメータ最適化空間により,調整期間等を通じて標的型最適化が可能になります.
長期と短期を組み合わせて,大きなサイクル傾向を考慮し,中期指標を統合すると,長期方向性が明確になります.
この戦略には複数の技術指標がありますが,依然としていくつかのリスクがあります.
ボリンガー帯とケルトナーチャネルが異なる場合 買い/売りの機会を逃す
市場が急上昇したり下落したりすると 大きな損失が発生する可能性があります
高波動性のある市場では,圧迫状況が明らかにならず,信号が少なくなる可能性があります.
調整損失に傾向がある.
これらのリスクを回避するために,次の措置を講じることができます.
Bollinger Bands と Keltner Channels を最大限に同期するためにパラメータを最適化します
単一の損失を制御するストップ損失を設定する.
この戦略を ポートフォリオ戦略の一部として 他の戦略と組み合わせて使うこと
高波動性のある市場において,適切なポジションを削減する.
この戦略の最適化には,主に以下の方向性において,まだ大きな余地があります.
ボリンガー帯とケルトナーチャネルの周期を最適化して,できるだけ同期させる.
パラメータの最適な組み合わせを見つけるために 異なる倍数因子をテストする.
RSIなどなどの他の指標を導入してみてください
ウェン・フアの5色線モデルに基づいて,市場段階に応じて選択的にこの戦略を使用します.
パラメータを動的に最適化するために機械学習などを採用します
バックテストで,最も適した取引商品を見つけます.
この戦略の有効性をより長い時間枠 (毎日,毎週,など) で調査します.
LazyBear Squeeze Momentum戦略は,さまざまな技術指標を包括的に採用し,圧迫地帯での取引のインパクト逆転を正確に特定し,トレンドのない市場でのポジションの再開を避けています. 定量化可能な購入と販売ルールを体系的に定義し,バックテストで優れたパフォーマンスを発揮しています. パラメータ設定を最適化し,新しい判断指標を導入し,この戦略は改善の余地があり,量子トレーダーによる深入的な研究と適用に値します.
/*backtest start: 2023-11-20 00:00:00 end: 2023-12-20 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // // @author LazyBear // List of all my indicators: https://www.tradingview.com/v/4IneGo8h/ // initialBalance = 8000 strategy("Crypto momentum 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") useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool) // Calculate BB source = close basis = sma(source, length) ema = ema(source, 50) 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 val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0) slope = (val - val[2]) emaSlope = (ema - ema[1]) bcolor = iff(slope > 0, color.lime, color.red) scolor = noSqz ? color.green : sqzOn ? color.black : color.green squeeze = (noSqz ? 0 : sqzOn ? 1 : 0) plot(val, color=color.gray, style=plot.style_line, linewidth=1, title="momentum") plot(slope, color=bcolor, style=plot.style_circles, linewidth=2, title="slope") plot(0, color=scolor, style=plot.style_line, linewidth=2, title="squeeze-zero") co = crossover(slope / abs(slope), 0) cu = crossunder(slope / abs(slope), 0) if co and source > ema and emaSlope > 0 strategy.entry("long", strategy.long, comment="long") if cu strategy.close("long")