FORTALEZAS Por favor, ayuda - página 10

 
Mikalas:

También eres nuestro "lector"... Pregunta:

Por qué construir series de tiempo si los datos están listos ( CopyTime(symbol,period,first_date+PeriodSeconds(period),1,times) )?

No están preparados. Probablemente estén en el disco. Incluso es posible que se sincronicen con el historial del servidor (si el gráfico está abierto u otro programa los ha solicitado recientemente).

Pero eso no significa que la función lo crea sin más. Hay que consultar los datos desde el disco, construir una caché en la memoria, y sólo entonces se puede decir que el historial está ahí y empieza desde esta fecha.

Pero ni esta respuesta mía, ni las repetidas respuestas de los desarrolladores, ni el código de trabajo, ni la documentación te ayudarán. La función no funciona como pensabas, aquí hay un fallo.

 
antt:

Lea la documentación con atención, no de forma selectiva. La presencia de los datos del historial en el disco no significa necesariamente que el terminal "esté definitivamente allí". En este caso (cuando se accede desde el indicador), las funciones sólo funcionan con la caché de series temporales en memoria. Significa que se realiza un acceso sincrónico a la memoria y si no hay ninguna serie de tiempo preparada allí, no se devolverá la fecha SERIES_FIRSTDATE (del primer elemento del array). Pero, por supuesto, la solicitud inicia la preparación-carga de las series temporales en la memoria.

La solicitud SERIES_TERMINAL_FIRSTDATE está relacionada con la inicialización de la base de datos y la sincronización con el servidor, por lo que la primera llamada no funcionará inmediatamente de todos modos.

En principio, la capacidad de obtener el historial requerido se comprueba mediante SERIES_SERVER_FIRSTDATE . Por supuesto, puede contar con X iteraciones de solicitud de historial, pero si el terminal confirma la presencia de historial en SERIES_SERVER_FIRSTDATE, entonces la disponibilidad de los datos de las series temporales es sólo cuestión de tiempo (sincronización de la base m1 con el servidor y generación de las series temporales).

Lo entiendo, pero dime, ¿por qué no se podría hacer de la forma que he descrito anteriormente?

No habría afectado en absoluto a la velocidad de procesamiento de la información:

Si había alguna información sobre un instrumento, registra la fecha de la primera aparición de la misma y la almacena en la memoria: ¡8 bytes!

Incluso puedes no almacenarlo, pero cuando haces SymbolSelect(), lo pones en memoria.

Cuando lo abordamos con la función SeriesInfoInteger (SERIES_TERMINAL_FIRSTDATE), obtenemos:

A -1 - sin datos

Б. 0 - no hay datos disponibles pero no están listos

В. Fecha de la primera información

Entonces todo sería claro y transparente.

-1 - Ir al servidor

0 - Esperar a la siguiente iteración para comprobar y/o construir las series temporales

> 0 Construir series de tiempo

Por su referencia entendí que casi lo hizo, resulta que no.

Al parecer, un programador empezó a escribir y otro terminó

Su implementación es buena para FOREX, pero muy inconveniente para FORTS.

En el caso de FORTS, es posible que las cotizaciones no se produzcan durante mucho tiempo y que las series temporales se descarguen de la plataforma.

y hay que repetir todo el proceso de nuevo con el acceso al servidor.

2015.03.27 20:24:56.568  (GAZR-6.15,M1) OnCalculate: Не скопированы тийминги по символу - GAZR-9.15
2015.03.27 20:25:34.092  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.100  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.326  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:25:34.326  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:34:40.098  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:34:40.126  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:37:21.475  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:37:21.491  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:37:41.563  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:41.051  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:40:56.579  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:56.595  (RTS-9.15,H1)  OnCalculate: Не получены бары по символу - RTS-12.15
2015.03.27 20:40:58.886  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:40:58.896  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
2015.03.27 20:40:59.436  (SILV-6.15,H1) OnCalculate: Не получены бары по символу - SILV-9.15
2015.03.27 20:41:00.892  (VTBR-6.15,H1) OnCalculate: Не получены бары по символу - VTBR-9.15
 
Mikalas:

Su implementación es buena para FOREX, pero muy inconveniente para FORTS.

En FORTS las cotizaciones pueden no llegar durante mucho tiempo, y las series temporales se descargan del paiachi

y hay que repetir todo el proceso de obtención de los datos de nuevo, ¡con el servidor conectado!

Mikalas, todavía tengo fe en ti. Sin duda, leerá todo lo que se ha dicho aquí.

FORTALEZAS Por favor, ayuda.

El indicador multidivisa no es tan sencillo.

En primer lugar, compruebe la disponibilidad de los instrumentos:

bool CorrectSymbol( string symbol )
{
        ResetLastError();
        if ( SymbolInfoDouble( symbol, SYMBOL_BID ) > DBL_EPSILON ) return(true);

        // символ не выбран в "Обзоре рынка" (нет в списке доступных)
        if ( GetLastError() == 4302 )
        {
                if ( SymbolSelect( symbol, true ) && SymbolInfoInteger( symbol, SYMBOL_SELECT ) ) return(true);
        }

        return(false);
}

A continuación, abra los gráficos de todos los instrumentos utilizados (basta con un objeto gráfico invisible) para que el historial se cargue normalmente.

Y sólo entonces tratar de cargar la historia utilizando CheckLoadHistory.

Pero esto tampoco puede ser suficiente.


 

Y por cierto tampoco me gusta esta situación con el análisis multidivisa y la construcción de indicadores. Cómo se aplica.

Es un baile de pandereta, antes de empezar a calcular algo hay que hacer un montón de comprobaciones... No he visto eso en ninguna otra plataforma. Todo es más sencillo desde el punto de vista del usuario.

