[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 573

 
//+------------------------------------------------------------------+
//|                                                       iTicks.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
extern int  delay_MSecond = 2000;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(delay_MSecond);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 

¿Cómo se realizan las consultas al comprobador de estrategias? Cómo, por ejemplo, ejecutar el siguiente comando: "Ejecutar una prueba en un EA en un marco de tiempo específico con un conjunto específico archivo y, cuando haya terminado, guardar el informe".

 
alsu:
Es difícil entender el código de otra persona a la vez... Si tuviera que adivinar, comprobaría los valores Imin,Imax,Jmin,Jmax en la función Neuron.Study(). En la época 0, el valor 32 se pasa como lR, que luego se utiliza en la indexación (normalmente indexamos arrays de 0 a tamaño-1). Es muy posible que ahí esté el error.

De hecho, el error estaba relacionado con estos cálculos. Gracias
 
alkador:

¿Cómo se gestionan las consultas al comprobador de estrategias? Cómo, por ejemplo, ejecutar el siguiente comando: "Ejecutar una prueba en un EA en un determinado intervalo con un determinado conjunto archivo y, al terminar, guardar el informe".

Configuración en la puesta en marcha

El terminal cliente puede iniciarse con una configuración predefinida. Para ello, el nombre del archivo de configuración se pasa al terminal cliente como parámetro.

Por ejemplo:

  terminal.exe config\start.ini terminal.exe test1.txt terminal.exe "C:\NArchivos de Programa\NMetaTrader 4\Nconfig\settings25.ini"

Si no se especifica la ruta completa del archivo (Drive:\SubDirectory\FileName), el archivo se buscará en el directorio del terminal del cliente. El archivo de configuración tiene las siguientes líneas:
[Parámetro] = [Valor].

Los comentarios comienzan con un punto y coma (;) y no se evalúan.

Los parámetros del archivo de configuración pueden dividirse en varios grupos: ajustes generales, ajustes del servidor proxy(pestaña "Servidor" en la tabla de ajustes del terminal), ajustes del FTP(pestaña "Publicar" en la tabla de ajustes del terminal), ajustes del Asesor Experto(pestaña "Asesores Expertos" en la tabla de ajustes del terminal), ajustes de un inicio único de un Asesor Experto o de un script, ajustes del lanzamiento de un probador de estrategias.

Ajustes comunes

  • Perfil - nombre del subdirectorio en el directorio de perfiles. Los gráficos se abrirán en el terminal del cliente según el perfil especificado. Si no se especifica esta opción, se abrirá el perfil actual.

  • MarketWatch - nombre del archivo (directorio \symbolsets) que contiene la lista de símbolos que se mostrarán en la ventana de vigilancia del mercado. Dicho archivo puede recibirse mediante el comando del menú contextual de la ventana "Market Watch - Symbolsets - Save As".

  • Login - número de la cuenta a la que conectarse al inicio. Si falta este parámetro, se utilizará el inicio de sesión actual.

  • Contraseña - contraseña para el inicio de sesión. Este parámetro será ignorado si el terminal cliente almacena datos personales en el disco y el número de cuenta a conectar está en la lista.

  • Servidor - nombre de un servidor comercial al que se debe realizar la conexión. El nombre del servidor coincide con el nombre del archivo srv correspondiente almacenado en el directorio config. Este parámetro será ignorado si la información de la cuenta a conectar está guardada en el disco.

  • AutoConfiguración - "true" o "false" dependiendo de si la auto-configuración debe ser activada. Si falta este parámetro, se utilizará el valor de la configuración actual del servidor.

  • DataServer - dirección del centro de datos. Si la autoconfiguración del servidor está activada, esta entrada puede ser ignorada. Si falta este parámetro, se utilizará el valor de la configuración actual del servidor.

  • EnableDDE - "true" o "false" dependiendo de si el servidor DDE debe ser habilitado. Si este parámetro está ausente, se utilizará el valor de la configuración actual del servidor.

  • EnableNews - "true" o "false" dependiendo de si se debe permitir la recepción de noticias o no. Si este parámetro no está presente, se utilizará el valor de la configuración actual del servidor.

Ejemplo:

  ; configuración común Profile=test 3 MarketWatch=set2.set Login=12345 Password=xxxxxx Server=MetaQuotes-demo AutoConfiguration=false DataServer=192.168.0.1:443 EnableDDE=true EnableNews=false

Configuración del proxy

  • ProxyEnable - "true" o "false" dependiendo de si se debe utilizar el servidor proxy para conectar con el servidor de comercio.

  • ProxyServer - dirección del servidor proxy.

  • ProxyType - tipo de servidor proxy. Puede ser "HTTP", "SOCKS4" o "SOCKS5".

  • ProxyLogin - inicio de sesión del servidor proxy.

  • ProxyPassword - contraseña para acceder al servidor proxy.

Si falta alguno de estos parámetros, se utiliza la configuración actual del terminal cliente (configuración del proxy en la pestaña "Servidor" de la tabla de configuración del terminal cliente).

Ejemplo:

  ; configuración del proxy ProxyEnable=true ProxyServer=proxy.company.com:3128 ProxyType=HTTP ProxyLogin=user45 ProxyPassword=xxx

Configuración del FTP

  • FTPEnable - activa/desactiva la publicación. Los valores aceptables son "verdadero" o "falso".

  • FTPPassiveMode - activar/desactivar el modo pasivo. Valores aceptables "verdadero" o "falso".

  • FTPAccount - número de cuenta cuyos datos de estado deben enviarse al FTP.

  • FTPServer - dirección del servidor FTP.

  • FTPLogin - inicio de sesión para la autorización en el servidor FTP.

  • FTPPassword - contraseña de acceso al servidor FTP.

  • FTPPath - nombre del directorio en el servidor FTP donde se coloca el informe.

  • FTPPeriod - periodicidad de envío del informe al servidor FTP en minutos.

Si falta alguno de los parámetros enumerados, se utiliza la configuración actual del terminal cliente(pestaña "Publicación" en la tabla de configuración del terminal).

Ejemplo:

  ; ftp settings FTPEnable=true FTPPassiveMode=false FTPAccount=12345 FTPServer=ftp.company.com FTPLogin=admin FTPPassword=pAssWOrd123 FTPPath=/inetpub FTPPeriod=10

Ajustes de los expertos

  • ExpertosHabilitar - activar/desactivar expertos.

  • ExpertsDllImport - activar/desactivar la importación de DLL.

  • ExpertsDllConfirm - activar/desactivar la confirmación manual de las llamadas a funciones DLL.

  • ExpertsExpImport - permitir/prohibir la importación de funciones de Asesores Expertos externos o bibliotecas MQL4.

  • ExpertsTrades - activar/desactivar el comercio de EA.

  • ExpertsTradesConfirm - activar/desactivar la confirmación manual de las operaciones de trading por parte del Asesor Experto.

Nota: todos los parámetros de un grupo de Asesores Expertos sólo pueden tomar valores "verdadero" o "falso".

Si falta alguno de los parámetros mencionados anteriormente, se utiliza la configuración actual del terminal del cliente(pestaña "Asesores expertos" en la tabla de configuración del terminal).

Ejemplo:

  ; Configuración de expertos ExpertsEnable=true ExpertsDllImport=true ExpertsExpImport=true ExpertsTrades=true ExpertsTradesConfirm=false

Configuración del Asesor Experto único y/o del script

  • Símbolo - nombre del símbolo cuyo gráfico debe abrirse justo después del inicio del terminal. Después de cerrar el terminal del cliente, la información sobre este gráfico adicional no se guarda. Si el terminal se reinicia sin un archivo de configuración, este gráfico no se abrirá. Si este parámetro está ausente, no se abre ningún gráfico adicional.

  • Período - período del gráfico (M1, M5, M15, M30, H1, H4, D1, W1, MN). Si este parámetro está ausente, se utiliza H1.

  • Plantilla - nombre del archivo de plantilla (directorio \templates) que se aplicará al gráfico.

  • Experto - nombre del Asesor Experto que se lanzará después del inicio del terminal del cliente. El Asesor Experto se inicia en el gráfico que se abre según los parámetros de Símbolo y Período. Si falta el parámetro Símbolo, no se abre ningún gráfico adicional, y el EA se inicia en el primer gráfico del perfil actual. Si no hay gráficos en el perfil actual, el Asesor Experto no se iniciará. Si este parámetro no está disponible, no se iniciará ningún experto.

  • ExpertParameters - nombre del archivo que contiene los parámetros de EA (directorio \experts\presets). Este archivo se puede crear en la ventana de propiedades del Asesor Experto pulsando el botón "Parámetros de entrada - Guardar". Suele utilizarse para almacenar parámetros diferentes a los predeterminados. Si este parámetro está ausente, se utilizan los parámetros por defecto.

  • Script - nombre del script que se lanzará tras el inicio del terminal cliente. El script se lanza con las mismas reglas que el Asesor Experto (descrito anteriormente).

  • ScriptParameters - nombre del archivo que contiene los parámetros de la secuencia de comandos (directorio \experts\presets). Este archivo se genera de la misma manera que para el Asesor Experto.

Ejemplo:

  ; abra el gráfico y ejecute el experto y/o el script Symbol=EURUSD Period=H4 Template=popular.tpl Expert=MACD Sample ExpertParameters=macd.set Script=period_converter ScriptParameters=

Configuración de lanzamiento del Probador de Estrategias

  • TestExpert - nombre del Asesor Experto que se lanzará para la prueba. Si falta este parámetro, no se realiza ninguna prueba.

  • TestExpertParameters - nombre del archivo que contiene los parámetros (directorio \tester). Este archivo puede crearse en la ventana de propiedades del Asesor Experto, pulsando el botón "Parámetros de entrada - Guardar". Suele utilizarse para almacenar parámetros diferentes a los predeterminados. Otros parámetros del EA que se está probando desde las pestañas "Pruebas" y "Optimización" (y desde la pestaña "Parámetros de entrada" en caso de que este parámetro esté ausente) se rellenan con los valores guardados automáticamente en el archivo \tester\[nombre del experto].ini después de la última prueba.

  • TestSymbol - nombre del instrumento, sobre cuyos datos se va a realizar la prueba del Asesor Experto. Si este parámetro no está disponible, se utiliza el último valor utilizado en el comprobador.

  • TestPeriod - período del gráfico (M1, M5, M15, M30, H1, H4, D1, W1, MN). H1 se utiliza si este parámetro está ausente.

  • TestModel - 0, 1 o 2 dependiendo del modelo de prueba (All ticks, Benchmarks, Open prices). Si este parámetro no está disponible, se utiliza el valor 0 (Todos los ticks).

  • TestOptimization - activar/desactivar la optimización. Los valores aceptables son "verdadero" o "falso". Si este parámetro no está disponible, se utiliza el valor "false".

  • TestDateEnable - activar/desactivar la opción "Usar fechas". Los valores aceptables son "verdadero" o "falso". Si esta opción no está disponible, se utiliza "false".

  • TestFromDate - fecha de inicio del rango de pruebas como YYYY.MM.DD. Si este parámetro está ausente, se utiliza "1970.01.01".

  • TestToDate - fecha de finalización del rango de pruebas en la forma YYYY.MM.DD. Si este parámetro está ausente, será 1970.01.01.

  • TestReport - nombre del archivo del informe de prueba. El archivo se creará en el directorio del terminal del cliente. Se puede especificar la ruta relativa, por ejemplo: tester\\NMedia móvilInforme". Si no se especifica ninguna extensión en el nombre del archivo del informe, se utilizará la extensión ".htm". Si no se especifica este parámetro, no se generará el informe de la prueba.

  • TestReplaceReport - permite/no permite la escritura repetida del archivo de informe. Los valores aceptables son "verdadero" o "falso". Si se establece "false" y el archivo de informe con este nombre ya existe, al nombre del archivo de informe se le añadirá un número de secuencia entre corchetes. Por ejemplo, "MovingAverageReport[1].htm". Si este parámetro está ausente, se utilizará "false".

  • TestShutdownTerminal - activar/desactivar el cierre del terminal después de la prueba. Los valores aceptables son "verdadero" o "falso". Si este parámetro está ausente, se utiliza el valor "false". Si el usuario pulsó el botón "Stop" durante la prueba, el valor de este parámetro se restablece a "false" porque el usuario tomó el control.

Ejemplo:

  ; iniciar probador de estrategias TestExpert=Moving Average TestExpertParameters=ma0.set TestSymbol=EURUSD TestPeriod=H1 TestModel=2 TestOptimization=false TestDateEnable=true TestFromDate=1970.01.01 TestToDate=2006.06.06 TestReport=MovingAverageReport TestReplaceReport=false TestShutdownTerminal=true

 
AndEv:
Si alguien sabe, tengo una pregunta: necesito un script en bucle que "pulse" el botón "Refrescar" una vez cada 0,5 segundos en el gráfico actual y reinicie los indicadores. "He intentado hacer un script en bucle utilizando WindowRedraw(). He intentado hacer un script en bucle utilizando WindowRedraw() y Sleep(500), pero los indicadores no se reinician.
Esta biblioteca contiene varias funciones para el control de MT4. Incluye funciones de actualización del gráfico para Asesores Expertos e indicadores. Incluso hay funciones independientes. He ejecutado el script una vez y ya está. Se descarga y los gráficos siguen actualizándose hasta que se descarga MT4.
 

Adaptado de

Armen63 18.02.2012 14:47 |

Hola a todos ayuda por favor no sé cómo ponerlo en práctica ... ¿alguien puede aconsejar? xocu chtobi v sovetnike obshee chislo sell ili buy ordersov kontrolirovalos int Total1 = OrdersTotal();

if (Total1 <= MaxOrders || MaxOrders == 0) tak ya kontroliruyu v all tipi orders a nado po otdelnosti i dlya sell i dlya buy

 

a Armen63

int CountBuys() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_BUY) l_count_4++;
   }
   return (l_count_4);
}

