
これは,カスタマイズされた高士平滑に基づくトレンドオフ価格振動指標を利用して潜在的価格逆転を識別する戦略である.この戦略は,トレンドオフ価格振動指標と価格周期の高士平滑移動平均線を組み合わせて,価格逆転の機会をキャプチャするために具体的な入場と出場条件を設定する.
この戦略は,まず,トレンド価格振動指数 ((GDPO) を計算し,その方法としては,閉盤価格と一定の周期の指数移動平均を比較して,短期間の価格周期を識別する.GDPOを高士平滑化して,Arnaud Legouxの移動平均 ((ALMA) を使って高士平滑技術を適用し,ノイズをフィルターして,価格トレンドのより明確な図を与える.
戦略は,平滑したGDPOとその遅滞版の交差状況によって,多空の多空のエントリーおよび出場条件を決定する.平滑したGDPOの遅滞版が負であるとき,多入場する.平滑したGDPOの下の遅滞版または0軸の時,多頭ポジションを平定する.同様に,平滑したGDPOの下の遅滞版が正時であるとき,空のエントリーする.平滑したGDPOの遅滞版または0軸の時,空頭ポジションを平定する.
グラフ上では,平滑後のGDPOとその遅滞版は,その交差点を直視的に示すために異なる色で描画されている。同時に,ゼロ軸を参考に描画されている。戦略入場時に背景の色を変更するように提示されている。また,GDPOの交差点に,出場点を提示するためにフォーク型のマークを描画されている。
この戦略は,トレンド解除技術と高ス平滑のフィルターノイズを組み合わせて,価格逆転の機会をより明確に識別できます.GDPOは,トレンド解除を周期分析と組み合わせることで,他の震動指標と比較して,正確性を向上させることができます.高ス平滑は,大量のノイズを削除して,指標信号をより明確にします.特定の入場出場条件は,損失を効果的に制御できます.
この戦略は,周期長さ,平滑パラメータなどのパラメータ調節に敏感であり,十分な回測を経て適切なパラメータの組み合わせを決定する必要があります.そうでなければ,誤った信号が過剰に発生する可能性があります.トレンドの状況では,この戦略は連続的な損失を生じることがあります.
動的にパラメータを調整し,トレンド判断指標と組み合わせて最適化して,戦略の安定性を向上させることができる。また,動的なストップダストを設定してリスクを制御することもできる。
この戦略は以下の方向から最適化できます.
動的に平滑パラメータを調整し,トレンド状況で平滑強度を高め,誤信号を減らす.
ADXのようなトレンド判断指標と組み合わせることで,トレンドの状況で継続的な損失を回避する.
価格の変動に合わせてストップポイントを調整したり,利益後にストップポイントを移動したりするなど,ストップ・ストラップの策略を増やす.
入学条件を最適化し,他の指標または形態と組み合わせて入学の正確性を向上させる.
資金管理を最適化し,市場状況に応じてポジションとストップポイントを調整する.
日線,周線などの異なる価格データをテストし,異なる周期で戦略の効果を評価する.
高氏平滑対トレンド逆転戦略に基づいて,GDPO指標を用いて価格の短期周期性を識別し,高氏波技術を用いて信号を抽出し,明瞭な入場出場条件下で逆転の機会を捕捉する.この戦略は,逆転取引のリスクを効果的に制御するが,パラメータの最適化とトレンド判断に注意する必要がある.指数と止損戦略の組み合わせを動的に調整し,確認することで,戦略の安定性をさらに向上させることができる.
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0
// © DraftVenture
//@version=5
strategy(title="Gaussian Detrended Reversion Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=15)
//Detrended Price Oscillator for price cycles
period_ = input.int(50, title="Price Length", minval=1)
barsback = period_/2 + 1
ma = ta.ema(close, period_)
dpo = close - ma[barsback]
// Rounded ALMA Calculations for gaussian smoothing
almaSource = dpo
almaWindowSize = input(title="Smoothing Length", defval=50)
lagLength = input(title="Lag Length", defval=25)
almaSmoothed = ta.alma(almaSource, almaWindowSize, 0.85, 6)
almaLag = almaSmoothed[lagLength]
// Reversion entry conditions
entryL = ta.crossover(almaSmoothed, almaLag) and almaSmoothed < 0
exitL = ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0)
entryS = ta.crossunder(almaSmoothed, almaLag) and almaSmoothed > 0
exitS = ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0)
// Long entry and exit
if entryL
strategy.entry("Long", strategy.long)
if exitL
strategy.close("Long")
// Short entry and exit
if entryS
strategy.entry("Short", strategy.short)
if exitS
strategy.close("Short")
// Plot the oscillator
plot(almaSmoothed, title="GDPO", color=color.green)
plot(almaLag, title="Lag", color=color.white)
hline(0, title="Zero Line", color=color.white)
bgcolor(entryL ? color.new(color.green, 40) : na)
bgcolor(entryS ? color.new(color.red, 40) : na)
plotshape(series=ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0), style=shape.xcross, location=location.top, color=color.white, size=size.tiny)
plotshape(series=ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0), style=shape.xcross, location=location.bottom, color=color.white, size=size.tiny)
//Strategy by KP