No es un secreto que mucha gente, incluso aquellos que aprendieron la programación de MT4, tienen miedo de la complejidad de la programación de MT5.

Si yo fuera el desarrollador, trataría de hacernos la vida más fácil. Combina toda esta pandereta en un solo comando, como

GatData(RTS,1000)

y el terminal resuelve esta tarea, hace comprobaciones, si es necesario, abre gráficos, intercambia el historial, actualiza, etc.

Y tras su ejecución tengo datos reales con los que trabajar.

Z.I. Recuerdo que había un lema: "Terminal para amas de casa"...

 
komposter:

Mikalas, todavía tengo fe en ti. Seguramente leerá todo lo que se ha dicho aquí.


¡Komposter!

(Cualquier cosa más allá - ¡sin ofender!)

¿Qué has encontrado de malo en mi modelo de obtener información sobre tamseries?

¿Porque no es de ti?

Estoy tratando de "llegar" a los desarrolladores para facilitarnos a todos

¡"vida", pero SIEMPRE hay gente como tú que es la más inteligente!

¡Así que será así!

 
Prival-2:

Y por cierto tampoco me gusta esta situación con el análisis multidivisa y la construcción de indicadores. Cómo se aplica.

Es un baile de pandereta, antes de empezar a calcular algo hay que hacer un montón de comprobaciones... No he visto eso en ninguna otra plataforma. Todo es más sencillo desde el punto de vista del usuario.

No es un secreto que mucha gente, incluso los que aprendieron la programación de MT4, tienen miedo de la complejidad de la programación de MT5.

Si yo fuera el desarrollador, trataría de hacernos la vida más fácil. Combina toda esta pandereta en un solo comando, como

GatData(RTS,1000)

y el terminal resuelve esta tarea, hace comprobaciones, si es necesario, abre gráficos, intercambia el historial, actualiza, etc.

Y tras su ejecución tengo datos reales con los que trabajar.

Recuerdo un eslogan sobre el terminal para amas de casa...

¡Hola!

Un enfoque universal y simple haría imposible escribir programas eficientes. No se puede hacer una función DyData que tenga todas las comprobaciones - será un engorro, innecesario para el usuario en el 95% de los casos.
En el caso del indicador - funciona lo más rápido posible con sus datos del gráfico. Está diseñado para este fin. Si lo hacemos "listo para cualquier situación", un simple MA se ralentizará como un monstruo complejo.

No estoy defendiendo a los desarrolladores, ni mucho menos. A mí tampoco me gustan muchas cosas.
Pero intento ser constructivo, y entiendo que no conozco todas las entrañas del terminal.

Mikalas tiene razón en algunos aspectos: si se calla (no se lee) y se sigue gritando "¡Incómodo!", las discusiones se vuelven populares y visibles para los desarrolladores. Y hacen algo al respecto (ya han arreglado algunos fallos en su consejo).
Así que estoy murmurando para nada, supongo )

 
Mikalas:

¡Komposter!

(Cualquier cosa más allá de eso, no se ofende)

¿Qué has encontrado de malo en mi modelo de obtener información sobre tamserials?

¿¡Porque no es de usted!?

Estoy tratando de "llegar" a los desarrolladores para facilitarnos a todos

¡"vida", pero SIEMPRE hay gente como tú que es la más inteligente!

¡Así que será así!

Ya lo tengo.

La tarea consistía simplemente en escribir un indicador. Y resultó que teníamos que mejorar el lenguaje.

No daría ningún consejo si fuera así).

 
komposter:

Ya lo tengo.

Lo que pasa es que la tarea fue expresada: escribir un indicador. Pero resultó que era necesario mejorar la lengua.

No daría ningún consejo si fuera así).

¡Andrey!

Has pasado mucho más tiempo escribiendo tus posts aquí.

Podría haber escrito un indicador para "mis" reclamaciones (para FORTS) durante este tiempo.

¡Y tú mismo has visto esas "muletas" de las que hablo!

 
Mikalas:

¡Andrei!

Has pasado más tiempo publicando aquí.

Durante este tiempo podría haber escrito un indicador para "mi" lloriqueo (para FORTS)

¡Y has visto por ti mismo esas "muletas" de las que hablo!

Escribí, por eso sé de lo que hablo.

Ya habrías conseguido tu indicador también, si el objetivo fuera conseguir un indicador, no arreglar la lengua.

 
komposter:

He escrito, por eso sé de lo que hablo.

Ya habrías conseguido tu indicador también, si el objetivo fuera conseguir un indicador, no arreglar la lengua.

Escribí un indicador, pero es imposible utilizarlo.

¡No puedo usarlo! ¡No importa lo que intente, tengo problemas en todas partes!

Tengo OrderSendAsync() - sin mecanismo de seguimiento, aunque hay ORDER_ID

Hay una variable global - cuando cierro el terminal, se reinicia...

Hay retrasos "incomprensibles" en la ejecución de los pedidos: medio hecho y el siguiente

una acusación de charlatanería....

Y así sucesivamente...

Planteo cuestiones porque los problemas y los errores existen.

(¡No los estoy inventando!)

Opero en el BUREAU por dinero REAL, ¡no por diversión!

Y por eso es ARCHIVO para mí y para TODOS los que comercian que las funciones de comercio

ARCHIVOS que las funciones comerciales son FRECUENTES.

La arquitectura de MT5 es SUPER, me gusta mucho, pero todo tiene que funcionar correctamente y

El acceso a los datos debe ser rápido y fácil.

И... Demos por terminado el día, por favor.

Razón de la queja: