
二重EMAの金交差長線戦略は,複数のポジションを開くだけのトレンド追跡戦略である.この戦略は,短期EMA,中期EMA,および長期EMAの3つの移動平均を同時に使用する.具体的には,入場ルールは,価格が長期EMAよりも高く,短期EMAは下から中期EMAを横断して金交差を構成するときに,ポジションを開くことです.
3つのEMAサイクルを使用して,それぞれ短期EMA,中期EMAおよび長期EMAを計算できます.
価格が長期EMAより高い場合は,現在多頭トレンド中であることを証明する.
短期EMAが下から中期EMAを横切って金十字を形成すると,多頭トレンドの強化がさらに確認されます.
上記の2つの条件が同時に満たされると,ポジションを開けます.
この戦略の最大の利点は,トレンドを効果的に識別し,多周期EMAと組み合わせて判断し,短期市場の騒音に惑わされないことです.同時に,リスク管理手段として,損失を一定範囲で制御できるリスク管理手段として,損失を配置します.
この戦略の主なリスクは,多頭ポジションである.市場が逆転するときに,タイミングでポジションを閉めることができず,損失の拡大のリスクがある.また,EMAS周期の設定が不適切であることも,取引の頻度や取引コストの増加につながる.
ポジション数管理を増やし,撤回が一定比率に達するとポジションを下げる.
突破的な新高ストップダメージ設定が追加されました.
EMASサイクルパラメータを最適化し,取引頻度を低下させる.
この戦略は,全体として安定した優良な長線保有戦略である.傾向を認識する能力が強く,リスクがコントロールされている.さらなる最適化により,よりよい安定した収益が得られる見込みである.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Strategia EMA Long con Opzioni di Uscita Avanzate e Periodi EMA Personalizzabili", overlay=true)
// Parametri di input generali
useVolatilityFilter = input.bool(true, title="Usa Filtro di Volatilità")
atrPeriods = input.int(14, title="Periodi ATR", minval=1)
atrMultiplier = input.float(1.5, title="Moltiplicatore ATR", step=0.1)
useTrailingStop = input.bool(true, title="Usa Trailing Stop")
trailingStopPercent = input.float(15.0, title="Percentuale Trailing Stop", minval=0.1, step=0.1) / 100.0
useEMAExit = input.bool(true, title="Usa Uscita EMA Corta incrocia EMA Media al Ribasso")
// Parametri di input per periodi EMA personalizzabili
emaLongTermPeriod = input.int(200, title="Periodo EMA Lungo Termine", minval=1)
emaShortTermPeriod = input.int(5, title="Periodo EMA Breve Termine", minval=1)
emaMidTermPeriod = input.int(10, title="Periodo EMA Medio Termine", minval=1)
// Calcolo delle EMA con periodi personalizzabili
longTermEMA = ta.ema(close, emaLongTermPeriod)
shortTermEMA = ta.ema(close, emaShortTermPeriod)
midTermEMA = ta.ema(close, emaMidTermPeriod)
// Calcolo ATR e soglia di volatilità
atr = ta.atr(atrPeriods)
atrThreshold = ta.sma(atr, atrPeriods) * atrMultiplier
// Condizione di entrata
enterLongCondition = close > longTermEMA and shortTermEMA > midTermEMA
enterLong = useVolatilityFilter ? (enterLongCondition and atr > atrThreshold) : enterLongCondition
if (enterLong)
strategy.entry("Enter Long", strategy.long)
// Tracking del prezzo di entrata e del massimo prezzo raggiunto per il trailing stop
var float entryPrice = na
var float maxPriceSinceEntry = na
if (strategy.position_size > 0)
maxPriceSinceEntry := math.max(na(maxPriceSinceEntry) ? high : maxPriceSinceEntry, high)
entryPrice := na(entryPrice) ? strategy.position_avg_price : entryPrice
else
maxPriceSinceEntry := na
entryPrice := na
// Calcolo del valore del trailing stop
trailStopPrice = maxPriceSinceEntry * (1 - trailingStopPercent)
// Implementazione delle condizioni di uscita
exitCrossUnder = close < longTermEMA
emaCross = ta.crossunder(shortTermEMA, midTermEMA)
if (useEMAExit and emaCross)
strategy.close("Enter Long", comment="EMA Cross Exit")
if (useTrailingStop)
strategy.exit("Trailing Stop", from_entry="Enter Long", stop=trailStopPrice)
// Visualizzazioni
plot(longTermEMA, color=color.yellow, title="EMA Lungo Termine")
plot(shortTermEMA, color=color.blue, title="EMA Breve Termine")
plot(midTermEMA, color=color.green, title="EMA Medio Termine")
plot(useVolatilityFilter ? atrThreshold : na, color=color.purple, title="ATR Threshold")
plot(strategy.position_size > 0 ? trailStopPrice : na, color=color.orange, title="Trailing Stop Value", style=plot.style_linebr)