
この戦略は,移動平均の交差に基づく取引システムで,EMAとSMAの2種類の移動平均をサポートし,1時間,4時間,日線,周線,双周線などの複数の時間周期に最適化されたデフォルトパラメータを提供します.システムは,高速と遅い移動平均の交差によって取引信号を生成し,視覚的な価格区間充填を提供します.
戦略の核心は,迅速な移動平均と遅い移動平均の交差を監視することによって潜在的トレンド変化を識別することです. 迅速な移動平均が向上して遅い移動平均を横切るとき,多行シグナルを生成し,迅速な移動平均が下って遅い移動平均を横切るとき,空白シグナルを生成します. 戦略は,多行のみ,空白のみ,双方向取引の3つのモードの選択肢を提供します. 最適な移動平均線のパラメータとタイプは,最適化によって得られた最高の数値の組み合わせによって,異なる時間周期で異なります.
これは,厳格に最適化され,複数の時間周期に適用される移動平均クロス戦略である.戦略は,科学的パラメータの最適化と柔軟な配置オプションによって,トレーダーに信頼できるトレンド追跡ツールを提供します.いくつかの固有のリスクがあるにもかかわらず,推奨された最適化の方向によって,戦略の安定性と信頼性をさらに向上させることができます.戦略の設計理念は,クラシックな技術分析方法と近代的な定量分析ツールを組み合わせ,トレーダーにシンプルで使いやすく,厳格に検証された取引システムを提供することです.
/*backtest
start: 2024-07-12 00:00:00
end: 2025-02-22 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("MA Crossover [ClémentCrypto]", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=20, initial_capital=10000,process_orders_on_close=true)
// Groupe pour le choix entre preset et personnalisé
usePreset = input.bool(title="Utiliser Preset", defval=true, group="Mode Selection")
// Inputs pour la stratégie
timeframeChoice = input.string(title="Timeframe Preset", defval="1H", options=["1H", "4H", "1D", "1W", "2W"], group="Preset Settings")
tradeDirection = input.string(title="Trading Direction", defval="Long Only", options=["Long Only", "Short Only", "Both Directions"], group="Strategy Settings")
// Paramètres personnalisés MA
customFastLength = input.int(title="Custom Fast MA Length", defval=23, minval=1, group="Custom MA Settings")
customSlowLength = input.int(title="Custom Slow MA Length", defval=395, minval=1, group="Custom MA Settings")
customMAType = input.string(title="Custom MA Type", defval="EMA", options=["SMA", "EMA"], group="Custom MA Settings")
// Paramètres MA optimisés pour chaque timeframe
var int fastLength = 0
var int slowLength = 0
var string maType = ""
if usePreset
if timeframeChoice == "1H"
fastLength := 23
slowLength := 395
maType := "EMA"
else if timeframeChoice == "4H"
fastLength := 41
slowLength := 263
maType := "SMA"
else if timeframeChoice == "1D"
fastLength := 8
slowLength := 44
maType := "SMA"
else if timeframeChoice == "1W"
fastLength := 32
slowLength := 38
maType := "SMA"
else if timeframeChoice == "2W"
fastLength := 17
slowLength := 20
maType := "SMA"
else
fastLength := customFastLength
slowLength := customSlowLength
maType := customMAType
// Calcul des moyennes mobiles
fastMA = maType == "SMA" ? ta.sma(close, fastLength) : ta.ema(close, fastLength)
slowMA = maType == "SMA" ? ta.sma(close, slowLength) : ta.ema(close, slowLength)
// Conditions de trading simplifiées
longEntier = ta.crossover(fastMA, slowMA)
longExit = ta.crossunder(fastMA, slowMA)
shortEntier = ta.crossunder(fastMA, slowMA)
shortExit = ta.crossover(fastMA, slowMA)
// Définition des couleurs
var BULL_COLOR = color.new(#00ff9f, 20)
var BEAR_COLOR = color.new(#ff0062, 20)
var BULL_COLOR_LIGHT = color.new(#00ff9f, 90)
var BEAR_COLOR_LIGHT = color.new(#ff0062, 90)
// Couleurs des lignes MA
fastMAColor = fastMA > slowMA ? BULL_COLOR : BEAR_COLOR
slowMAColor = color.new(#FF6D00, 60)
// Gestion des positions
if tradeDirection == "Long Only"
if (longEntier)
strategy.entry("Long", strategy.long)
if (longExit)
strategy.close("Long")
else if tradeDirection == "Short Only"
if (shortEntier)
strategy.entry("Short", strategy.short)
if (shortExit)
strategy.close("Short")
else if tradeDirection == "Both Directions"
if (longEntier)
strategy.entry("Long", strategy.long)
if (longExit)
strategy.close("Long")
if (shortEntier)
strategy.entry("Short", strategy.short)
if (shortExit)
strategy.close("Short")
// Plots
var fastMAplot = plot(fastMA, "Fast MA", color=fastMAColor, linewidth=2)
var slowMAplot = plot(slowMA, "Slow MA", color=slowMAColor, linewidth=1)
fill(fastMAplot, slowMAplot, color=fastMA > slowMA ? BULL_COLOR_LIGHT : BEAR_COLOR_LIGHT)
// Barres colorées
barcolor(fastMA > slowMA ? color.new(BULL_COLOR, 90) : color.new(BEAR_COLOR, 90))