Trading Sistemático

Burg Extrapolator: Asesor Experto para MetaTrader 5
MetaTrader5
Burg Extrapolator: Asesor Experto para MetaTrader 5

Autor de la idea: Vladimir, autor del código mq5: barabashkakvn. El Asesor Experto utiliza el método de Burg para la predicción lineal. Este enfoque se basa en encontrar valores futuros como funciones lineales de valores anteriores. Imaginemos que tenemos el rango de precios x[0]..x[n-1], donde los índices más altos corresponden a precios más recientes. La predicción del precio futuro x[n] se calcula de la siguiente manera: x[n] = -Sum(a[i]*x[n-i], i=1..p) En esta fórmula, a[i=1..p] son las razones del modelo, y p es el orden del modelo. El método de Burg encuentra las razones a[] minimizando el error cuadrático medio en las últimas n-p barras de entrenamiento. Parámetros de Entrada MaxRisk - riesgo máximo de todas las operaciones realizadas simultáneamente. ntmax - número máximo de operaciones en una misma dirección. MinProfit - beneficio mínimo previsto para abrir posiciones. MaxLoss - pérdida máxima prevista para cerrar posiciones. TakeProfit - valor de Take Profit. StopLoss - valor de Stop Loss. TrailingStop - función de Trailing Stop. PastBars - número de barras anteriores utilizadas para predecir valores futuros. ModelOrder - orden del modelo de Burg como una fracción del número de barras pasadas (0..1). UseMOM - habilita la detrendización de los datos de entrada: mom(i)=log[p(i)/p(i-1)]. UseROC - habilita la detrendización de los datos de entrada: roc=100*(p(i)/p(i-1)-1). Recuerda que solo uno de los parámetros UseMOM y UseROC puede ser verdadero, es decir, no está permitido que UseMOM=true Y UseROC=true al mismo tiempo. Como muchos Asesores Expertos optimizados, el Burg Extrapolator solo funciona bien con barras de entrenamiento. Sin una reoptimización constante, este Asesor Experto podría generar pérdidas de forma continua.

2017.11.03
Cómo utilizar el sistema de comercio opuesto en MetaTrader 5
MetaTrader5
Cómo utilizar el sistema de comercio opuesto en MetaTrader 5

Hoy vamos a hablar sobre una estrategia muy interesante: abrir una posición opuesta a la que cerramos, utilizando un sistema de trading. Esto funciona para cualquier símbolo y número mágico que utilices. Imagina que tienes una posición abierta de AUDUSD en compra (BUY) de 0.01. Una vez que cierras esta posición (ya sea manualmente o de alguna otra forma), el Sistema de Comercio Opuesto se encargará de abrir automáticamente una nueva posición en AUDUSD, pero esta vez será de venta (SELL). Todo el código necesario para implementar esta función se encuentra dentro de la función OnTradeTransaction: //+------------------------------------------------------------------+ //| Función TradeTransaction | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans,                         const MqlTradeRequest &request,                         const MqlTradeResult &result)   { //--- obtener el tipo de transacción como valor de enumeración    ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- si la transacción es resultado de la adición a la historia   if(type==TRADE_TRANSACTION_DEAL_ADD)      {       long     deal_type         =-1;       long     deal_entry        =-1;       double   deal_volume       =0.0;       string   deal_symbol       ="";       if(HistoryDealSelect(trans.deal))         {          deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);          deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);          deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);          deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);         }       else          return;       if(deal_entry==DEAL_ENTRY_OUT)         {          switch((int)deal_type)            {             case  DEAL_TYPE_BUY:                m_trade.Buy(deal_volume,deal_symbol);                break;             case  DEAL_TYPE_SELL:                m_trade.Sell(deal_volume,deal_symbol);                break;             default:                break;            }         }      }   } En este código, estamos esperando a que se cierre la operación (DEAL_ENTRY_OUT). Una vez que aparece este trato, revisamos el tipo de operación (si cerramos una compra, esta será una venta y viceversa) y automáticamente abrimos una nueva posición.

