Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1800
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
¿Qué es el DecreaseFactor en el asesor estándar de MT en mashcats?
Es extraño, los botones están ahí ahora. Y el desorden del código, porque es un borrador. En fin, ya he hecho una versión que funciona, lo último que queda es borrar los botones, aquí de nuevo empezó esta mierda: la función de borrar no encuentra ninguno de los 4 objetos.
Al hacer clic en el botón se crean todas las líneas:
Si se pulsa el botón - borrar:
Menuda chorrada se ha escrito, siento decirlo.
Y no es necesario ver los eventos. No funcionan en absoluto en el probador. Hay que vigilar el estado.
UPD. No es modesto, por supuesto, pero si hubieras escuchado mis consejos por una vez, lo habrías hecho todo hace tiempo. De forma adecuada y sin las muletas de un multipiso.
Pero cada uno elige el abismo en el que quiere sumergirse.
Para usar la depuración en el probador, aprende a escribir en MQL5. Todo funciona allí.
No hay cambio de nombre de los objetos. Piense en ello como la sustitución de un objeto existente por uno nuevo.
Esto no puede ser. Tu código parece un lío de cosas. Probablemente por eso experimentas retrasos con los botones. Como te dije antes, empieza con algo sencillo. No complique demasiado las cosas. Y complicarlo poco a poco cuando lo sencillo empiece a funcionar y tengas confianza en ello.
¿Y cómo puedo ver los estados si se activan por evento (por clic)? Sí, pero estoy escribiendo en mql4, es lo mismo que decir "aprende a escribir en c# donde la depuración funciona".
"Correcta y sin muletas de varios pisos. "Así que esconder objetos es sólo una muleta.
Todo lo que he hecho, todo funciona https://gist.github.com/satorkain/0cf7a8df8ec1f4b3191defd04c94a418
Al hacer clic en el botón de todas las líneas se crean a la vez, a continuación, se ocultan y sólo uno se deja en función de la ubicación del panel de botones. Otras líneas se ocultan/mostran dependiendo de la ubicación del cursor en relación con el precio.
P.D.
Si no fuera por mql4 torcido no habría tenido que salir con esta tontería de ocultar objetos, todo debería haber funcionado a la primera con el borrado/renombrado de objetos.
¿Y cómo puedo ver los estados si se activan por evento (por clic)? Si pero yo escribo en mql4, es lo mismo que decir "aprende a escribir en c# donde la depuración funciona".
"Correcta y sin muletas de varios pisos. " Así que esconder objetos es sólo una muleta.
Todo lo que he hecho, todo funciona https://gist.github.com/satorkain/0cf7a8df8ec1f4b3191defd04c94a418
Al hacer clic en el botón de todas las líneas se crean a la vez, a continuación, se ocultan y sólo uno se deja en función de la ubicación del panel de botones. Otras líneas se ocultan/mostran dependiendo de la ubicación del cursor en relación con el precio.
P.D.
Si no fuera por el mql4 torcido, no habría tenido que salir con esta tontería de ocultar objetos, todo debería haber funcionado a la primera con el borrado/renombrado de objetos también.
Ocultar un objeto es sólo el método recomendado por el desarrollador. Y hay una propiedad especial para ello. Para ver el estado, hay que mirar la propiedad "State" del botón.
Lo que está torcido aquí es tu lógica y la sustitución de nociones - tomas los medios recomendados por el desarrollador como una muleta, y tomas la constante creación/borrado de objetos como código puro, pero eso es exactamente lo que es una muleta, saltarse el método rápido recomendado.
Por cierto, para poner rápidamente un objeto encima de todos los demás, tienes que hacerlo invisible, e inmediatamente visible - esto anulará su posición en la lista de objetos, y estará en la parte superior.
ZS. E incluso allí, en el git, publicaste el código con un C-menos. Totalmente propenso a errores. Una sola línea no se crea y todo se derrumba. Eso fue inmediatamente evidente. Creas líneas en el manejador de eventos - ¿para qué? ¿Para qué necesitas OnInit()? Lo has creado, has comprobado su éxito, has puesto una bandera y lo has ocultado. En OnDeinit() ha borrado los objetos creados por su programa. Para ello, también es necesario el prefijo del nombre.
Sólo se muestra y oculta en el manejador de eventos - no debería haber ninguna construcción. En su caso, exactamente.
Me daría vergüenza publicar algo así en el dominio público en git. Pero eso es para mí.
¿Y tú? ¿Está bien que la gente se aproveche de ello?
Ocultar un objeto es exactamente el método recomendado por el desarrollador. Y hay una propiedad especial para ello. Para ver el estado, hay que mirar la propiedad "State" del botón.
Lo que está torcido aquí es tu lógica y la sustitución de nociones - tomas los medios recomendados por el desarrollador como una muleta, y tomas la constante creación/eliminación voraz de objetos como código puro, pero eso es exactamente lo que es una muleta para eludir el método rápido recomendado.
Por cierto, para poner rápidamente un objeto por encima de todos los demás, tienes que hacerlo invisible, e inmediatamente visible - esto redefinirá su posición en la lista de objetos, y estará en la parte superior.
ZS. E incluso allí, en el git, publicaste el código con un C-menos. Totalmente propenso a errores. Una vez que no se crea una línea, todo se derrumba. Eso fue inmediatamente evidente. Creas líneas en el manejador de eventos - ¿para qué? ¿Para qué necesitas OnInit()? Lo has creado, has comprobado su éxito, has puesto una bandera y lo has ocultado. En OnDeinit() ha borrado los objetos creados por su programa. Para ello también es necesario el prefijo del nombre.
Sólo se muestra y oculta en el manejador de eventos - no debería haber ninguna construcción. En su caso, exactamente.
Me daría vergüenza publicar algo así en el dominio público en git. Pero eso es para mí.
¿Y tú? ¿Está bien que la gente se aproveche de ello?
¿Queremos crear una línea de 4 según sea necesario? :) ¿Y si hay 200 líneas? ¿Será económico crearlos todos a la vez según su lógica? Y la forma en que fue concebida por los desarrolladores sólo la conocen ellos, y concebida de forma muy poco intuitiva. Como si no hiciera falta nada increíble o ilógico. ¿Cómo podía saber que debía trabajar con los objetos sólo de esta manera y no de otra? ¿Tal vez de un libro de texto sobre mql4? Dudo que este punto se explique allí.
Al menos, funciona como estaba previsto :) Está entre paréntesis en el título (público), así que aún no está completo, pero sí, no hay comprobación para crear objetos, vamos a arreglarlo. Y lo he publicado en git sólo porque no me acordaba de pegar la papelera. ¿Avergonzado? El Git fue creado para que la gente aprenda, intercambie experiencias, comparta código, que funcione o no, da igual, cualquiera puede hacer un fork y hacer cambios si no está contento con algo.
Aquí está, 250 objetos han sido creados y almacenados en la memoria para la duración del Asesor Experto. Bueno, gracias, lo sabré . A esto me refiero con "lógica no intuitiva". Por ejemplo, en el tutorial sobre OnInit(), sólo se puede leer que la función se procesa durante la inicialización del Asesor Experto/indicador.
Déjame contarte un secreto. Puedes crear hasta 1.000 objetos o más, siempre que no tengas una "calculadora". Pero también puede hacerlo. Una calculadora es un ordenador con 4 GB de RAM. Cualquier cosa por debajo de eso es "la calculadora de la abuela"... :) Así, puedes crear objetos de una sola vez o de uno en uno. No hay ninguna diferencia. Pero sin fanatismo.
Así, todo funciona para todos si se hace con sabiduría...
¿Va a crear una línea de 4 según sea necesario? :) ¿Y si hay 200 líneas? ¿Sería económico crearlos todos a la vez según su lógica? Y la forma en que fue concebida por los desarrolladores sólo la conocen ellos, y concebida de forma muy poco intuitiva. Como si no hiciera falta nada increíble o ilógico. ¿Cómo podía saber que debía trabajar con los objetos sólo de esta manera y no de otra? ¿Tal vez de un libro de texto sobre mql4? Dudo que este punto se explique allí.
Al menos, funciona como estaba previsto :) Está entre paréntesis en el título (público), así que aún no está completo, pero sí, no hay comprobación para crear objetos, vamos a arreglarlo. Y lo he publicado en git sólo porque no me acordaba de pegar la papelera. ¿Avergonzado? El Git fue creado para que la gente aprenda, intercambie experiencias, comparta código, que funcione o no, da igual, cualquiera puede hacer un fork y hacer cambios si no está contento con algo.
Aquí está, 250 objetos han sido creados y almacenados en la memoria para la duración del Asesor Experto. Muy bien, gracias, lo sabré . A esto me refiero con "lógica no intuitiva". Puede leer en el tutorial, por ejemplo, sobre OnInit(), que la función se procesa durante la inicialización de un EA/indicador.
Puedes crear tantos objetos como necesites al mismo tiempo. En ese momento MT no estaba muy desarrollado en cuanto al dibujo de los buffers de los indicadores, teníamos que dibujar 400 velas visibles con líneas de tendencia, para una vela necesitamos 5 líneas, 400*5=2000, más un objeto para cada una y así sucesivamente. En total tenemos unos 2500 objetos. Funcionó sin ningún tipo de matiz.
No entiendes del todo la lógica del trabajo con objetos, pero sabes cómo argumentar. Es mejor hacer lo contrario.
¿Va a crear una línea de 4 según sea necesario? :) ¿Y si hay 200 líneas? ¿Sería económico crearlos todos a la vez según su lógica? Y la forma en que fue concebida por los desarrolladores sólo la conocen ellos, y concebida de forma muy poco intuitiva. Como si no hiciera falta nada increíble o ilógico. ¿Cómo podía saber que debía trabajar con los objetos sólo de esta manera y no de otra? ¿Tal vez de un libro de texto sobre mql4? Dudo que este punto se explique allí.
Al menos, funciona como estaba previsto :) Está entre paréntesis en el título (público), así que aún no está completo, pero sí, no hay comprobación para crear objetos, vamos a arreglarlo. Y lo publiqué en git sólo porque no me acordaba de pegar la papelera. ¿Avergonzado? El Git fue creado para que la gente aprenda, intercambie experiencias, comparta código, que funcione o no, da igual, cualquiera puede hacer un fork y hacer cambios si no está contento con algo.
Aquí está, 250 objetos han sido creados y almacenados en la memoria para la duración del Asesor Experto. Muy bien, gracias, lo sabré . A esto me refiero con "lógica no intuitiva". Por ejemplo, en el tutorial sobre OnInit(), sólo se puede leer que la función se procesa durante la inicialización del Asesor Experto/indicador.
Bienvenido. Intentaré explicarlo en un ruso sencillo.
Te vas de viaje de pesca.
O puedes coger todo lo que necesites de la despensa (OnInit) directamente, pescar sin dar vueltas y, cuando llegues a casa, poner todo en la despensa y la nevera (OnDeinit).
Esposible que lo haya conocido aquí en el foro. Sólo hay que escuchar y oír lo que se dice a veces.
Si no es así, te hacen una pregunta, te contestan, dices "tonterías" y haces lo que piensas.
Primero hay que reflexionar sobre la cuestión, hacer preguntas y luego empezar a editar.
¿Sabe que lo más sencillo en programación es imprimir el código? Y la mayor parte del desarrollo es pensar en la lógica.
Siento sacar esto a colación por segunda vez.
Pero hay un problema que aún no puedo resolver, a saber
abrir una serie de órdenes (una tras otra) en la misma vela.
Necesito evitar que el EA abra una nueva orden en la misma vela.
Pensé en resolverlo usando Sleep(), pero Makar dijo que sería mejor no detener el proceso.
El código ahora se ve así:
Necesito que el EA no pueda abrir una nueva orden en la misma vela.