資源の読み込みに... 荷物...

怠け者の圧縮に基づいたモメンタム戦略

作者: リン・ハーンチャオチャン開催日:2023年12月21日 14:22:49
タグ:

img

概要

この戦略の主な考え方は,買取と売却のタイミングを分析するためのLazyBearのスプレイスモメント指標に基づいています.モメントトレンドの曲線点を分析し,ピークと低谷をそれぞれ販売と購入信号として位置付けます.これは長い戦略であるため,上向きの傾向を特定するために50期指数関数移動平均値も考慮します.キャンドルの閉値が50EMAを超え,50EMAの傾斜が上向きの傾向にある場合,購入信号は実行されます.

戦略原則

この戦略は,トレンドと圧縮ゾーンを特定するためにボリンジャーバンドとケルトナーチャネルを組み込む.具体的には,20期ボリンジャーバンドと20期ケルトナーチャネルを計算する.ボリンジャーバンドが完全にケルトナーチャネル内に落ちると,それは圧縮信号と見なされる.ボリンジャーバンドの下帯がケルトナーチャネルの下帯の上に,ボリンジャーバンド上帯がケルトナーチャネル上帯下に落ちると圧縮ゾーンが識別される.逆に,ボリンジャーバンド下帯がケルトナーチャネル下帯下に落ち,ボリンジャーバンド上帯がケルトナーチャネル上帯の上に上昇すると,それは圧縮ゾーンではない.

さらに,戦略はモメント傾斜の変化を分析するために線形回帰を利用する. 過去20期間の価格の線形回帰値を典型価格をマイナスすると計算する. 線形回帰値の傾斜が正であれば上向きの傾向とみなされる. 傾斜が負であれば下向きの傾向である. 圧縮圏内でモメント傾斜の逆転があった場合,それは購入または販売をシグナル化する. 具体的には,圧縮圏内では,モメントが正から負に転移すると販売信号を発信する. そして圧縮圏内では,モメントが負から正に転移すると購入信号を発信する.

誤った信号をフィルタリングするために,ストラテジーは閉じる価格が50日指数動平均値以上で,50日指数動平均値が上向きの傾斜にあるかどうかを判断する.両条件を満たすときのみ,購入信号が実行される.

利点分析

これは非常にスマートな戦略であり,市場を多次元的に判断するために,2種類の異なる指標を使用し,誤った信号を効果的に回避することができます.特に,その利点は以下のとおりです.

  1. 多次元分析と精度の向上のためにボリンジャー帯,ケルトナーチャネル,モメント指標の包括的な適用

  2. 圧縮ゾーンでは 運動勢の逆転のピークと底辺を効果的に特定し ターンを正確に把握できます

  3. 閉じる価格と50日間のEMAに基づくトレンドフィルタリングは,統合中に繰り返しポジションを開設することを避ける.

  4. 圧迫地帯でのみ発信する信号は 偽信号を減少させ 収益率を上げます

  5. 大規模なパラメータ最適化空間により,調整期間等を通じて標的型最適化が可能になります.

  6. 長期と短期を組み合わせて,大きなサイクル傾向を考慮し,中期指標を統合すると,長期方向性が明確になります.

リスク分析

この戦略には複数の技術指標がありますが,依然としていくつかのリスクがあります.

  1. ボリンガー帯とケルトナーチャネルが異なる場合 買い/売りの機会を逃す

  2. 市場が急上昇したり下落したりすると 大きな損失が発生する可能性があります

  3. 高波動性のある市場では,圧迫状況が明らかにならず,信号が少なくなる可能性があります.

  4. 調整損失に傾向がある.

これらのリスクを回避するために,次の措置を講じることができます.

  1. Bollinger Bands と Keltner Channels を最大限に同期するためにパラメータを最適化します

  2. 単一の損失を制御するストップ損失を設定する.

  3. この戦略を ポートフォリオ戦略の一部として 他の戦略と組み合わせて使うこと

  4. 高波動性のある市場において,適切なポジションを削減する.

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

この戦略の最適化には,主に以下の方向性において,まだ大きな余地があります.

  1. ボリンガー帯とケルトナーチャネルの周期を最適化して,できるだけ同期させる.

  2. パラメータの最適な組み合わせを見つけるために 異なる倍数因子をテストする.

  3. RSIなどなどの他の指標を導入してみてください

  4. ウェン・フアの5色線モデルに基づいて,市場段階に応じて選択的にこの戦略を使用します.

  5. パラメータを動的に最適化するために機械学習などを採用します

  6. バックテストで,最も適した取引商品を見つけます.

  7. この戦略の有効性をより長い時間枠 (毎日,毎週,など) で調査します.

結論

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")


もっと