Trading Sistemático

Multi Arbitraje 1.000: Tu Asesor Experto para MetaTrader 5
MetaTrader5
Multi Arbitraje 1.000: Tu Asesor Experto para MetaTrader 5

Compra un activo (abre posiciones de COMPRA) a un precio bajo y vende (abre posiciones de VENTA) a un precio más alto. En la versión 1.000, el Asesor Experto solo opera con un símbolo (puedes ajustar el parámetro "Símbolo" en los parámetros de entrada). Principio básico para abrir posiciones: Si las ganancias de todas las posiciones de COMPRA son menores que las ganancias de todas las posiciones de VENTA, podemos concluir que la tendencia actual es bajista, por lo que abrimos una posición de VENTA. Si las ganancias de todas las posiciones de VENTA son menores que las ganancias de todas las posiciones de COMPRA, podemos concluir que la tendencia actual es alcista, por lo que abrimos una posición de COMPRA.       if(profit_buys<profit_sells) // tendencia bajista          m_trade.Buy(m_symbol.LotsMin(),m_symbol.Name());       else if(profit_sells<profit_buys) // tendencia alcista       m_trade.Sell(m_symbol.LotsMin(),m_symbol.Name());       else if(profit_buys==0.0 && profit_sells==0.0)          m_trade.Buy(m_symbol.LotsMin(),m_symbol.Name()); Resultados de las pruebas en EURUSD, H4: Durante tendencias a largo plazo, la carga sobre el depósito aumenta considerablemente. Este problema aún no ha sido resuelto.

2017.11.03
SaveTicks: Optimiza tu MetaTrader 5 con este sistema de grabación de ticks
MetaTrader5
SaveTicks: Optimiza tu MetaTrader 5 con este sistema de grabación de ticks

Si eres trader y utilizas MetaTrader 5, seguro que te interesa contar con herramientas que faciliten tu análisis. SaveTicks es un programa diseñado específicamente para grabar cotizaciones en formato texto (CSV) y binario (BIN), permitiéndote llevar un control preciso de los ticks. Los archivos se almacenan en la carpeta MQL5\Files, y las cotizaciones se graban con una frecuencia constante para garantizar un análisis más cómodo en tus programas matemáticos. Parámetros de Entrada Intervalo de grabación - el intervalo de grabación de ticks, en milisegundos. Los símbolos elegidos como... - método para seleccionar los símbolos a grabar. Todos los símbolos - graba todos los símbolos proporcionados por el bróker. Símbolos de MarketWatch - graba todos los símbolos que aparecen en el Market Watch. Cargar lista de símbolos desde archivo - la lista de símbolos se carga desde un archivo. Nombre del archivo con todos los nombres de símbolos - el nombre del archivo que contiene la lista de símbolos, por ejemplo, InputSymbolList.txt. Formato de grabación - elige entre CSV o Binario. Formato de tiempo - configuración del tiempo. Puede ser el tiempo del servidor o el tiempo de tu computadora. A continuación, te mostramos un ejemplo de algoritmo utilizando la opción "Cargar lista de símbolos desde archivo": Ejecuta el Asesor Experto con cualquier parámetro y luego descárgalo. El archivo resultante \MQL5\Files\AllSymbols_SaveTicks.txt contendrá los nombres de todos los símbolos proporcionados por tu bróker. Cámbiale el nombre, por ejemplo, a InputSymbolList.txt. Edita InputSymbolList.txt dejando solo los símbolos necesarios. La primera línea debe mostrar el número de símbolos en el archivo. Consulta el ejemplo en la lista de descarga al principio de esta página. Ejecuta nuevamente el EA con la configuración necesaria, y grabará los ticks de los símbolos de la lista. Verifica la carpeta MQL5\Files\*****; debería contener archivos con nombres como EURUSD_SaveTicks.csv.

2017.11.03
Trailing Profit: Tu Asesor Experto para MetaTrader 5
MetaTrader5
Trailing Profit: Tu Asesor Experto para MetaTrader 5

