Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Por supuesto que sí, todos son enteros, no un tipo separado.
Un pequeño consejo.
Por supuesto, es deseable no reescribir la estrategia para el probador. Una vez escrita, la estrategia debe funcionar en el probador y sin él (en el mundo real).
Esto puede hacerse con la ayuda de las bibliotecas.
1. Todas las funciones relacionadas con el comercio, cambiar sus nombres un poco (mi... - no es muy bueno, tal vez mejor _....).
2. Crear 2 bibliotecas. El primero contiene código de prueba (sin enviar realmente órdenes), el segundo sólo duplica los parámetros en las llamadas de las funciones estándar. El cambio de trabajo/prueba se realiza simplemente sustituyendo la biblioteca.
Por supuesto, podríamos ponerlo todo en una biblioteca e introducir un parámetro global para cambiar, pero probablemente sea innecesario.
Y sería maravilloso introducir en MT una función más, que, en mi opinión, simplificaría radicalmente la escritura de un probador de este tipo: la función de establecer la última barra actual.
Es decir, supongamos que tenemos 1000 barras en el historial sobre el que estamos probando.
Definamos la barra 200 como la última y utilicemos Close[200] en lugar de Close[0]. Esta característica debería funcionar en todas las funciones incorporadas.
El probador se verá entonces como un bucle en el número de barra en el que se establece este valor (la última barra de la prueba) y la llamada de la función de inicio en la estrategia.
De hecho, no es tan sencillo :))
Necesito algunos puntos más...
¿La frase "código para pruebas" es un código de probador o de EA? Sé más específico.
Eso también
Definimos 200 barras como la última, entonces en lugar de Close[0] usamos Close[200].
Y este fic debería funcionar (afectar) en todas las funciones inline.
Cualquier código de EA se convierte fácilmente en código para un indicador :
Tomamos el bloque start() del EA, añadimos una construcción for (testerconter=Bars;testerconter>=0;testerconter--)
{
cerrarlo con un corchete al final
}
Sustituya todos los lugares que utilizan referencias por [testerconter+referencia].
Este es un ejemplo del Asesor Experto MACD_sample.mq4 incorporado.
Código fuente:
Modificado
Como puede ver, no hay ningún problema. Si quieres, siempre puedes redefinir testerconter=0 si
el código se ejecuta en el cuerpo del Asesor Experto, no en el cuerpo del Asesor Experto .
En la primera biblioteca la función
emula la ejecución de la orden en el probador, es decir, la añade a la lista de órdenes en el probador y no envía la orden al servidor.
En la segunda biblioteca, esta función simplemente llama a la función incrustada
Tomamos el bloque start() del EA, añadimos una construcción for(testerconter=Bars;testerconter>=0;testerconter--)
{
cerrarlo con un corchete al final
}
Sustituir todos los lugares que utilizan referencias por [testerconter+referencia]
Eso es lo que quiero decir.
Sería más fácil llamar a la función que establece el valor de la variable testerconter en MT (0 por defecto) en lugar de sustituirla y esta sustitución ([testerconter+referencia]) se haría en la propia MT.
Entonces no tendríamos que hacer estas sustituciones en la propia estrategia.
Por favor, sustituya pre por. pre para citar en "es decir, digamos que tenemos 1000 barras en ...".
si no, la página vuelve a desaparecer.
sobre
Mi conclusión: parece que estamos hablando de lo mismo. Podemos olvidarnos de la solicitud de la última barra actual por ahora -
Tengo que intentar hacerlo así.
Por ahora sólo redefine las funciones comerciales estándar, el prefijo _. es aún más respetable :)
Sospecho que ha probado "con mucha sangre", es decir, que no ha redefinido las funciones comerciales. Y cada nueva prueba
Cada nueva prueba requiere que se escriba un nuevo indicador de prueba. Pero sólo hay que hacerlo una vez, y sin problemas.
Si me equivoco, publica las funciones, no seas tacaño.
Parece que no podemosllamar directamente a lafunción de inicio desde el Asesor Experto.
Por lo tanto, sería mejor escribir el código del Asesor Experto en una biblioteca y tener allí las funciones _init, _deinit y _start.
En el Asesor Experto, escribiremos
Sin embargo, no está claro cuáles son los parámetros.
Como se hace en Omega:
No es muy bonito, pero funcionará.
En general, un sistema de procesamiento de eventos casero funcionará :))
Procesa este código - inserta todo tipo de inclusión, matrices de trabajo para Balance , Equidad, etc,
cambia el nombre de las variables Lotes por el de _Lotes (y otros). En general, hace el trabajo duro.
Sólo tendré que archivar la salida y marcharme. :)
Método de transporte sencillo.
Sospecho que ha probado "con mucha sangre", es decir, que no ha redefinido las funciones comerciales. Y cada nueva prueba requería escribir un nuevo indicador de comprobación. Pero sólo hay que hacerlo una vez, y sin problemas. Si me equivoco, quiero que publiques las funciones, no seas tacaño.
Absolutamente correcto. "Gran sangre". No hubo sustituciones. He hecho tales probadores en MT3.x. MQL4 es tan diferente de MQL2 como el cielo lo es de la tierra. Sin embargo, no he aprovechado MQL4. Tengo un estupor psicológico. Debería haber pensado primero, y luego trabajar.
A la mujer se le aconsejó: "Piensa primero, habla después". La mujer respondió: "Cómo voy a pensar en lo que aún no he dicho".