ダブルEMAゴールデンクロスロングライン戦略は,ロングポジションのみを開くトレンド追跡戦略である.この戦略は,短期EMA,中期EMA,長期EMAの3つの移動平均を使用する.特定のエントリールールは,価格が長期EMAよりも高く,短期EMAが中期EMAを超えて黄金クロスを形成するときにオープンロングである.
設定可能な3つのEMA期間を使用して,短期EMA,中期EMA,長期EMAを計算する.
価格が長期EMAを超えると,現在上昇傾向にあることを証明します.
短期EMAが中期EMAを下から上から横切って黄金十字を形成すると,上昇傾向が強くなっていることが示されます.
上記の2つの条件が同時に満たされたら 長い開口
この戦略の最大の利点は,短期的な市場の騒音に惑わされないように,複数の期間のEMAの組み合わせた判断を使用して,トレンドを効果的に特定できるということです.同時に,ストップ・ロスは,一定範囲内で損失を維持するためのリスク制御手段として構成されています.
この戦略の主なリスクは,ロングポジションである.市場が逆転すると,タイミングでポジションを閉めることができず,損失が増えるリスクが生じる.また,EMAの時期設定が正しくないことも,頻繁に取引し,取引コストを増やす可能性があります.
ポジションのサイズ管理を強化し,引き下げが一定の割合に達するとポジションを削減する.
ストップ・ロスの設定を新高を突破する時に 増やします
取引頻度を減らすために EMA の周期パラメータを最適化する.
この戦略は,全体として安定した高品質の長期保有戦略である.適切なリスク管理で傾向を特定する強力な能力を有する.さらなる最適化により,より安定した収益を得ることが期待される.
/*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)