
多重平均線トレンドキャプチャと交差確認取引システムは,多周期指数移動平均 (EMA) の組み合わせに基づく定量取引戦略で,比較的強い指標 (RSI),移動平均のトレンド差 (MACD) と平均実際の範囲 (ATR) を補助指標として組み合わせている.この戦略の核心は,異なる時間周期の平均線位置関係を比較して市場のトレンド方向を決定することであり,トレンドが明瞭であるときにポジションを開き,トレンドが弱くなったり逆転したときに平らげることである.この戦略は,多周期に特化したトレンド確認機構を設計し,短期平均線と長期平均線の位置関係によってトレンドの強さと持続性を判断し,取引の勝利率と安定性を向上させる.
この戦略の核心原則は,複数の異なる周期の指数移動平均 (EMA) を利用して市場動向を判断し,取引機会を捕捉することである.戦略では,5つのEMAが使用されている:瞬時の平均線 (14周期),中間平均線 (25周期),短期平均線 (50周期),中期平均線 (100周期),長期平均線 (200周期).
戦略の主要な論理は以下の通りです.
トレンド判断の仕組み:
入口信号:
出発信号:
リスク管理:
位置追跡:
多重均線確認: 異なる周期の複数の均線を介してトレンドを共同確認し,偽突破や誤信号を減らす,信号品質を向上させる.
トレンドを正確に認識する: 単一均線システムと比較して,多均線システムは,市場トレンドの転換点をより正確に識別できます.特に,瞬時の均線が他の均線との相対的な位置の変化がある場合.
リスク管理の柔軟性: 多頭と空頭に対して異なる入場と出場基準を採用し,市場における異なる方向のリスクに対する差異的な処理を反映し,空頭取引は波動率のフィルターを追加する.
ビジュアル取引シグナル戦略: グラフィカルタグで購入,販売,平仓の位置を明確に表示し,追跡分析とリアルタイム監視を容易にします.
トレンド背景の可視化背景の色を使って上昇傾向と下降傾向を区別し,市場環境を直視的に表示し,トレーダーが現在の市場状態を迅速に判断できるようにする.
潜在的拡張性: RSIとMACDの指標の計算が統合されており,現在の取引論理では使用されていませんが,戦略の将来の最適化のための基礎を提供します.
パラメータの可変性: すべてのキーパラメータは,平均線周期,RSI値,MACDパラメータ,ATR設定を含む入力制御で調整できます.これは,異なる市場環境と取引品種に応じて最適化することができます.
平均線遅れ:すべての均線ベースのシステムには一定の遅滞があり,震動市場または急速な逆転の状況で大きな後退が起こり得る. 解決策は均線周期を調整するか,または追加の震動市場フィルター条件を追加することです.
過剰取引のリスク変動する市場では,瞬時平均線が短期平均線を頻繁に横切り,過剰な取引を引き起こし得る.最小保有時間を増やしたり,追加のフィルターを追加することによって,無効取引を減らすことができる.
市場への適応性の問題: 固定パラメータの均線戦略は,異なる市場環境と取引品種で大きな違いがある. 特定の市場のためにパラメータを最適化するか,自己適応パラメータを使用することを考慮すべきである.
信号の衝突: RSIとMACDの指標はコードで計算されていますが,取引ロジックに有効に統合されていません.これは潜在的シグナル衝突や最適化の機会を逃す可能性があります.
多頭偏向:現在の戦略は多頭と空頭に対して異なる基準を採用し,多頭は波動率フィルタがなく,空頭は最小ATR条件を満たす必要があります.これは,上昇市場において戦略をより激進化し,リスクの穴を増やす可能性があります.
固定出場メカニズム: 戦略は,固定技術指標の交差を出発点として使用し,市場の動向に応じて調整されるストップ・ストップ・損失の仕組みがないため,利益を効果的にロックしたり,リスクを制御したりすることができない.
パラメータ感度: 戦略は複数の平均線周期パラメータに依存し,これらのパラメータの微小な変化が取引結果の顕著な差異を引き起こす可能性があり,過度に適合するリスクを高めます.
計算した指標を統合策略はRSIとMACDの指標を計算しているが,充分に利用していない. RSIは,極端な市場条件をフィルターするために使用することができ,MACDは,トレンドの方向を確認して,信号の質を向上させるために使用できます. 例えば,多頭入場時にRSIが超買区間にないことを要求することができ,空頭入場時にRSIが超売り区間にないことを要求できます.
ダイナミック・ダメージ・ストップ・システム:ATRベースのダイナミックストップメカニズムを導入し,市場の変動に応じて自動的にストップ距離を調整し,リスク管理能力を向上させる.これは,入場ポイントを計算し,ATR値を一定数の倍数加減することで実現できる.
市場状況の分類:市場の状態 ((トレンド市場vs震動市場) の判断機構を増やす.異なる市場の状態で異なる取引戦略を採用する.例えば,長期平均線の斜率またはADX指標によって市場の傾向の強さを判断することができる.
多時間枠分析: 高い時間周期のトレンド情報を統合し,高い時間周期のトレンド方向が一致する時にのみ取引し,勝利率を上げます.
平均線を最適化する:現在の戦略は,固定平均線周期 ((14, 25, 50, 100, 200) を使用し,異なるパラメータの組み合わせを反省して,特定の市場に適した最適なパラメータを見つけることができます.
添付量確認: 取引量指標を組み合わせてトレンドの強さを確認し,取引量支持のトレンドのみで取引し,偽突破による損失を減らす.
競技場への入場条件変更:多頭と空頭の入場論理を最適化して,より対称にするか,異なる市場方向の特徴に合わせてより細かい調整を行う.例えば,多頭入場でも波動率フィルターを増加させたり,トレンド確認の厳格性を調整したりすることも考えることができます.
フィルタリング時間を追加:取引時間フィルターを加え,市場の波動が大きい時や流動性が低い時,例えば重要なデータ発表や市場の開盘・閉盘の時間などを避ける.
多重均線トレンドキャプチャーとクロス確認取引システムは,技術分析に基づく定量取引戦略で,複数の異なる周期の均線組合せによって市場トレンドを判断し,トレンドが明瞭であるときにポジションを開き,トレンドが弱くなったときに平仓する.戦略の核心優点は,多重均線クロス確認トレンドを利用して,誤った信号を減らすこと,取引品質を向上させることにある.
この戦略は,トレンドがはっきりした市場でうまく機能しますが,揺れ動いている市場では過度取引のリスクがあります. RSIとMACDの計算された指標を統合し,ダイナミックな止損メカニズムを導入し,平均線パラメータの組み合わせを最適化し,市場状態の分類を増やすことで,戦略の安定性と適応性をさらに向上させることができます.
実用的な適用には,まず異なる市場環境と取引品種で充分な反射を行い,特定の市場の特徴に合わせてパラメータを調整し,資金管理戦略と組み合わせて単一の取引リスクを制御することをお勧めします. さらに,この戦略をポートフォリオの一部として,他の互補的な戦略と組み合わせて使用し,取引リスクを分散させ,全体のポートフォリオの安定性を向上させることを考慮することができます.
/*backtest
start: 2025-02-23 00:00:00
end: 2025-03-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("etude9", shorttitle="etude 9", overlay=true)
//on tente de comlbiner avec le RSi un stratégie pas si mauvaise sur les longs
// un d7 r rsi qui donne des indiciataions pas mal pour les short pour les long pas très concluant
// === Paramètres d'entrée ===
// Source de prix
// et merde rendement sur long est plus efficace sans condition sur ATR !!
// par contre j'ai l'imression que le rsi ça va être bien pour les shorts
// bon avec le RSi ça donne rien, et avec le macd, ç ce stade c'est foireux mmm
pricetype = input(close, title="Source de prix pour les moyennes mobiles")
// Périodes des moyennes mobiles
instant = input(14, title="Période de la moyenne instantanée (10)")
interm = input(25, title="Perdiode intermediaire (25)")
shortperiod = input(50, title="Période de la moyenne mobile courte (20)")
mediumperiod = input(100, title="Période de la moyenne mobile moyenne (50)")
longperiod = input(200, title="Période de la moyenne mobile longue (100)")
// Paramètres du RSI
rsi_length = input.int(14, title="Période RSI")
rsi_overbought = input.int(78, title="Niveau de surachat (RSI)")
rsi_oversold = input.int(30, title="Niveau de survente (RSI)")
// Paramètres pour le MACD
fast_length = input.int(12, title="Longueur Rapide MACD")
slow_length = input.int(26, title="Longueur Lente MACD")
signal_length = input.int(9, title="Longueur du Signal MACD")
// Paramètres de l'ATR
atr_length = input.int(14, title="Période ATR")
atr_multiplier = input.float(1.5, title="Multiplicateur ATR pour le Stop-Loss")
// Calcul de l'ATR
atr = ta.atr(atr_length)
// === Calcul des moyennes mobiles (EMA uniquement) ===
instant_ma = ta.ema(pricetype, instant) // Moyenne mobile instantanée
short_ma = ta.ema(pricetype, shortperiod) // Moyenne mobile courte (20)
medium_ma = ta.ema(pricetype, mediumperiod) // Moyenne mobile moyenne (50)
long_ma = ta.ema(pricetype, longperiod) // Moyenne mobile longue (100)
interm_ma = ta.ema(pricetype, interm)
// Calcul du RSI
rsi = ta.rsi(close, rsi_length)
// Calcul du MACD
[macd_line, signal_line, hist_line] = ta.macd(close, fast_length, slow_length, signal_length)
// Stocker les résultats de crossover et crossunder dans des variables globales
is_crossover = ta.crossover(macd_line, signal_line)
is_crossunder = ta.crossunder(macd_line, signal_line)
// Filtre ATR : on ne trade que si la volatilité est suffisante
min_atr = atr > ta.sma(atr, atr_length) // ATR supérieur à sa moyenne
// === Conditions de tendance ===
trending_up = instant_ma > short_ma and instant_ma > medium_ma and instant_ma > long_ma and short_ma > medium_ma // Tendance haussière
trending_down = instant_ma< short_ma and instant_ma<medium_ma and instant_ma<long_ma and short_ma<long_ma // Tendance baissière
// Filtre RSI
rsi_filter_buy = rsi < rsi_overbought // RSI n'est pas en surachat pour un achat
rsi_filter_sell = rsi > rsi_oversold // RSI n'est pas en survente pour une vente
// === Gestion des positions ===
var bool in_position = false // Variable pour suivre si une position est ouverte
var bool is_long = false // Variable pour suivre si la position est longue ou courte
// === Signaux d'ouverture et de fermeture ===
bool buy_signal = false // Signal d'ouverture d'une position longue
bool close_signal = false // Signal de fermeture d'une position longue
bool sell_signal = false // Signal d'ouverture d'une position courte
bool close_short_signal = false // Signal de fermeture d'une position courte
// Ouvrir une position longue
if (trending_up and not in_position)
strategy.entry("Long", strategy.long)
in_position := true
is_long := true
buy_signal := true // Signal d'ouverture
else
buy_signal := false
// Fermer la position longue si instant_ma < medium_ma
if (in_position and is_long and instant_ma < short_ma)
strategy.close("Long")
in_position := false
is_long := false
close_signal := true // Signal de fermeture
else
close_signal := false
// Ouvrir une position courte
if (trending_down and not in_position and min_atr)
strategy.entry("Short", strategy.short)
in_position := true
is_long := false
sell_signal := true // Signal d'ouverture
else
sell_signal := false
// Fermer la position courte si instant_ma > medium_ma
if (in_position and not is_long and instant_ma > medium_ma)
strategy.close("Short")
in_position := false
close_short_signal := true // Signal de fermeture
else
close_short_signal := false
// === Affichage des signaux sur le graphique ===
plotshape(series=buy_signal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy", size=size.small)
plotshape(series=sell_signal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell", size=size.small)
plotshape(series=close_signal, title="Close Long Signal", location=location.abovebar, color=color.orange, style=shape.labeldown, text="Close Long", size=size.small)
plotshape(series=close_short_signal, title="Close Short Signal", location=location.belowbar, color=color.blue, style=shape.labelup, text="Close Short", size=size.small)
// === Affichage des moyennes mobiles sur le graphique ===
plot(short_ma, color=color.blue, title="Moyenne mobile courte (20)", linewidth=2)
plot(medium_ma, color=color.orange, title="Moyenne mobile moyenne (50)", linewidth=2)
plot(long_ma, color=color.red, title="Moyenne mobile longue (100)", linewidth=2)
plot(instant_ma, color=color.rgb(43, 14, 111), title="Moyenne mobile instantanée (10)", linewidth=2)
plot(interm_ma, color=color.rgb(26, 192, 34), title="Moyenne mobile instantanée (10)", linewidth=2)
// Coloration de fond pour les tendances
bgcolor(color=trending_up ? color.new(color.green, 90) : trending_down ? color.new(color.red, 90) : na, title="Coloration de fond")