int CountSells() 
{
   int l_count_4 = 0;
   int l_ord_total_12 = OrdersTotal();
   for (int l_pos_8 = 0; l_pos_8 < l_ord_total_12; l_pos_8++) {
      OrderSelect(l_pos_8, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != Magic) continue;
      if (OrderType() == OP_SELL) l_count_4++;
   }
   return (l_count_4);
}
 

¡Hola, queridos usuarios del foro!

Acabo de empezar a aprender mql4 y decidí escribir mi propio EA.

¿Sabes cómo escribir la siguiente condición en el código: si los tres últimos precios de compra son más altos que el anterior (ask3>ask2>ask1), entonces coloca una orden de compra

Espero haber expuesto la idea con claridad), si algo es incorrecto, por favor, pregunte, voy a especificar)

Estaré muy agradecido por su ayuda ))

 
así.
datetime ask=TimeCurrent();
   double ask1=0,ask2=0,ask3=0;
   ask1=Ask;
   if(ask!=TimeCurrent()){ask2=Ask;ask=TimeCurrent()}
   if(ask!=TimeCurrent()){ask3=Ask;}
   
Tal vez me equivoque. Sólo estoy aprendiendo.
 
openlive:
por ejemplo, tal vez me equivoque, sólo estoy aprendiendo


Si asumimos que el EA maneja cada tic, entonces debemos hacer las cosas un poco diferentes.

int start(){
   static double ask1=1, ask2=-1, ask3=-1;
   ask3=ask2;
   ask2=ask1;
   ask1=Ask;

   if (ask3>0) {
      if (ask1>ask2) {
         if (ask2>ask3) {
             //условие выполнено для бай
         }
      }
      if (ask1<ask2) {
         if (ask2<ask3) {
             //условие выполнено для селл
         }
      }
   }
}
Razón de la queja: