[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 285
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
Sí. Creo que he terminado. Aquí está el recolector de garrapatas reelaborado con su empaquetado en segundas velas.
Lo fue:
Se convirtió:
Comentarios sobre el código.
1. No se hizo el cambio de caso en la selección de velas virtuales para ahorrar tiempo de CPU, en su lugar se comentaron las secciones con la selección (ya que la selección se hace para necesidades específicas una vez antes de la compilación).
2. En el trabajo con la hora local (fuera de línea que es) no trajo a la mente. En el bucle"while(time==TimeLocal()){//hasta que haya pasado un segundo", sospecho que debe haberMarketInfo en FileWriteDouble (me suena a punta de idiota). Si me decís qué parecería más lógico ahí, os lo agradeceré.
3. Una construcción de autor
Lo he declarado al final de init().
4. Al principio de init() las matrices dinámicas
en lugar de las variables utilizadas.
5. Para la optimización, teóricamente puede utilizar las funciones de archivo WinAPI y escribir en el historial de una vez en el bloque 44 bytes (longitud de la estructura MarketInfo o lo que sea en .hst).
6. Se ha eliminado completamente el modelado de tiempo del autor para escribir en la celda Time[]. Por la misma razón, en el bucle head while no se comprueba TimeLocal(), sólo TimeCurrent().
7. ¿Qué más sugiere para optimizar el código?
Desde el punto 4 se debe entender que estabas haciendo un indicador, entonces esas acciones no son claras:
¡ ArrayInitialize() es lo más adecuado?!
Y lo más probable es que se niegue a utilizar matrices de indicadores.
Probablemente ArrayInitialize() funcione?
ArrayInitialize(ask, EMPTY_VALUE); ¿quieres decir? No lo hice. Por qué lo corté exactamente, tenía miedo de un caso así:
(a, b, c)//valores en ask después de tres ticks por segundo (fantástico, pero supongamos).
ArrayInitialize(ask, 0);//ser (0, 0, 0)
FileWriteDouble(hand1e, ask[ArraySize(ask)-1], DOUBLE_VALUE);//Close[]
- La celda Close obtendrá 0. Por eso estoy redefiniendo el tamaño para evitar que esto ocurra. Comprobar ArrayInitialize(ask, EMPTY_VALUE);.
TarasBY:
Tienes que dejar de usar matrices de indicadores.Son dinámicos, eso es lo que me ha gustado. Menos comandos, menos ciclos del procesador. Tienes que hacer 500 milisegundos de procesamiento en cualquier f... ...para conseguirlo.
ArrayInitialize(ask, EMPTY_VALUE); ¿quieres decir? No lo hice. Tenía miedo de un caso así, por eso empecé a reducirlo:
(a, b, c)//valores en ask después de tres ticks por segundo (fantástico, pero supongamos).
ArrayInitialize(ask, 0);//ser (0, 0, 0)
FileWriteDouble(hand1e, ask[ArraySize(ask)-1], DOUBLE_VALUE);//Close[]
- La celda Close obtendrá 0. Por eso estoy redefiniendo el tamaño para evitar que esto ocurra. ArrayInitialize(ask, EMPTY_VALUE);; comprobarlos.
Son dinámicos, eso es lo que me ha gustado. Menos comandos, menos ciclos del procesador. Tienes que gestionar 500 milisegundos de procesamiento en cualquier cuello de botella teóricamente posible... ...para conseguirlo.
No me refiero a eso: algo me dice que no conseguirás reducir la matriz de indicadores. Además, si hay celdas sin rellenar en dicho array, SIEMPRE hay algún valor ahí: 0 o VALOR_VACÍO, y qué se obtiene en estos cálculos:
Y por lógica general: ejecutaría toda la colección de ticks en un bucle y controlaría por separado el tiempo y, en cuanto pasara el tiempo de la "nueva barra", lo escribiría en el archivo, poniendo a cero y recortando las matrices de trabajo en el proceso.Si sé, es posible cambiar las órdenes de envío y cierre en el asesor para llamar a la ventana de comercio manualmente y entrar en el mercado a través de esta ventana, es necesario para aquellos corredores que no permiten el uso de asesores
Y por lógica general: ejecutaría toda la colección de ticks en un bucle y controlaría por separado el tiempo y, una vez pasado el tiempo de la "nueva barra", lo escribiría en el archivo, poniendo a cero y recortando las matrices de trabajo en el proceso.
Extraño... Yo lo tengo así... Lo único es que el tiempo se controla en el propio bucle de recogida de ticks, y el array de trabajo no se recorta hasta que se haya dibujado una copia del tick tantas veces como no haya habido un tick menos un segundo. Pasado un segundo - se dibuja un nuevo tick, dos - una copia del tick anterior y un nuevo tick, tres - dos copias del tick anterior y un nuevo tick, etc. En lugar de copias del tick anterior es posible dibujar una raya por el nivel de Cierre, esta variante está comentada en el código.
Extraño... Lo tengo así... Lo único es que el tiempo se controla en el propio bucle, y el array de trabajo no se recorta hasta que se dibuja una copia del tick tantas veces como no había ticks menos una. Pasado un segundo - se dibuja un nuevo tick, dos - una copia del tick anterior y un nuevo tick, tres - dos copias del tick anterior y un nuevo tick, etc. En lugar de copias del tick anterior es posible dibujar una raya por el nivel de Cierre, esta variante está comentada en el código.
Tú y yo estamos hablando de ciclos diferentes. Me refiero a esto:
¿Alguien puede decirme cómo eliminar los ceros después del punto decimal? Por alguna razón tengo 4 decimales en mi código. Aquí está el código. string l_dbl2str_12 = DoubleToStr(g_ibuf_140[0] - g_ibuf_144[0],3);
¿Puedes decirme qué estoy haciendo mal...
Necesito una variable de tipo doble que contenga la fecha como 0,20130429164459 (lo que significa 2013.04.29 16:44:59)
Parte del código EA:
El registro de eventos para Precision 12,13 y 14 da un resultado erróneo, ver imagen