MQL4 Script - abrir en la nueva pregunta de la barra
Página 1 de 353 123 ÚltimoÚltimo
Resultados 1 al 10 de 23

Tema: MQL4 Script - abrir en la nueva pregunta de la barra

  1. #1
    Hola,

    Como ya hay una EA ejecutándose en mi (s) gráfico (s), me gustaría que mi script abriera tres (o más, menos, no importa pero 1 n, ngt; = intercambia cuando se ejecuta) primero cuando se ejecuta en el gráfico y el resto uno por barra nueva.

    actualmente, así es como se ve la lógica, sin embargo, esto solo abre la primera operación, permanece en la tabla pero no abre las siguientes.
    Probablemente sea algo estúpido, pero estoy cansado y he revisado el código la mayor parte de mis horas de vigilia hasta ahora y me lo estoy perdiendo.
    O bien, puedo perderme la lógica por completo.

    De cualquier manera, cualquier ayuda sería muy apreciada.


    Código insertado en ExtraTrades = 3; datetime stopper = Time # 91; 0 # 93 ;; int contador = 1;/ ----------------------------------------------- ------------------- /| Es nuevo bar |/ ----------------------------------------------- ------------------- bool IsNewBar () {if (stopper == Time # 91; 1 # 93;) {stopper = Time # 91; 0 # 93; ; devolver verdadero; } else {return false; }}/ --------------------------------------------- --------------------- void start () {while (contador lt; = ExtraTrades) {if (contador == 1) {OpenIt (); contador ; } if (IsNewBar ()) {OpenIt (); contador ; }} contador = 1; }

  2.                         
    Publicidad
  3. #2
    Cita Iniciado por ;
    {quote} Tenga en cuenta que este método no es confiable, ya que MT deja de actualizar el conteo de barras una vez que se alcanza la configuración de barras máximas. Entonces, ¡el único! método confiable es verificar el tiempo.
    Gracias, leí respuestas contradictorias en varios hilos, así que no estaba seguro, pero estaba funcionando para mí, así que pensé qué demonios

  4. #3
    Bueno, después de algunas depuraciones, parece que IsNewBar () no está evaluando correctamente. No sé por qué. ¿Por qué funcionaría para un EA, pero no para un guión? El código ahora se parece a este Código insertado/ ---------------------------------------- -------------------------- /| Es nuevo bar |/ ----------------------------------------------- ------------------- bool IsNewBar () {if (stopper == Time # 91; 1 # 93 {stopper = Time # 91; 0 # 93; ; devolver verdadero; } else {return false; }}/ --------------------------------------------- --------------------- void start () {OpenIt (); while (counter lt; = ExtraTrades) {if (IsNewBar ()) {OpenIt (); }}}

  5. #4

    Cita Iniciado por ;
    ¿Por qué funcionaría para un EA, pero no para un guión?
    Los scripts son (más) intencionados como run-once. AFAIK no reciben actualizaciones (precio, etc.) Si necesita datos nuevos, debe sondearlos. Pruebe algo a lo largo de este (pseudo) código: código insertado time = 0 count = 0 while count lt; target if time! = iTime (..., 0) si cuenta abierta () time = iTime (..., 0) Sleep (100)

  6. #5

    Cita Iniciado por ;
    {quote} Los scripts son (más) intencionados como run-once. AFAIK no reciben actualizaciones (precio, etc.) Si necesita datos nuevos, debe sondearlos. Pruebe algo a lo largo de este (pseudo) código: time = 0 count = 0 while count lt; target if time! = iTime (..., 0) si cuenta abierta () time = iTime (..., 0) Sleep (100)
    Gracias por responder. He reemplazado el IsNewBar con el tope! = ITime (Símbolo (), PERIOD_CURRENT, 0) pero aún así, no está pasando por si se actualiza o no. No puedo dormir porque se va a ejecutar en Renko, podría perder un barentrada si el sueño es lo suficientemente grande.

  7. #6

    Cita Iniciado por ;
    {quote} Gracias por responder. He reemplazado el IsNewBar con el tope! = ITime (Símbolo (), PERIOD_CURRENT, 0) pero aún así, no está pasando por si se actualiza o no. No puedo dormir porque se va a ejecutar en Renko, podría perder un barentrada si el sueño es lo suficientemente grande.
    Desafortunadamente tenemos que hacerlo fuerza bruta con RefreshRates (). MetaTrader es malo. Esto funciona: Inserted Code #property strict void OnStart () {datetime time = 0; int count = 0; int target = 3; while ((count lt; target)! IsStopped ()) {if (tiempo! = iTime (_Symbol, PERIOD_CURRENT, 0)) {count ; Imprimir (tiempo cambiado:, contar); time = iTime (_Symbol, PERIOD_CURRENT, 0); } Dormir (1); RefreshRates (); }}

  8. #7

    Cita Iniciado por ;
    {quote} Lamentablemente tenemos que hacerlo fuerza bruta con RefreshRates (). MetaTrader es malo. Esto funciona: #property strict void OnStart () {datetime time = 0; int count = 0; int target = 3; while ((count lt; target)! IsStopped ()) {if (tiempo! = iTime (_Symbol, PERIOD_CURRENT, 0)) {count ; Imprimir (tiempo cambiado:, contar); time = iTime (_Symbol, PERIOD_CURRENT, 0); } Dormir (1); RefreshRates (); }}
    Gracias por eso, si lo hubiera visto antes, podría haberme salvado la cabeza contra todo lo que se cruzó en mi camino antes de darme cuenta de que RefreshRates () era el culpable. Lo he hecho usando la función Bars, no estoy seguro de que sea a prueba de balas, pero creo que es el truco, así como Inserted Code void start () {OpenIt (); RefreshRates (); int nBars = Bars (Symbol (), PERIOD_CURRENT); while (counter lt; = ExtraTrades) {RefreshRates (); if (nBars lt; Bars (Symbol (), PERIOD_CURRENT)) {OpenIt (); nBars = Bars (Symbol (), PERIOD_CURRENT); }}}

  9. #8
    Inserted Code static datetime T0;/ ----------------------------------------------- ------------------- int OnInit () {T0 = Time # 91; 0 # 93 ;;/o T0 = 0; ??? return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- void OnTick () {if (T0! = Time # 91; 0 # 93 {T0 = Time # 91; 0 # 93 ;; RefreshRates (); Abrelo(); } ..............................}

  10. #9

    Cita Iniciado por ;
    tiempo de tiempo estático T0;/ ----------------------------------------------- ------------------- int OnInit () {T0 = Tiempo [0];/o T0 = 0; ??? return (INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- void OnTick () {if (T0! = Tiempo [0]) {T0 = Tiempo [0]; RefreshRates (); Abrelo(); } ..............................}
    Gracias, estoy haciendo algo similar en mi EA, aunque no estoy seguro de que OnTick sea válido para un guión.

  11. #10

    Cita Iniciado por ;
    {quote} Gracias, estoy haciendo algo similar en mi EA, aunque no estoy seguro de que OnTick sea válido para un guión.
    use OnStart () en lugar de OnTick (), todo funciona en su lugar

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.