2017.11.03
up3x1 Investor: Asesor Experto para MetaTrader 5
MetaTrader5
up3x1 Investor: Asesor Experto para MetaTrader 5

Autor de la idea: PPP, Autor del código MQL5: barabashkakvn. El funcionamiento del Asesor Experto se centra en la reacción del mercado ante la publicación de indicadores económicos importantes en el mercado FOREX. Aquí analizamos los valores de High-Low y Open-Close de las velas. Los parámetros del Asesor Experto están configurados para operar con el par EUR/USD en gráficos de H1. Se recomienda un depósito inicial de al menos $1000. Puedes intentar aumentar tus ganancias incrementando el factor de riesgo, pero es mejor seguir las reglas de gestión de dinero y mantener la configuración recomendada. Parámetros de Entrada Parámetros de comercio Stop Loss (en pips) - Valor de Stop Loss. Take Profit (en pips) - Valor de Take Profit. Trailing Stop (en pips) - Valor del trailing. Trailing Step (en pips) - Valor del paso del trailing. Riesgo en porcentaje sobre un margen libre - Riesgo por operación como porcentaje del margen libre. Factor de disminución (basado en el historial de trading) - Este factor se utiliza en caso de tener operaciones perdedoras. Días de historial (solo si "Factor de disminución" > 0) - Número de días para analizar el historial de trading. Parámetros de diferencia Diferencia high#1 menos low#1 (en pips) - Valor mínimo de High menos Low de la vela. Diferencia open#1 menos close#1 (en pips) - Valor mínimo de Open menos Close de la vela. Ejemplo de prueba en EURUSD, H1:

2017.11.03
Último ZZ50: Estrategia de Trading para MetaTrader 5
MetaTrader5
Último ZZ50: Estrategia de Trading para MetaTrader 5

La estrategia que vamos a explorar se basa en el indicador ZigZag y en las órdenes pendientes. Esta idea de código surgió inicialmente en el foro en el tema Una estrategia basada en el indicador ZigZag - "Último ZZ50". El autor de esta brillante idea es Vitaly Muzichenko, mientras que el código MQL5 fue desarrollado por Vladimir Karputov. El principio general de la estrategia "Último ZZ50" es el siguiente: En el indicador ZigZag, siempre analizamos los últimos dos segmentos: AB y BC. El segmento AB aún no está fijado y puede cambiar (la posición del punto A puede variar). Las órdenes pendientes se colocan en el medio de los segmentos AB y BC de tal manera que: La activación de la orden pendiente en el segmento AB indica la continuación de la tendencia mostrada por el segmento BC. La activación de la orden pendiente en el segmento BC indica el cambio de tendencia mostrado por el segmento BC. Dado que el segmento AB no está fijado y puede cambiar, la orden pendiente se ajustará constantemente para mantener su precio en el medio de AB. Las posiciones abiertas se gestionan según la siguiente regla: esperamos hasta que la posición se mueva a la zona de ganancias (sin tener en cuenta comisiones y swaps) al menos (Trailing Stop + Trailing Step) puntos, y luego habilitamos la función de trailing para esta posición. Este Asesor Experto implementa el proceso de búsqueda de picos: el indicador se agrega al gráfico y se dibujan tres líneas verticales adicionales a través de los puntos A, B y C:

2017.11.03
OzFx: Un Asesor Experto para MetaTrader 5
MetaTrader5
OzFx: Un Asesor Experto para MetaTrader 5

