Esto es interesante, gracias, ¿funcionará también en gráficos fuera de línea? Dado el hecho de que no se basan en el tiempo?Iniciado por ;
![]() |
||
Publi |
sí, OnTick es solo para EA. pero ... si ejecuta este código para el script (es decir, OnStart ()), la función NewBar nunca será verdadera, a menos que ejecute el script en la hora exacta como una nueva barra de vela. ... o bien ... Inserted Code void OnStart () {while (! NewBar (PERIOD_CURRENT)) sleep (1000);/tu codigo }Iniciado por ;
Esto es interesante, gracias, ¿funcionará también en gráficos fuera de línea? Dado el hecho de que no se basan en el tiempo?Iniciado por ;
Además, verifique este código que es adecuado para marcos de tiempo arbitrarios (detectados con la primera cotización): Inserted Code #property strict void OnStart () {datetime seconds = _Period * 60;/declara cualquier cantidad en segundos datetime t_last_recorded = 0;/para demostración: D while (! IsStopped ()) {RefreshRates (); datetime t = TimeCurrent ();/hora de la última cita conocida datetime t_normalized = tseconds * seconds; if (t_normalized gt; t_last_recorded) {//nueva barra printf (¡nueva barra!); t_last_recorded = t_normalized; } Dormir (1); }}
Código insertado/--- Variable global ----------------------------------------- ------------------------- datetime ArrayTime # 91; # 93 ;, LastTime; void OnTick () {if (NewBar (PERIOD_CURRENT)) {//su código}} bool NewBar (int period) {bool firstRun = false, newBar = false; ArraySetAsSeries (ArrayTime, true); CopyTime (Símbolo (), punto, 0,2, ArrayTime); if (LastTime == 0) firstRun = true; if (ArrayTime # 91; 0 # 93; gt; LastTime) {if (firstRun == false) newBar = true; LastTime = ArrayTime # 91; 0 # 93 ;; } return newBar; }
Gracias, tenía algo similar en mi script pero no funcionó (publicado antes en la primera publicación) incluso cuando agregué RefreshRates (). Intentaré de nuevo con tu código, con ResreshRates () dentro y fuera del ciclo, para que la secuencia de comandos obtenga nueva información.Iniciado por ;
Ninguno de los métodos es complicado: Código insertado static datetime _prevTime = 0; datetime _currTime = iTime (NULL, marco de tiempo deseado, 0); bool _isNewBar = (_prevTime! = _currTime); if (_isNewBar) _prevTime = _currTime;Iniciado por ;
Gracias por responder, ¿estoy en lo correcto al utilizar este método de barras o no? Se siente como que es más simple que el método Time y me gusta mantener las cosas simplesIniciado por ;
![]()
Gracias, leí respuestas contradictorias en varios hilos, así que no estaba seguro, pero estaba funcionando para mí, así que pensé qué demoniosIniciado por ;
![]()
Gracias, son muy amables al proporcionar estos ejemplos, aquí y en mis otros hilos. Entiendo lo que has hecho aquí, pero la lingüística me escapa aún, ya que aún tengo que aprender el lado OO del MQL4. Tampoco estoy completamente seguro de que tu código funcione dentro del contexto de un script, pero no estoy tan bien informado.Iniciado por ;
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.