Además, el indicador Vortex se utiliza para ayudar a identificar la tendencia y generar señales comerciales. El indicador Vortex determina el impulso alcista o bajista comparando la diferencia entre el precio más alto y el cierre de ayer, y el precio más bajo y el cierre de ayer, durante un período de 1 día y 3 días.
Cuando se genera una señal de negociación, el módulo de gestión de dinero incorporado ayuda a gestionar los riesgos controlando el tamaño de la posición en función de los ratios de pérdida de ganancias predefinidos.
La estrategia integra dos cruces de EMA y el indicador Vortex para aprovechar ambos, mejorando así la precisión de la señal
El sistema de negociación automatizado elimina los errores humanos emocionales y minimiza los riesgos
Las funciones stop loss/take profit automáticas limitan la pérdida máxima para cada operación
El módulo de gestión monetaria controla la asignación de capital para cada operación, gestionando así los riesgos generales
Los cruces de la EMA pueden generar señales falsas y el indicador Vortex tampoco puede filtrar completamente las señales falsas.
Los eventos del cisne negro pueden llevar a pérdidas enormes en posiciones abiertas.
La estrategia se basa en las pérdidas de parada para controlar las reducciones.
Oportunidades de mejora:
Los parámetros EMA pueden optimizarse aún más para mejorar la calidad de la señal
Se pueden añadir más indicadores para mejorar las señales de filtro
Los algoritmos de aprendizaje automático pueden ayudar a optimizar automáticamente los parámetros
En general, esta es una estrategia típica de doble cruce de EMA para el comercio a mediano plazo. Identifica las oportunidades comerciales de los cruces de EMA. La mayor ventaja radica en el uso de indicadores como el vórtice para filtrar las señales, ejecutando la estrategia automatizada de manera confiable, además de las funciones de stop loss / take profit integradas para mitigar los riesgos.
/*backtest start: 2023-01-18 00:00:00 end: 2024-01-24 00:00:00 period: 1d basePeriod: 1h 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/ // © smottybugger //@version= 5 strategy("The Averages Moving_X_Vortex", shorttitle="2.5billion BTC lol" , calc_on_order_fills=true, calc_on_every_tick=true, commission_type=strategy.commission.percent, commission_value=0.02, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, margin_long=0, margin_short=0,overlay=true) // Dual Vortex period_1 = input(15, "short Time") period_2 = input(25, "long time") VMP = math.sum(math.abs(high - low[3]), period_1) VMM = math.sum(math.abs(low - high[1]), period_2) STR = math.sum(ta.atr(1), period_1) STR2 = math.sum(ta.atr(1), period_2) VXpower= (input(5,"Vortex Power")/10000)*close shorterV =(VMP / STR)*VXpower longerV = (VMM / STR2)*VXpower // MACross shortlen = input(20, "ShortMa") longlen = input(29, "LongMA") shorterMA = ta.sma(close, shortlen) longerMA = ta.sma(close, longlen) // Vortex "MACross Stabilized" Varance = input(1, "Vortex Stabilize") Vpercent = (Varance / 100) shortV= ((((shorterMA-close)* Vpercent)+shorterV)/2)+close longV = ((((longerMA -close )*Vpercent)+longerV)/2)+close //MAcross vortex stabilized Marance = input(1, "MACross Stabilize") MApercent = Marance / 100 shortMA = ((((shorterMA-close)*MApercent)+shorterV)/2)+close longMA = ((((longerMA-close)*MApercent)+longerV)/2)+close //VMXadveraged Moving cross adveraged VMXL=(longV+longMA)/2 VMXS=(shortV+shortMA)/2 VXcross= ta.cross(VMXS,VMXL) ? VMXS : na VMXcross= ta.cross(VMXS,VMXL) //plot plot(VMXS,"BUY",color=#42D420) plot(VMXL,"SELL",color=#e20420) crossV= ta.cross(shortV, longV) ? shortV : na plot(shortV ,"shortV", color=#42D420) plot(longV,"longV", color=#e20420) plot(crossV,"crossV", color=#2962FF, style=plot.style_cross, linewidth=4) crossMA = ta.cross(shortMA, longMA) ? shortMA : na plot(shortMA,"shortMA", color=#42D420) plot(longMA,"longMA", color=#e20420) plot(crossMA,"crossMA", color=#2962FF, style=plot.style_cross, linewidth=4) plot(VXcross,"VMXcross",color=#2962FF, style= plot.style_cross,linewidth=4) plot(close,color=#999999) // Vortex Condistyle is_Vlong =shortV< longV is_Vshort =shortV>longV // Vortex commands Vlong = ta.crossunder(longV, shortV) Vshort =ta.crossover(shortV,longV) VorteX = ta.cross(longV, shortV) // MACross Conditions is_MAlong = shortMA < longV is_MAshort = shortMA > shortV //VMX Conditions is_VMXlong=VMXS<VMXL is_VMXshort=VMXS>VMXL // MA commands MAlong = ta.crossunder(shortMA, longV) MAshort =ta.crossover(shortMA, shortV) MAcross = ta.cross(shortMA, longMA) //VMX COMMANss VMXBUY=ta.crossover( VMXS,VMXL) VMXSELL=ta.crossunder(VMXS,VMXL) // Close Crossing PositionLMXs CS=is_MAshort or is_VMXshort CL= is_MAlong or is_VMXlong OS=MAshort or VMXSELL OL=MAlong or VMXBUY if VMXcross strategy.close_all ("closed") //if CS and OL strategy.close("Short",comment="Short Closed") //if CL and OS strategy.close("Long",comment="Long Closed" ) //CA1= is_MAcross and is_VorteX //if CA1 // strategy.close_all(comment="X2X") // Defalongyntry qty if is_VMXlong and VMXSELL strategy.entry("sell",strategy.short) if is_VMXshort and VMXBUY strategy.entry("buy",strategy.long) // Stop Losses & Taking Profit sllp = input(0, "Stop Loss Long") sll = (1 - sllp / 100) * strategy.position_avg_price is_sll = input(true, "Stop Long") tplp = input(0, "Take Profit Long") tpl = (1 + tplp / 100) * strategy.position_avg_price is_tpl = input(true, "Take Long") slsp = input(0, "Stop Loss Short") sls = (1 + slsp / 100) * strategy.position_avg_price is_sls = input(true, "Stop Short") tpsp = input(0, "Take Profit Short") tps = (1 - tpsp / 100) * strategy.position_avg_price is_tps = input(true, "Take Short") if (is_sll or is_sls) strategy.close("Stop Losses", qty_percent=100) if (is_tpl or is_tps) strategy.close("Take Profits", qty_percent=100) //Strategy Backtest //plot(strategy.equity, "Equity", color=color.red, linewidth=2, style=plot.style_areabr)