Autor de la idea: Yuri, autor del código mq5: barabashkakvn. Descripción de la generación de señales de apertura de posiciones: Stoh_main_1 - valor del oscilador estocástico en la barra #1. InpStochasticLevel - entrada para el nivel estocástico. AC_1 - valor del oscilador acelerador en la barra #1. ACPrev_2 - valor del oscilador acelerador en la barra #2. Señal de COMPRA: se genera cuando el oscilador estocástico en la barra #1 es mayor que el nivel estocástico de entrada y el oscilador acelerador en la barra #1 es mayor que el oscilador acelerador en la barra #2. En este caso, el oscilador acelerador en la barra #1 debe estar por encima de cero, y el oscilador acelerador en la barra #2 debe estar por debajo de cero: if(Stoh_main_1>InpStochasticLevel && AC_1>ACPrev_2 && AC_1>0 && ACPrev_2<0 && count_buys==0) ... Señal de VENTA: se genera cuando el oscilador estocástico en la barra #1 es menor que el nivel estocástico de entrada y el oscilador acelerador en la barra #1 es menor que el oscilador acelerador en la barra #2. En este caso, el oscilador acelerador en la barra #1 debe estar por debajo de cero, y el oscilador acelerador en la barra #2 debe estar por encima de cero: if(Stoh_main_1<InpStochasticLevel && AC_1<ACPrev_2 && AC_1<0 && ACPrev_2>0 && count_sells==0) ... Ejemplo de una señal de VENTA: Cuando se recibe una señal, abrimos cinco posiciones con el mismo lote. La primera posición tiene un Stop Loss y un Take Profit iguales a cero. Todas las posiciones subsiguientes tienen un Stop Loss igual y un Take Profit creciente con un paso de la entrada Take Profit (en pips). Resultados de las pruebas en todos los símbolos en PERIOD_D1:

2017.11.03
Martin: Asesor Experto para MetaTrader 5 que Optimiza tus Estrategias
MetaTrader5
Martin: Asesor Experto para MetaTrader 5 que Optimiza tus Estrategias

Autor de la idea — Vladimir Khlystov, autor del código mq5 — barabashkakvn. Descripción del autor de la idea: Descripción Este Asesor Experto fue creado a petición de uno de los participantes del foro. Un comentario de vvx080: La idea es crear una cuadrícula de órdenes pendientes. Por ejemplo, primero establecemos dos órdenes, una de venta y otra de compra; una vez que se activa una de las órdenes, la otra debe ser eliminada. Si la operación es no rentable, después de 10 puntos abrimos una orden opuesta con el doble de lotes. Si tampoco es rentable, después de 20 puntos abrimos otra orden opuesta el doble de grande que la anterior. Si la operación sigue siendo negativa, después de 30 puntos abrimos una orden opuesta que sea el doble de la anterior, y así sucesivamente. Bajo estas condiciones, debería haber muchas coincidencias para que el depósito se pierda completamente. En caso de un movimiento positivo del mercado, utilizamos un buen trailing para poder capturar 300 puntos de beneficio. No se usan stop loss ni take profit para las órdenes, las operaciones se cierran con un beneficio común. Esta estrategia no teme a tendencias ni a mercados laterales. Durante una tendencia, el beneficio total se ajusta. A continuación, una estimación preliminar de lotes y depósitos: venta 0.1 -10p = -1, compra 0.2 -20p = -3 venta 0.4 -30p = -12 compra 0.8 -40p = -32 venta 1.6 -50p = -87 compra 3.2 -60p = -213 venta 6.4 -70p = -514 compra 12.8 -80p = -1194 venta 25.6 -90p = -2886 Creo que un depósito de 3000 debería ser suficiente, pero la estrategia difícilmente alcanzará la octava o novena orden. Puede que esté equivocado en algún punto, pero esa es la idea. El Asesor Experto será más preciso. El EA utiliza un incremento de lotes, pero no se puede considerar una martingala pura. Además, el EA logra salir de mercados laterales, algo que muchas martingalas no pueden hacer. Te invito a que agregues tus comentarios e ideas para mejorar la estrategia. Sin embargo, por favor, no publiques comentarios sobre "la martingala es mala" sin antes probar el EA al menos en una cuenta demo y sin entender su principio de funcionamiento. Parámetros del Asesor Experto InpStep - paso entre posiciones. InpProfitClose - beneficio mínimo, a partir del cual se cerrarán todas las posiciones. InpLot - volumen de la posición. Resultados de la prueba en EURUSD:

