定量取引の分野では,トレンドフォローする戦略は常に最も人気のある取引方法の1つである.この記事では,二重移動平均システムに基づくトレンドフォローする戦略を紹介し,最適化されたリスク・リターン比率を通じて取引効率を向上させる.
この戦略は,20日および200日指数関数移動平均値 (EMA) を主要指標として利用し,取引決定のための3:1のリスク・リターン比と組み合わせます.価格が20日EMAを突破し,20日EMAが200日EMAを突破すると購入信号が生成されます.各取引には固定ストップ・ロスト (-0.5%) とテイク・プロフィート (1.5%) レベルがあり,制御されたリスクを保証します.
基本的な論理にはいくつかの重要な要素が含まれます.
これは,明確な論理を持つ戦略を順守する良好な構造の傾向である. 固定リスク・報酬比率を持つ二重移動平均システムを組み合わせることで,戦略はリスク制御を維持しながら良い収益を達成する. 最適化のための領域があるものの,全体的には,さらなる研究と改善に値する取引システムである.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estrategia de Compra con Ratio 3:1", overlay=true) // Parámetros de la temporalidad diaria y las EMAs ema20 = ta.ema(close, 20) ema200 = ta.ema(close, 200) // Condiciones para la entrada en largo cierre_por_encima_ema20 = close > ema20 ema20_mayor_ema200 = ema20 > ema200 // Variable para registrar si ya se realizó una compra var bool compra_realizada = false // Condición para registrar una compra: primera vez que cierra por encima de EMA 20 con EMA 20 > EMA 200 if (cierre_por_encima_ema20 and ema20_mayor_ema200 and not compra_realizada) // Abrir una operación de compra strategy.entry("Compra", strategy.long) compra_realizada := true // Registrar que se realizó una compra // Definir los niveles de stop loss y take profit basados en el ratio 3:1 stop_loss = strategy.position_avg_price * 0.995 // -0.50% (rendimiento) take_profit = strategy.position_avg_price * 1.015 // +1.50% (3:1 ratio) // Establecer el stop loss y take profit strategy.exit("Take Profit / Stop Loss", from_entry="Compra", stop=stop_loss, limit=take_profit) // Condición para resetear la compra: cuando el precio cierra por debajo de la EMA de 20 if (close < ema20) compra_realizada := false // Permitir una nueva operación // Ploteo de las EMAs plot(ema20, title="EMA 20", color=color.blue, linewidth=2) plot(ema200, title="EMA 200", color=color.red, linewidth=2) // Colorear el fondo cuando el precio está por encima de ambas EMAs bgcolor(cierre_por_encima_ema20 and ema20_mayor_ema200 ? color.new(color.green, 80) : na)