
この戦略は,複数の技術指標を組み合わせた総合的な取引システムであり,主に幽霊移動平均 (Ghost Moving Average),モメンタムオシレータ (Momentum Oscillator) およびフィボナッチ回調レベルを統合して,完全な取引の枠組みを構築する. この戦略は,幽霊移動平均を使用して市場のトレンド方向を決定し,信号の強さを検証するためにモメンタム指標と組み合わせ,フィボナッチレベルを使用して,リスク管理の自動化を実現するために,目標と価格のストップポイントを自動的に設定します.
ゴースト移動平均 (GMA): これは戦略の核心構成要素であり,従来の移動平均よりより敏感な価格トレンドシグナルを提供する特殊な計算方法である. 具体的計算式は: 半周期加重移動平均の2倍を計算し,全周期加重移動平均を減算し,結果に周期を原周期の平方根として加重移動平均を再び適用する.
動力指数策略は,現在の価格と特定の周期前の価格の差値を用いて市場の動きを測定し,指数移動平均 ((EMA)) で平滑処理し,標準差で再帰化され,動きの信号をより安定して信頼できるようにします.
傾向を判断する: 幽霊移動平均の斜率を計算して市場の傾向を決定する.斜率は正の上昇傾向を表し,斜率は負の減少傾向を表す.
フィボナッチ目標値とストップ: 戦略は,逆行期間の最高価格と最低価格を基にフィボナッチレベルを計算し,それぞれ0.618,1.0および1.618をターゲット価格として,0.382をストップ損失レベルとして使用した.
入学条件:
トレンドとモチベーションの二重確認: 幻の移動平均と動力の指標を組み合わせることで,策略は偽信号を効果的に減らすことができ,両指標が同時に条件を満たす場合にのみ取引信号を誘発します.
適応したリスク管理: フィボナッチレベルを使用して,ターゲット価格とストップポイントを自動的に設定します.この方法は,市場の変動に合わせて自動的に調整され,異なる市場条件下で適切なリスク/リターン比率を提供します.
ビジュアル取引表盤戦略の内蔵の取引表は,トレンドの状態,取引シグナル,入場理由,ターゲット価格,ストップ損失などの重要な情報を直視的に表示し,トレーダーが迅速な意思決定を助ける.
市場変動に適応する: 幽霊移動平均は,従来の移動平均よりも価格変化に敏感であり,トレンドの転換をより早く認識し,遅滞を減らすことができます.
明確な取引ルール戦略は,入場と出場の条件を明確にし,主観的な判断を減らし,トレーダーに規律を保つのに役立ちます.
過剰取引のリスク: 揺れ動いている市場では,価格が頻繁に幻の移動平均を横切り,過剰な取引信号を引き起こす可能性があります. 解決策は,明確なトレンドのみで取引するか,信号確認周期を増やすなど,追加のフィルタリング条件を追加することです.
リスクの設定: 固定比率のフィボナッチ・ストップは,非常に波動的な市場では柔軟性がないため,ストップが過度に緩やかまたは過度に緊密になる可能性があります.異なる市場状況に応じてフィボナッチ比率を動的に調整することが推奨されています.
パラメータ感度: 戦略の性能は,GMA長さ,動力周期など,複数のパラメータの設定に高度に依存し,異なる市場と時間枠では異なるパラメータの組み合わせが必要になる可能性があります. 最適なパラメータを見つけるために反省を行うことをお勧めします.
トレンド判断の遅延: 幻の移動平均は従来の移動平均よりも敏感であるにもかかわらず,一定の遅延があり,トレンドの初期にいくつかの機会を逃す可能性があります.より短い周期の指標を組み合わせて,トレンドの変化を早期に発見することを考慮することができます.
反射偏差戦略のフィボナッチレベルは,歴史データに基づいて計算され,前向き偏差がある可能性があります.実際の取引では,この点に注意し,よりダイナミックな方法を使用して,重要なレベルを計算することを検討してください.
適応パラメータの最適化: 現在の戦略は,固定パラメータ設定を使用し,自調メカニズムを導入し,市場の変動に応じてGMAの長さと動力の周期を自動的に調整し,戦略が異なる市場条件下で最適なパフォーマンスを維持できるようにします.
多時間枠分析: 複数の時間枠の分析を追加し,複数の時間枠の信号が一致するときにのみ取引を実行します.これは,信号の質と成功率を大幅に向上させることができます.
ダイナミック・ストップ・ターゲット: 現行の戦略は,固定フィボナッチレベルをターゲット価格として使用し,市場の波動的な動向に応じてターゲット価格の調整を考慮するか,利益の潜在性を最大化するために追跡ストップ戦略を実施することができます.
取引量分析: 取引量指数と組み合わせて,価格トレンドの有効性を検証し,価格と取引量が同時に確認された場合にのみ取引を行うことで,偽の突破信号を減らすことができます.
機械学習の強化: 入場条件とパラメータの選択を最適化するために機械学習アルゴリズムを導入し,過去データ訓練モデルを使用して最適な取引機会とリスク管理戦略を予測する.
感情指標の統合: 市場情緒指数,例えば波動率指数,または他の衍生指数を加え,極端な市場条件下で戦略行動を調整し,リスク管理能力を向上させる.
幽霊移動平均と動量結合のフィボナッチ目標価格とストップ・ローズ戦略は,複数の指標と技術を組み合わせた,包括的な技術分析取引システムであり,体系化された取引の枠組みを提供します. この戦略の核心的な優位性は,傾向と動力の二重確認機構と,市場の変動性に基づく自己適応リスク管理システムにあります.
/*backtest
start: 2024-04-02 00:00:00
end: 2025-04-01 00:00:00
period: 3d
basePeriod: 3d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Ghost MA + Momentum + Fib TP/SL + Dashboard", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === INPUTS ===
src = input(close, "Source")
gmaLength = input.int(20, "GMA Length")
momentumLength = input.int(20, "Momentum Length")
momentumSmoothing = input.int(10, "Momentum Smoothing")
swingLookback = input.int(50, "Fibonacci Swing Lookback")
// === GHOST MOVING AVERAGE ===
gma = ta.wma(2 * ta.wma(src, gmaLength / 2) - ta.wma(src, gmaLength), math.round(math.sqrt(gmaLength)))
plot(gma, title="Ghost MA", color=color.teal, linewidth=2)
// === MOMENTUM GHOST OSCILLATOR ===
momentum = src - src[momentumLength]
smoothMomentum = ta.ema(momentum, momentumSmoothing)
normalizedMomentum = smoothMomentum / ta.stdev(momentum, momentumLength)
// === MARKET TREND ===
gmaSlope = gma - gma[1]
marketTrend = gmaSlope > 0 ? "UPTREND" : "DOWNTREND"
// === SWING POINTS FOR FIBONACCI ===
highestHigh = ta.highest(high, swingLookback)
lowestLow = ta.lowest(low, swingLookback)
fibRange = highestHigh - lowestLow
entryPrice = close
// === FIBONACCI TP/SL LEVELS ===
tp1_long = entryPrice + (fibRange * 0.618)
tp2_long = entryPrice + (fibRange * 1.0)
tp3_long = entryPrice + (fibRange * 1.618)
sl_long = entryPrice - (fibRange * 0.382)
tp1_short = entryPrice - (fibRange * 0.618)
tp2_short = entryPrice - (fibRange * 1.0)
tp3_short = entryPrice - (fibRange * 1.618)
sl_short = entryPrice + (fibRange * 0.382)
// === STRATEGY CONDITIONS ===
longCond = ta.crossover(src, gma) and normalizedMomentum > 0
shortCond = ta.crossunder(src, gma) and normalizedMomentum < 0
if (longCond)
strategy.entry("Long", strategy.long)
strategy.exit("TP/SL Long", from_entry="Long", limit=tp1_long, stop=sl_long)
if (shortCond)
strategy.entry("Short", strategy.short)
strategy.exit("TP/SL Short", from_entry="Short", limit=tp1_short, stop=sl_short)
// === SIGNAL LABELS ON CHART ===
if (longCond)
label.new(bar_index, low, "BUY\n" + str.tostring(close, "#.##"), style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
if (shortCond)
label.new(bar_index, high, "SELL\n" + str.tostring(close, "#.##"), style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
// === ALERT CONDITIONS ===
alertcondition(longCond, title="Buy Signal", message="Buy Signal Triggered: GMA Cross Up + Momentum Positive")
alertcondition(shortCond, title="Sell Signal", message="Sell Signal Triggered: GMA Cross Down + Momentum Negative")
// === DASHBOARD ===
var table dash = table.new(position.top_right, 1, 8, border_width=1)
if bar_index % 5 == 0
signal = longCond ? "BUY" : shortCond ? "SELL" : "WAIT"
reason = longCond ? "GMA↑ & Momentum+" : shortCond ? "GMA↓ & Momentum−" : "No Clear Signal"
timeframe = timeframe.period
sigColor = signal == "BUY" ? color.new(color.green, 20) : signal == "SELL" ? color.new(color.red, 20) : color.new(color.gray, 60)
trendColor = marketTrend == "UPTREND" ? color.new(color.green, 80) : color.new(color.red, 80)
table.cell(dash, 0, 0, "📊 GHOST TRADING DASHBOARD", text_color=color.black, bgcolor=color.lime, text_size=size.large)
table.cell(dash, 0, 1, "Trend: " + marketTrend, text_color=color.black, bgcolor=trendColor, text_size=size.normal)
table.cell(dash, 0, 2, "Timeframe: " + timeframe, text_color=color.black, bgcolor=color.purple, text_size=size.normal)
table.cell(dash, 0, 3, "Signal: " + signal + " @ " + str.tostring(close, "#.##"), text_color=color.black, bgcolor=sigColor, text_size=size.normal)
table.cell(dash, 0, 4, "Reason: " + reason, text_color=color.black, bgcolor=color.new(color.yellow, 60), text_size=size.normal)
table.cell(dash, 0, 5, signal == "BUY" ? "TP1: " + str.tostring(tp1_long, "#.##") +
" | TP2: " + str.tostring(tp2_long, "#.##") +
" | TP3: " + str.tostring(tp3_long, "#.##")
: signal == "SELL" ? "TP1: " + str.tostring(tp1_short, "#.##") +
" | TP2: " + str.tostring(tp2_short, "#.##") +
" | TP3: " + str.tostring(tp3_short, "#.##") : "-",
text_color=color.black, bgcolor=color.new(color.green, 80), text_size=size.normal)
table.cell(dash, 0, 6, "Reentry: " + str.tostring(gma, "#.##"), text_color=color.black, bgcolor=color.new(color.orange, 80), text_size=size.normal)
table.cell(dash, 0, 7, signal == "BUY" ? "SL: " + str.tostring(sl_long, "#.##") : signal == "SELL" ? "SL: " + str.tostring(sl_short, "#.##") : "-", text_color=color.black, bgcolor=color.new(color.red, 70), text_size=size.normal)