2017.11.03
Sistema de Trading ColorFisher_m11 para MetaTrader 5: ¡Optimiza tus Operaciones!
MetaTrader5
Sistema de Trading ColorFisher_m11 para MetaTrader 5: ¡Optimiza tus Operaciones!

Hoy quiero hablarte sobre un sistema de trading que ha estado ganando popularidad entre los traders: el ColorFisher_m11. Este sistema se basa en las señales generadas por el indicador ColorFisher_m11, y es bastante sencillo de utilizar. La señal para abrir una posición se genera al cierre de una vela cuando el color del histograma cambia a azul o rosa, lo que indica que el oscilador ha ingresado en la zona de sobrecompra o sobreventa. Por otro lado, la señal para cerrar la posición se forma cuando el color del histograma cambia a su opuesto. ¡Así de fácil! Para que este Asesor Experto funcione correctamente, necesitas tener el archivo del indicador ColorFisher_m11.ex5 compilado. Simplemente añádelo a la carpeta <terminal_data_folder>\MQL5\Indicators. Es importante mencionar que la biblioteca TradeAlgorithms.mqh permite utilizar Asesores Expertos con corredores que ofrecen spread no cero y la opción de establecer Stop Loss y Take Profit al abrir una posición. Puedes descargar más variantes de esta biblioteca en el siguiente enlace: Trade Algorithms. Los parámetros de entrada predeterminados del Asesor Experto se utilizaron durante las pruebas que se muestran a continuación. Cabe destacar que no se usaron Stop Loss ni Take Profit durante las pruebas. Fig. 1. Ejemplos de operaciones en el gráfico Resultados de las pruebas para 2015 en GBPUSD H4: Fig. 2. Gráfico de resultados de las pruebas

2017.11.03
iCCI iMA: Cómo Optimizar tus Estrategias en MetaTrader 5
MetaTrader5
iCCI iMA: Cómo Optimizar tus Estrategias en MetaTrader 5

Autor de la idea: Andrey, autor del código MQL5: barabashkakvn. Vamos a calcular la Media Móvil utilizando datos del Índice de Canal de Materias Primas (CCI): //--- crear el manejador del indicador iMA    handle_iMA=iMA(m_symbol.Name(),Period(),15,0,MODE_EMA,handle_iCCI); //--- si el manejador no se crea    if(handle_iMA==INVALID_HANDLE)      {       //--- informar sobre el fallo y mostrar el código de error       PrintFormat("Error al crear el manejador del indicador iMA para el símbolo %s/%s, código de error %d",                   m_symbol.Name(),                   EnumToString(Period()),                   GetLastError());       //--- el indicador se detiene prematuramente       return(INIT_FAILED);      } Esto es similar a lanzar el indicador de Media Móvil en la ventana del Índice de Canal de Materias Primas, seleccionando "Datos del Indicador Anterior" en sus parámetros (aplicar el indicador a los datos de otro indicador). Principios para abrir y cerrar posiciones: Si la Media Móvil calculada en base al Índice de Canal de Materias Primas cruza hacia abajo el CCI común, se abre una posición de COMPRA. Si la Media Móvil calculada en base al Índice de Canal de Materias Primas cruza hacia arriba el CCI común, se abre una posición de VENTA. Si la Media Móvil calculada en base al Índice de Canal de Materias Primas cruza hacia arriba el CCI común, se cierra una posición de COMPRA. Si la Media Móvil calculada en base al Índice de Canal de Materias Primas cruza hacia abajo el CCI común, se cierra una posición de VENTA. Pruebas realizadas en EURUSD, H1:

2017.11.03
Cómo Utilizar Stop Loss y Take Profit en MetaTrader 5 Efectivamente
MetaTrader5
Cómo Utilizar Stop Loss y Take Profit en MetaTrader 5 Efectivamente

