LazyBearの圧力モーメントに基づく定量的モメンタム戦略


作成日: 2023-12-21 14:22:49 最終変更日: 2023-12-21 14:22:49
コピー: 0 クリック数: 926
1
フォロー
1621
フォロワー

LazyBearの圧力モーメントに基づく定量的モメンタム戦略

概要

この戦略の主な考え方は,LazyBearのSqueeze Momentum指標に基づいて,買入と売却のタイミングを分析する.それは,トレンドの転換点,高点と低点を分析して,販売と買入の信号として動作する.これは多機能戦略であるため,上昇の傾向を識別するために50サイクルインデックス移動平均も考慮される.の終止価格が50日インデックス移動平均より高く,50日インデックス移動平均が上昇の傾向にある場合,買入シグナルを実行する.これらの条件が満たされない場合は,買入シグナルを無視する.

戦略原則

この戦略は,ブリン帯の指標とケルトナー通路の指標を融合させ,トレンドと圧力の区間を識別する.具体的には,20周期のブリン帯と20周期のケルトナー通路の上下軌道を計算する.ブリン帯が完全にケルトナー通路内に落ちると,圧縮信号とみなされる.ブリン帯の下軌道がケルトナー通路の下軌道を超え,ブリン帯の上軌道がケルトナー通路の上軌道より低いとき,圧縮区間として識別する.逆に,ブリン帯の下軌道がケルトナー通路の下軌道より低いとき,ブリン帯の上軌道がケルトナー通路より高いとき,非圧縮区間として識別する.

さらに,この戦略は,動力の変化の傾向と斜率を利用して,線形回帰を分析する. それは,過去20サイクルにおける価格が典型的な価格の線形回帰値を減算する. 線形回帰値の斜率が正であるときは,上昇傾向と見なされる; 斜率が負であるときは,下降傾向と見なされる. 圧迫区間内で,動力の斜率が反転した場合,買入と出札の信号とみなされる.

偽信号をフィルターするために,この戦略は,閉盘価格が50日指数移動平均より高いかどうかを判断し,50日指数移動平均が上昇しているかどうかを判断します.この2つの条件が同時に満たされている場合にのみ,買入シグナルが実行されます.

戦略的優位分析

これは非常に賢明な戦略であり,同時に2つの異なるタイプの指標を使って市場の多面的な判断を行うことで,偽信号を効果的に回避できます.具体的には,その利点があります:

  1. ブリン帯,ケルトナー通路,動量指標を総合的に利用し,多次元分析を行い,判断の正確性を向上させる.

  2. 圧縮区間は,動量反転の高低点を効果的に識別し,ターニングを正確に捕捉することができる.

  3. 閉盤価格と50日指数移動平均に基づいてトレンドフィルタリングを行うことで,清算時に再開を避けることができます.

  4. 圧縮区間でのみ信号を発信することで,偽信号を減らすことができ,利益の確率を高めることができる.

  5. この策略のパラメータ最適化スペースは広く,周期調整などのパラメータをターゲットに最適化することができる.

  6. 長期的・短期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的・長期的

リスク分析

この戦略は,多くの技術指標を考慮したものの,いくつかのリスクがあります.

  1. ブリン・ベルトとケルター・チャネルが散らばると,買い/売りの機会が逃れることになる.

  2. 戦略は,暴動が急激に進むと,大きな損失を被る.

  3. 高波動の状況では,圧縮は目立たない可能性があり,信号は少ない.

  4. 牛とクマの交換では,調整損失が発生する可能性があります.

このリスクに対して,以下のような方法で対処できます.

  1. ブリン帯とケルトナー通路を可能な限り同期させるための最適化パラメータ.

  2. ストップ・ローンを設定し,単一損失をコントロールする.

  3. この策略は,組み合わせの策略の一部として,他の策略と併用して使用されます.

  4. 波動性が高い状況では,適切なポジションの減少.

最適化の方向

この戦略は,以下のような方向で,多くの改善を進める余地があります.

  1. ブリン帯とケルトナー通路の長さの周期を最適化して,可能な限り同期させる.

  2. 異なる倍数因子をテストし,最適なパラメータの組み合わせを探します.

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

  4. この戦略は,文華彩線などのモデルに基づいて市場の段階を判断し,選択的に使用する.

  5. 機械学習などの方法による動的最適化パラメータ.

  6. 異なる通貨を分析し,最も適した取引品種を探します.

  7. この戦略がより長い周期 (日線,周線など) で効果を発揮することを探求する.

要約する

LazyBearプレッシャー矩定量動量戦略は,複数の技術指標を総合的に使用し,圧縮区間において動量転換を正確に識別し,取引を行い,非トレンドの状況で頻繁にポジションを開くのを避ける.それは,体系的に定量取引ルールを定義し,反測で優れたパフォーマンスを発揮する.最適化パラメータ設定,新しい判断指標の導入などの手段によって,この戦略には大きな改善の余地があり,定量トレーダーが深入に研究し,適用する価値があります.

ストラテジーソースコード
/*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")