Esta estrategia optimiza los parámetros del indicador MACD, se combina con el promedio móvil, la acción del precio y los tiempos de negociación específicos para lograr una estrategia de negociación de divisas de alta tasa de ganancia.
Si los precios de cierre de las últimas 3 líneas K son superiores a los precios de apertura, se juzgará como una tendencia al alza; si los precios de cierre de las últimas 3 líneas K son inferiores a los precios de apertura, se juzgará como una tendencia a la baja.
Calcule la línea rápida, la línea lenta y la diferencia MACD. El parámetro de la línea rápida es 12, el parámetro de la línea lenta es 26 y el parámetro de la línea de señal es 9.
El horario de negociación está establecido entre las 09:00 y las 9:15 cada día.
El take profit está establecido en 0.3 pips, y el stop loss está establecido en 100 pips.
Cierre todas las posiciones durante las 21:00-21:15.
Utilizando una combinación de indicadores de varios marcos de tiempo para juzgar de manera exhaustiva la dirección de la tendencia y mejorar la precisión de las decisiones.
Optimizar el tiempo de negociación para evitar períodos de alta volatilidad del mercado, reduciendo el riesgo innecesario de stop loss.
Establecer relaciones razonables para obtener ganancias y detener pérdidas para maximizar el bloqueo de ganancias y evitar la ampliación de pérdidas.
En general, la estrategia tiene una tasa de ganancia muy alta y es adecuada para operaciones frecuentes a corto plazo.
El tiempo de negociación es relativamente fijo, puede perder oportunidades comerciales si no puede entrar en el mercado a tiempo.
El indicador MACD es propenso a señales engañosas. Negocie con precaución si no se puede determinar una clara tendencia alcista o bajista.
Los parámetros deben ajustarse de acuerdo con los diferentes productos.
El riesgo general es pequeño, pero posiciones excesivamente grandes bajo alto apalancamiento pueden llevar a pérdidas enormes.
Combinar con otros indicadores para determinar la tendencia, evitando señales engañosas del MACD. Por ejemplo, combinar bandas de Bollinger, RSI, etc.
Optimizar los ratios de toma de ganancias/detención de pérdidas mediante el cálculo de parámetros óptimos a partir de los datos de backtest.
Ampliar las variedades de comercio aplicables a la estrategia, evaluar los efectos de ajuste de parámetros en diferentes productos.
Introducir algoritmos de aprendizaje automático para seleccionar los parámetros óptimos de forma dinámica en función de las diferentes condiciones del mercado.
En general, esta estrategia es muy adecuada para los operadores novatos. La lógica es clara, el espacio de optimización es grande y los riesgos son controlables. Al personalizar los tiempos de apertura y establecer ratios de pérdida de ganancias razonables, se pueden lograr altos rendimientos. Se pueden realizar optimizaciones adicionales para ajustar dinámicamente los parámetros y adaptarse a entornos de mercado más complejos.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h 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/ // © exlux99 //@version=4 strategy("Very high win rate strategy", overlay=true) // fast_length =12 slow_length= 26 src = close signal_length = 9 sma_source = false sma_signal = false // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal //ma len=10 srca = input(close, title="Source") out = hma(srca, len) fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2021, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true timeinrange(res, sess) => time(res, sess) != 0 // = input('0900-0915', type=input.session, title="My Defined Hours") myspecifictradingtimes = '0900-0915' exittime = '2100-2115' optionmacd=true entrytime = time(timeframe.period, myspecifictradingtimes) != 0 exit = time(timeframe.period, exittime) != 0 if(time_cond and optionmacd ) if(close > open and close[1] > open[1] and close[2] > open[2] and entrytime and crossover(hist,0)) strategy.entry("long",1) if(close< open and close[1] < open[1] and close[2] < open[2] and entrytime and crossunder(hist,0)) strategy.entry("short",0) tp = input(0.0003, title="tp") //tp = 0.0003 sl = input(1.0 , title="sl") //sl = 1.0 strategy.exit("closelong", "long" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closelong") strategy.exit("closeshort", "short" , profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick, alert_message = "closeshort")