Cuando una operación se cierra por Stop Loss, el volumen se duplica; si se cierra por Take Profit, se utiliza el volumen mínimo. Para determinar si una operación se realizó tras la activación de Stop Loss o Take Profit, se utiliza OnTradeTransaction. En la versión build 1625, se añadió una excelente enumeración llamada ENUM_DEAL_REASON: ENUM_DEAL_REASON Descripción del motivo ... ... DEAL_REASON_SL La operación se ejecutó como resultado de la activación del Stop Loss DEAL_REASON_TP La operación se ejecutó como resultado de la activación del Take Profit ... ... Esto se puede verificar en OnTradeTransaction. En otras palabras, es una manera muy sencilla y confiable de determinar si una operación resultó de un Take Profit o un Stop Loss. Actualmente (build 1626), este Asesor Experto solo se puede verificar en una prueba en vivo, ejecutándolo en un gráfico o en modo depuración con datos reales (F5 en el editor de MetaEditor). Utilicé el siguiente truco: En OnTradeTransaction, determinamos si fue el Take Profit o el Stop Loss el que se activó:       if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)          if(deal_entry==DEAL_ENTRY_OUT)            {             if(deal_reason==DEAL_REASON_SL)                ExtLot*=2.0;             else if(deal_reason==DEAL_REASON_TP)                ExtLot=m_symbol.LotsMin();            }

2017.11.03
Multi Arbitration 1.1xx: Tu Asesor Experto para MetaTrader 5
MetaTrader5
Multi Arbitration 1.1xx: Tu Asesor Experto para MetaTrader 5

Hoy quiero hablarte sobre la última versión de Multi Arbitration 1.000, que ha sido mejorada y ahora cuenta con la versión 1.1xx. Diferencias con la versión 1.000: El EA se ejecuta únicamente en el marco de tiempo PERIOD_M1 (puedes ver la explicación más abajo, en el parámetro Time frame). Ahora, el EA opera con dos símbolos al mismo tiempo. El segundo símbolo se toma del array estático ExtArrSymbols: string         ExtArrSymbols[20]=   {    "EURUSD","GBPUSD","USDCHF","USDJPY","USDCAD",    "AUDUSD","AUDNZD","AUDCAD","AUDCHF","AUDJPY",    "CHFJPY","EURGBP","EURAUD","EURCHF","EURJPY",    "EURNZD","EURCAD","GBPCHF","GBPJPY","CADCHF"   }; //+------------------------------------------------------------------+ //| Función de inicialización del Asesor Experto                                   | //+------------------------------------------------------------------+ int OnInit() El principio de apertura de posiciones ha cambiado: Ahora, una nueva posición de COMPRA solo puede abrirse cuando el precio actual está por debajo de la posición de COMPRA más baja. Una nueva posición de VENTA solo puede abrirse cuando el precio actual está por encima de la posición de VENTA más alta. El nuevo parámetro Time frame permite optimizar el EA en cualquier gráfico. El Asesor Experto funciona cuando aparece una nueva barra del símbolo principal (es decir, el símbolo del gráfico en el que está ejecutándose el EA): //+------------------------------------------------------------------+ //| Función de tick del Asesor Experto                                             | //+------------------------------------------------------------------+ void OnTick()   { //--- trabajamos solo en el momento de la aparición de una nueva barra    static datetime prevtime=0;    datetime time_0=iTime(0,m_symbol_one.Name(),InpTimeFrame);    if(time_0==prevtime)       return;    prevtime=time_0; Aquí la variable InpTimeFrame es nuestra entrada de Time frame. Dependiendo de la entrada de Time frame, ¡podemos habilitar al EA para que funcione en cualquier marco de tiempo! Resultados de pruebas en EURUSD:

2017.11.03
Primero Anterior 23 24 25 26 27 28 29 30 31 32 33 Siguiente Último