Autor de la idea — Vitaly, autor del código MQL5 — barabashkakvn.Este Asesor Experto (AE) se encarga de gestionar todas las posiciones abiertas en tu terminal, sin importar los símbolos o números mágicos. Si el beneficio total aún no ha alcanzado el mínimo_beneficio, el AE se mantendrá a la espera.Una vez que el beneficio total alcance el mínimo_beneficio, el AE establecerá un porcentaje de caída de beneficios y activará el seguimiento.El parámetro porcentaje_de_beneficio se especifica en porcentaje. Por ejemplo, si mínimo_beneficio = 1000 y porcentaje_de_beneficio = 20. Si el beneficio total de todas las posiciones abiertas llega a 1000 y luego cae a 800 (1000 - 20%), se cerrarán las posiciones. Si el beneficio sigue creciendo, por ejemplo, hasta 2000, la caída permitida será de 400 (2000 - 20%). Así que, todas las posiciones se cerrarán con un beneficio total de 1600. No hay un límite de caída fijo, ya que considero que no es útil usar valores absolutos.Teóricamente, puedes establecer el porcentaje = 0, lo que funcionará como un Take Profit total. También puedes establecer el porcentaje = 100, lo que funcionará como un punto de equilibrio (recuerda que, al cerrar algunas órdenes, otras pueden resultar en pérdidas).¡Atención! Este Asesor Experto opera con un intervalo de 3 segundos:void OnTick()   { //--- permitir la ejecución cada tres segundos    static datetime prev_time=0;    datetime time_current=TimeCurrent();    if(time_current-prev_time<3)       return;    prev_time=time_current; //--- }

2017.08.10
ExpertClor_v01: Asistente de Cierre para MetaTrader 5
MetaTrader5
ExpertClor_v01: Asistente de Cierre para MetaTrader 5

Autor de la idea — John Smith, autor del código MQL5 — barabashkakvn.Hoy les presento un asistente, el Expert Advisor ExpertClor_v01. Su función principal es CERRAR posiciones:Este sistema mueve las posiciones a Breakeven, calcula el Stop Loss utilizando el indicador StopATR_auto, y cierra las posiciones cuando dos Medias Móviles (MAs) se cruzan.Para que el EA funcione correctamente, debes añadir el archivo compilado del indicador StopATR_auto a la carpeta MQL5\Indicators\Downloads://+------------------------------------------------------------------+ //| Función de inicialización del Expert                                   | //+------------------------------------------------------------------+ int OnInit()   { //--- ... //--- crear el manejador del indicador iCustom    handle_iCustom=iCustom(m_symbol.Name(),TimeFrame,"Downloads\\StopATR_auto",                           CountBarsForAverage,                           Target                           ); Aunque este Expert Advisor solo se encarga de cerrar posiciones, he incluido un pequeño código para abrir posiciones://+------------------------------------------------------------------+ //| Función de tick del Expert                                             | //+------------------------------------------------------------------+ void OnTick()   { //---    if(MQLInfoInteger(MQL_DEBUG) || MQLInfoInteger(MQL_PROFILER) ||       MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION))      {       static long counter=-50;       static bool trade_buy=true;       if(counter==0)          m_trade.Buy(m_symbol.LotsMin());       else if(counter%1500==0)         {          if(RefreshRates())            {             if(trade_buy)               {                OpenBuy(m_symbol.LotsMin());                trade_buy=false;               }             else               {                OpenSell(m_symbol.LotsMin());                trade_buy=true;               }            }          else             counter=counter-9;     }       counter++;    } //--- Esta unidad solo funciona cuando pruebas u optimizas este Expert Advisor. Se abre una posición de compra o venta cada 1,500 ticks.

2017.08.10
Sistema de Trading RSI, Estocástico y MA para MetaTrader 5
MetaTrader5
Sistema de Trading RSI, Estocástico y MA para MetaTrader 5

El autor de esta idea es Oksana Berenko, y el creador del código mq5 es barabashkakvn.Este sistema de trading utiliza tres indicadores: MA(150), RSI(3) con niveles 80 y 20, y Estocástico(6, 3, 3) con niveles 70 y 30. Puedes personalizar estos parámetros según tu estrategia.1. La dirección de entrada se determina según la MA (Media Móvil). Solo se abrirá una operación en una dirección.Si el precio Bid es mayor que la MA, considera la dirección de compra.Si el precio Ask es menor que la MA, considera la dirección de venta.2. La entrada a posición se realiza cuando se cumplen las condiciones del RSI y el Estocástico.Compra si el RSI y el Estocástico están por debajo del nivel inferior, es decir, RSI < 20 y Estocástico < 30.Vende si el RSI y el Estocástico están por encima del nivel superior, es decir, RSI > 80 y Estocástico > 70.3. La salida se basa en el Estocástico.Salir con puntos de ganancia.(Trailing Stop = 0) Si el Trailing Stop está en cero, cierra la posición al alcanzar el nivel opuesto del Estocástico, siempre que la operación tenga cierta ganancia en puntos.b) Cierra la compra si el Estocástico > 70 y el precio de apertura = Ask(Trailing Stop > 0) Si se ha especificado un valor para el Trailing Stop, al alcanzar el nivel opuesto del Estocástico, el Stop Loss de la posición se ajustará al abrir cada nueva vela, manteniendo la distancia especificada respecto al precio. Ten en cuenta que en este caso, la posición podría cerrarse con pérdidas, ya que el Stop Loss a veces no se mueve inmediatamente al nivel de equilibrio.Cierre con pérdidas en puntos.(allow Loss = 0) Si 'permitir Pérdidas' está configurado en 0, cierra la posición al alcanzar el nivel opuesto del Estocástico, si la operación tiene cierta pérdida en puntos.b) Cierra la compra si el Estocástico > 70 y el precio de apertura > Bid&nbsp;s) Cierra la venta si el Estocástico < 30 y el precio de apertura < Ask(allow Loss > 0) Si 'permitir Pérdidas' está especificado y hemos salido de la zona de entrada de posición según el Estocástico, mientras la operación tiene una pérdida especificada en puntos o más, la posición se cierra.b) Cierra la compra si el Estocástico > 30 y el precio de apertura - Bid >= permitir Pérdidas en puntosb) Cierra la venta si el Estocástico < 70 y Ask - precio de apertura >= permitir Pérdidas en puntosPruebas en EURUSD, H1:

