La estrategia de ruptura de la media móvil dual es una tendencia típica después de la estrategia de negociación cuantitativa. Genera señales de negociación calculando promedios móviles simples de diferentes períodos y comprobando si el precio rompe a través de ellos para determinar posiciones.
La lógica central de la estrategia de doble OMA es:utilizar promedios móviles de diferentes períodos para capturar las tendencias de los precios y generar señales de negociación cuando el precio rompe los promedios móviles.
Específicamente, esta estrategia emplea promedios móviles simples de 20 días y 60 días. Estos dos promedios móviles se pueden ver como herramientas para capturar tendencias a corto y mediano plazo, respectivamente. Cuando el precio a corto plazo rompe el precio a mediano y largo plazo, indica que el mercado está en una tendencia al alza y, por lo tanto, debe ir largo. Cuando el precio a corto plazo cae por debajo del precio a mediano y largo plazo, indica que el mercado está en una tendencia a la baja y, por lo tanto, las posiciones deben reducirse.
El código utilizata.crossover
yta.crossunder
Para determinar si el precio ha roto o ha caído por debajo de una media móvil, se emiten señales comerciales de posición larga o reducción cuando ocurre una ruptura.
La estrategia de ruptura de la media móvil dual tiene las siguientes ventajas:
También hay algunos riesgos con la estrategia:
La estrategia puede reforzarse a partir de las siguientes dimensiones:
La estrategia de ruptura de la media móvil dual es una estrategia simple y práctica de seguimiento de tendencias. Puede capturar efectivamente las tendencias a medio y largo plazo evitando el ruido del mercado a corto plazo. Además, la lógica fácil de entender y los parámetros limitados lo hacen muy adecuado para el comercio cuantitativo. Por supuesto, hay margen para mejoras, como ajuste de parámetros, filtrado de señales y stop loss para hacerlo más estable y rentable.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Astorhsu //@version=5 strategy("Astor SMA20/60", overlay=true) backtest_year = input(2018, title='backtest_year') //回測開始年分 backtest_month = input.int(01, title='backtest_month', minval=1, maxval=12) //回測開始月份 backtest_day = input.int(01, title='backtest_day', minval=1, maxval=31) //回測開始日期 start_time = timestamp(backtest_year, backtest_month, backtest_day, 00, 00) //回測開始的時間函數 //Indicators sma10 = ta.sma(close,10) sma20 = ta.sma(close,20) sma60 = ta.sma(close,60) plot(sma20, color=color.green, title="sma(20)") plot(sma60, color=color.red, title="sma(60)") //進場條件 // trend1 = sma60 > sma20 //假設目前趨勢為60>20 longCondition = ta.crossover(close, ta.sma(close, 20)) if (longCondition) strategy.entry("open long20", strategy.long, qty=1, comment="站上m20做多") shortCondition = ta.crossunder(close, ta.sma(close, 20)) if (shortCondition) strategy.close("open long20",comment="跌破m20平倉", qty=1) longCondition1 = ta.crossover(close, ta.sma(close, 60)) if (longCondition1) strategy.entry("open long60", strategy.long, qty=1, comment="站上m60做多") shortCondition1 = ta.crossunder(close, ta.sma(close, 60)) if (shortCondition1) strategy.close("open long60",comment="跌破m60平倉", qty=1) // longCondition2 = ta.crossover(close, ta.sma(close, 10)) // if (longCondition2) // strategy.entry("open long10", strategy.long, qty=1, comment="站上m10做多") // shortCondition2 = ta.crossunder(close, ta.sma(close, 10)) // if (shortCondition2) // strategy.close("open long10",comment="跌破m10平倉", qty=1)