2017.08.10
Nevalyashka_BreakdownLevel: Estrategia de Trading para MetaTrader 5
MetaTrader5
Nevalyashka_BreakdownLevel: Estrategia de Trading para MetaTrader 5

Autor de la idea — Vladimir Khlystov, autor del código MQL5 — barabashkakvn.La estrategia de trading se basa en la ruptura de un máximo/mínimo en el intervalo de tiempo seleccionado. Para recuperar posiciones perdedoras, el System Trading utiliza la estrategia "Nevalyashka" junto con una técnica de martingala para aumentar el lote.El System Trading calcula el precio máximo y mínimo en el intervalo de tiempo especificado desde "Hora inicio" hasta "Hora fin":Si el precio supera el máximo de este período, se abre una posición de COMPRA. Si el precio está por debajo del mínimo, se abre una posición de VENTA. El StopLoss se establece en el borde opuesto del período, es decir, en el precio mínimo para posiciones de COMPRA y en el precio máximo para posiciones de VENTA. El TakeProfit se establece en función de la altura del período de control.Si la opción "Usar cierre por tiempo" está activada, el parámetro "Hora cierre" (hora para cerrar todas las posiciones) estará activo.Solo se consideran horas y minutos para los parámetros "Hora inicio", "Hora fin" y "Hora cierre".El cierre por StopLoss se monitorea en OnTradeTransaction.Cuando se detecta "DEAL_ENTRY_OUT", se debe revisar el campo de comentario de este trato. Si el comentario contiene "sl", significa que el trato fue cerrado por StopLoss:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deal_symbol==m_symbol.Name() &amp;&amp; deal_magic==m_magic) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(deal_entry==DEAL_ENTRY_OUT) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MqlDateTime str1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TimeToStruct(TimeCurrent(),str1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- hay una posibilidad de que esto fuera un cierre en el TakeProfit &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit&gt;=0.0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TradeDey=str1.day; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- hay una posibilidad de que esto fuera un cierre en el StopLoss &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(StringFind(deal_comment,"sl",0)!=-1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(TradeDey!=str1.day) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Print("¡Se ha detectado un cierre por StopLoss!"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deal_type==DEAL_TYPE_SELL) // la posición de compra se cierra &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double SL=m_symbol.Bid()+loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double TP=m_symbol.Bid()-loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double Lot=LotCheck(deal_volume*InpK_martin); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Lot==0.0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenSell(SL,TP,Lot,"Nevalyashka"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(deal_type==DEAL_TYPE_BUY) // la posición de venta se cierra &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double SL=m_symbol.Ask()-loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double TP=m_symbol.Ask()+loss*m_symbol.Point(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double Lot=LotCheck(deal_volume*InpK_martin); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Lot==0.0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenBuy(SL,TP,Lot,"Nevalyashka"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }Abre una posición opuesta a la cerrada (si el tipo de trato es "DEAL_TYPE_SELL", entonces se cerró una posición de COMPRA; "DEAL_TYPE_BUY" significa que se cerró una posición de VENTA), con un lote incrementado multiplicado por K. martin. Si se cerró una posición con un beneficio positivo, el System Trading espera el inicio del siguiente período "Hora fin", y repite el procedimiento anterior.El parámetro "Sin pérdida" significa el breakeven; cuando se alcanza la mitad del beneficio de la posición, el StopLoss se mueve al precio de apertura de la posición.Ejemplo si se prueba en EUR/USD, M30:

2017.08.10
DoubleZigZag: Asesor Experto para MetaTrader 5
MetaTrader5
DoubleZigZag: Asesor Experto para MetaTrader 5

El autor de esta idea es Maksim, y el autor del código mq5 es barabashkakvn. Este Asesor Experto utiliza dos indicadores ZigZag para el análisis: un zigzag más pequeño con parámetros (13.5,3) y un zigzag más grande con parámetros multiplicados por ocho: (13*8,5*8,3*8). //--- crear el handle del indicador iCustom &nbsp;&nbsp; handle_iCustom=iCustom(Symbol(),Period(),"Examples\ZigZag",13,5,3); //--- si el handle no se crea &nbsp;&nbsp; if(handle_iCustom==INVALID_HANDLE) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- informar sobre el fallo y mostrar el código de error &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintFormat("No se pudo crear el handle del indicador iCustom para el símbolo %s/%s, código de error %d", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Symbol(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnumToString(Period()), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- el indicador se detiene anticipadamente &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(INIT_FAILED); &nbsp;&nbsp;&nbsp;&nbsp; } //--- crear el handle del indicador iCustom &nbsp;&nbsp; handle_iCustomX8=iCustom(Symbol(),Period(),"Examples\ZigZag",13*8,5*8,3*8); //--- si el handle no se crea &nbsp;&nbsp; if(handle_iCustomX8==INVALID_HANDLE) &nbsp;&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- informar sobre el fallo y mostrar el código de error &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintFormat("No se pudo crear el handle del indicador iCustomX8 para el símbolo %s/%s, código de error %d", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Symbol(), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EnumToString(Period()), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetLastError()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//--- el indicador se detiene anticipadamente &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(INIT_FAILED); &nbsp;&nbsp;&nbsp;&nbsp; } Para tomar una decisión de trading, se analizan las dos patas del último pico del ZigZag más grande (13*8,5*8,3*8), mientras se cuenta el número de picos del ZigZag más pequeño (13,5,3) que están contenidos en estas dos patas. Si se recibe una señal para abrir una posición de COMPRA, se cierran todas las posiciones de VENTA. Viceversa: si se recibe una señal para abrir una posición de VENTA, se cierran todas las posiciones de COMPRA. Parámetros del Asesor Experto: k es la relación del número de picos del zigzag más pequeño en las patas del zigzag más grande. k2 es la relación de la diferencia de precio en los picos del zigzag más grande. Ejemplo:&nbsp; El ZigZag más grande (13*8,5*8,3*8) se muestra en rojo, mientras que el zigzag más pequeño (13,5,3) es de color amarillo. Así, ABC son los picos del ZigZag más grande (13*8,5*8,3*8). Las patas AB y AC contienen nueve picos del ZigZag más pequeño (13,5,3). Resultados de las pruebas en EURUSD, M1:

2017.08.10
Descubre el Sistema Trading Exp_XROC2_VG_X2 para MetaTrader 5
MetaTrader5
Descubre el Sistema Trading Exp_XROC2_VG_X2 para MetaTrader 5

El sistema de trading Exp_XROC2_VG_X2 se basa en las señales generadas por dos indicadores XROC2_VG. El primer indicador determina la dirección de la tendencia lenta, analizando la posición de las líneas principal y de señal. Por otro lado, el segundo indicador se encarga de señalar el momento ideal para abrir una operación, cuando las líneas se cruzan o tocan. Se genera una señal de entrada al cierre de una barra si se cumplen las siguientes dos condiciones: Las señales de tendencia rápida y lenta coinciden. La tendencia rápida ha cambiado de dirección. Parámetros de entrada del EA: //+-------------------------------------------------+ //| Parámetros de entrada del indicador EA | //+-------------------------------------------------+ input string Trade="Gestión de operaciones";&nbsp;&nbsp;&nbsp;&nbsp;//+================ GESTIÓN DE OPERACIONES ================+&nbsp;&nbsp; input double MM=0.1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Porcentaje del depósito en una operación input MarginMode MMMode=LOT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Método de detección del valor del lote input uint&nbsp;&nbsp;&nbsp;&nbsp;StopLoss_=1000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Stop Loss en puntos input uint&nbsp;&nbsp;&nbsp;&nbsp;TakeProfit_=2000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Take Profit en puntos input string MustTrade="Permisos de operación";&nbsp;&nbsp;&nbsp;&nbsp;//+=============== PERMISOS DE OPERACIÓN ===============+&nbsp;&nbsp; input int&nbsp;&nbsp;&nbsp;&nbsp;Deviation_=10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Desviación máxima de precio en puntos input bool&nbsp;&nbsp; BuyPosOpen=true;&nbsp;&nbsp;&nbsp;&nbsp; //Permiso para abrir posiciones largas input bool&nbsp;&nbsp; SellPosOpen=true;&nbsp;&nbsp;&nbsp;&nbsp;//Permiso para abrir posiciones cortas //+-------------------------------------------------+ //| Parámetros de entrada del indicador de filtro&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+-------------------------------------------------+ input string Filter="PARÁMETROS DE TENDENCIA LENTA";&nbsp;&nbsp;&nbsp;&nbsp;//+============== PARÁMETROS DE TENDENCIA ==============+&nbsp;&nbsp; input ENUM_TIMEFRAMES TimeFrame=PERIOD_H6;&nbsp;&nbsp;//1 Periodo gráfico para la tendencia input uint ROCPeriod1=8; input Smooth_Method MA_Method1=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Método de promediado del primer indicador input uint Length1=5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Profundidad del primer suavizado&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input int Phase1=15;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Parámetro del primer suavizado, //---- para JJMA dentro del rango de -100 ... +100, influye en la calidad del proceso de transición; //---- para VIDIA es un periodo de CMO, para AMA es un periodo de media lenta input uint ROCPeriod2=14; input Smooth_Method MA_Method2=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Método de promediado del segundo indicador input uint Length2 = 5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Profundidad del segundo suavizado input int Phase2=15;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Parámetro del segundo suavizado, //---- para JJMA dentro del rango de -100 ... +100, influye en la calidad del proceso de transición; //---- para VIDIA es un periodo de CMO, para AMA es un periodo de media lenta input ENUM_TYPE ROCType=MOM; input uint SignalBar=1; //Índice de barra para recibir la señal de entrada input bool&nbsp;&nbsp; BuyPosClose=true;&nbsp;&nbsp;&nbsp;&nbsp; //Permiso para cerrar posiciones largas por tendencia input bool&nbsp;&nbsp; SellPosClose=true;&nbsp;&nbsp;&nbsp;&nbsp;//Permiso para cerrar posiciones cortas por tendencia //+-------------------------------------------------+ //| Parámetros de entrada del indicador de entrada &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+-------------------------------------------------+ input string Input="PARÁMETROS DE ENTRADA"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //+=============== PARÁMETROS DE ENTRADA ==============+&nbsp;&nbsp; input ENUM_TIMEFRAMES TimeFrame_=PERIOD_M30;&nbsp;&nbsp;//2 Periodo gráfico para entrada input uint ROCPeriod1_=8; input Smooth_Method MA_Method1_=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Método de promediado del primer indicador input uint Length1_=5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Profundidad del primer suavizado&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; input int Phase1_=15;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Parámetro del primer suavizado, //---- para JJMA dentro del rango de -100 ... +100, influye en la calidad del proceso de transición; //---- para VIDIA es un periodo de CMO, para AMA es un periodo de media lenta input uint ROCPeriod2_=14; input Smooth_Method MA_Method2_=MODE_JJMA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Método de promediado del segundo indicador input uint Length2_ = 5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Profundidad del segundo suavizado input int Phase2_=15;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Parámetro del segundo suavizado, //---- para JJMA dentro del rango de -100 ... +100, influye en la calidad del proceso de transición; //---- para VIDIA es un periodo de CMO, para AMA es un periodo de media lenta input ENUM_TYPE ROCType_=MOM; input uint SignalBar_=1;//Índice de barra para recibir una señal de entrada input bool&nbsp;&nbsp; BuyPosClose_=false;&nbsp;&nbsp;&nbsp;&nbsp; //Permiso para cerrar posiciones largas por señal input bool&nbsp;&nbsp; SellPosClose_=false;&nbsp;&nbsp;&nbsp;&nbsp;//Permiso para cerrar posiciones cortas por señal La variable de tipo string que contiene el texto en el código de los parámetros de entrada se utiliza únicamente para mejorar la visualización de la ventana de parámetros del EA. Los indicadores XROC2_VG_HTF en el EA están destinados solamente para una visualización más conveniente de las tendencias en el probador de estrategias; en otros modos de operación, están inactivos. Para asegurar el correcto funcionamiento del Asesor Experto compilado, debes agregar los archivos de indicadores compilados XROC2_VG.ex5 y XROC2_VG_HTF.ex5 a &lt;carpeta_de_datos_del_terminal&gt;\MQL5\Indicators. Ten en cuenta que la biblioteca TradeAlgorithms.mqh permite el uso de Asesores Expertos con brókers que ofrecen spread no cero y la opción de establecer Stop Loss y Take Profit durante la apertura de posiciones. Puedes descargar más variantes de la biblioteca en el siguiente enlace: Algoritmos de Trading. Se utilizaron los parámetros de entrada predeterminados del Asesor Experto durante las pruebas que se muestran a continuación. No se utilizaron Stop Loss y Take Profit durante la prueba. Fig. 1. Ejemplos de operaciones en el gráfico Resultados de la prueba para 2015 en AUDUSD, tendencia lenta en H6, entrada por tendencia rápida en M30: Fig. 2. Gráfico de resultados de la prueba

2017.08.10
Exp_XROC2_VG_Tm: Asesor Experto para MetaTrader 5
MetaTrader5
Exp_XROC2_VG_Tm: Asesor Experto para MetaTrader 5

El Asesor Experto Exp_XROC2_VG_Tm opera basado en señales generadas por el oscilador XROC2_VG. Además, ofrece la posibilidad de establecer un intervalo de tiempo de trading estricto. Una señal de trading se forma cuando una barra se cierra y el color del indicador ha cambiado (la línea principal del indicador ha cruzado la línea de señal). Es posible especificar el tiempo de trading en los parámetros de entrada para operar en el intervalo de tiempo deseado: input bool&nbsp;&nbsp; TimeTrade=true;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Permitir trading en el intervalo especificado input HOURS&nbsp;&nbsp;StartH=ENUM_HOUR_0;&nbsp;&nbsp;//Inicio del trading (horas) input MINUTS StartM=ENUM_MINUT_0; //Inicio del trading (minutos) input HOURS&nbsp;&nbsp;EndH=ENUM_HOUR_23;&nbsp;&nbsp; //Fin del trading (horas) input MINUTS EndM=ENUM_MINUT_59;&nbsp;&nbsp;//Fin del trading (minutos) Se proporcionan dos variables (horas y minutos) para el tiempo de inicio de la operación, y dos variables similares para el tiempo de finalización. Con la configuración por defecto, el Asesor Experto puede operar durante toda la sesión de trading desde las 0:00, mientras que todas las posiciones se cierran a las 23:59. Si el tiempo de inicio es posterior al tiempo de finalización especificado, el Asesor Experto cerrará las posiciones al día siguiente, a la hora indicada. Para un correcto funcionamiento del Asesor Experto, debes guardar el archivo compilado del indicador XROC2_VG.ex5 en &lt;carpeta_de_datos_del_terminal&gt;\MQL5\Indicators. Ten en cuenta que el archivo de biblioteca TradeAlgorithms.mqh permite usar Asesores Expertos con corredores que ofrecen spread no cero y la opción de establecer Stop Loss y Take Profit dentro de la apertura de posiciones. Puedes descargar más variantes de la biblioteca en el siguiente enlace: Algoritmos de Trading. Los parámetros de entrada por defecto del Asesor Experto se usaron durante las pruebas que se muestran a continuación. No se utilizaron Stop Loss ni Take Profit durante la prueba. Fig. 1. Ejemplos de operaciones en el gráfico Resultados de las pruebas de 2015 en XAUUSD H4: Fig. 2. Gráfico de resultados de pruebas

2017.08.10
Primero Anterior 24 25 26 27 28 29 30 31 32 33 34 Siguiente Último