Nuevo terminal de cliente de MetaTrader 4 387 y centro de datos de MetaTrader 4 build 387 - página 15

 
joo:

Todo el mundo tiene derecho a una opinión personal, pero nadie tiene derecho a insultar a los demás.

En este caso, todo es perfectamente transparente: dos miembros del foro expresaron sus opiniones muy negativas sobre el post de nen, a lo que siguió un baneo, y Renat explicó claramente a qué se debía el baneo.

+100
 
joo:

.... A continuación, Renat explicó claramente el motivo de la prohibición.

Sólo te pedí que hicieras dos cosas:

1) Informar al visitante del perfil de un miembro del foro de que ese mismo miembro del foro está expulsado.

2) cuando se emite la prohibición - para especificar la razón (no después de la explicación inteligible, pero en el momento del anuncio de la prohibición).

Esto es sólo una cuestión técnica, que no tiene nada que ver con la moral, ni con la educación, ni con nada.

Todavía me atrevo a sugerir la forma correcta de banear a un usuario: no se debería prohibir a un usuario el acceso al foro, sino sólo la creación de nuevos hilos y mensajes. así el baneado al menos podría hacer una pregunta (en privado) y no ensuciar la lista de usuarios con nuevos nicks.

Es una petición/sugerencia puramente técnica/tecnológica para mejorar el motor del foro.

 
f.t.:

Sólo te pedí que hicieras dos cosas:

1) Informar al visitante del perfil de un miembro del foro de que ese mismo miembro del foro está expulsado.

2) cuando se emite la prohibición - para especificar la razón (no después de la explicación inteligible, pero en el momento del anuncio de la prohibición).

Esto es sólo una cuestión técnica, que no tiene nada que ver con la moral, ni con la educación, ni con nada.

También me atreveré a sugerir la forma correcta de banear a un usuario: no se debería prohibir a un usuario el acceso al foro, sino sólo la creación de nuevos hilos y mensajes. ese baneado al menos podría hacer una pregunta (en privado) y no ensuciaría la lista de usuarios de nuevos nicks.

esto es puramente una petición/propuesta técnica/tecnológica para mejorar el motor del foro.

Personalmente no tengo nada en contra de lo que has dicho, al contrario, lo apoyo. Es que tu ejemplo con nen ha sido desafortunado y he posteado con una alusión a eso.
 
ANG3110:

Vale, echaré un vistazo al artículo al que te refieres.

Acerca de los datos sub-cargados... Ahora, debido al paso del tiempo, no puedo citar los registros. Pero era algo así.

En el ATC de American broker, el EA se quedó encendido y la terminal cerrada. Al día siguiente se abrió el terminal y tras la apertura y el inicio de sesión automático hubo una pausa sin cotizaciones. El Asesor Experto envió una solicitud adicional para abrir una posición y el historial comenzó a intercambiarse y la posición se abrió de acuerdo con los cálculos del día anterior en la zona en la que debería haberse cerrado, pero se acaba de abrir y se perdió instantáneamente contra el mercado que se estaba moviendo en la dirección opuesta. La posición terminó cerrándose con una profunda pérdida, no recuerdo cuánto fue, pero fue mucho.

Otro caso. Dejé un Asesor Experto con un cálculo de canal en su algoritmo, algo similar a Bollinger, pero que requería muchas barras porque tenía un algoritmo de adaptación. No vi el momento en que se inició el comercio, pero lo vi unos 20 minutos después. Resultó que las desviaciones de la media adaptada no se tuvieron en cuenta y el canal se rompió en la línea, como si estuviera en la media. Mi Asesor Experto estaba abriendo y cerrando una posición tras otra y perdió cerca de $4,500 en 20 minutos por 0.2-0.3 lotes. 4.500 dólares en un mercado totalmente ganador. Esto podría ocurrir si hubiera muy pocos datos o si faltara algo para el diseño que he citado anteriormente.

Ahora siempre desconecto los EAs después de operar. Ahora siempre desactivo los Expert Advisors después de la primera vez que abro el terminal de nuevo y espero a que se bombeen los datos y sólo entonces los activo.

Desde mi punto de vista

una EA requiere que haya datos disponibles (normalmente cualquier dato).

Porque todos los errores se dividen en errores en el código y errores en los datos.

El problema se resuelve analizando la disponibilidad de los datos. El problema se resuelve analizando la disponibilidad de los datos necesarios

y su corrección antes de utilizarlos.


Por ejemplo: Antes de dividir, es elemental comprobar si estamos tratando de dividir por cero.

este será el tono correcto en casi cualquier situación, incluso si usted está seguro ... que una variable ... no puede ser = 0

La comprobación dará un 100% de seguridad de que el programa no se bloqueará al dividir. ¡ASÍ QUE COMPRUEBA LOS DATOS!




¡para evitar este tipo de cosas!

el Asesor Experto debería saber exactamente cuántas barras necesita.

promover un algoritmo simple pero eficaz

debe comenzar desde la vela que funciona actualmente en el marco temporal o los marcos temporales necesarios

y ver si hay barras perdidas - no es muy difícil

No voy a dar el código ... ¡hay quienes aquí pueden escribir fácilmente ese código!


¡A continuación, el Asesor Experto simplemente no arranca ni se cierra, ¡¡¡Rompe!!! que no hay un HISTORIAL COMPLETO!

usted !!! tenga en cuenta esto - tome medidas para rellenar las barras que faltan!

¡y sólo después de eso se permite el comercio!

--

su problema es que su algoritmo no tiene ese control.

¡Añadir! porque es más fácil que perder 4500 dólares ...

--

Para aquellos que no pueden escribir dicho código, lo escribirán aquí por 100-200 dólares

¡es menos de 4.500 dólares!

 
YuraZ:

de la vela de trabajo actual en el marco temporal o los marcos temporales deseados

corre a la profundidad correcta! s y mira si hay barras perdidas - no es demasiado difícil

Gracias Yura por el consejo.

Pero qué debo hacer, si acabo de abrir el terminal y la barra cero sigue siendo antigua, por ejemplo, del día anterior. Por supuesto, podemos correr hasta una cierta profundidad de la misma contando las barras perdidas, pero será un error. ¿Cómo sabe el EA si es la última barra o no? He dicho antes que en principio se puede comparar TimeLocal() y TimeCurrent() teniendo en cuenta la diferencia de tiempo y añadiendo un pequeño delta, porque a veces no hay cotización durante 3-5 minutos, especialmente en los pares CAD, y probablemente se puede considerar un error. Tal vez sea suficiente con hacerlo durante la entrada y la fijación de las barras perdidas después, por ejemplo, cuando la comunicación se interrumpe durante varios minutos, y probablemente no sea necesario volver a calcular en cada barra porque llevaría demasiado tiempo volver a calcular. El Asesor Experto que escribí sobre las pérdidas requiere hasta 20 mil barras para la adaptación inicial estadística. Para un número así sería penoso ejecutar ciclos en cada barra y probablemente no sea necesario. Por supuesto, no es la mejor manera y depende además del reloj del ordenador. ¿Tal vez se te ocurra algo mejor? Sin embargo, como he observado últimamente, si se activa la función IsConected(), la barra cero suele aparecer casi inmediatamente.

 
ANG3110:

Gracias, Yura, por el consejo.

Pero qué debo hacer, si el terminal se acaba de abrir y la barra cero es todavía antigua, digamos del día anterior. Por supuesto que podemos correr a una cierta profundidad de la misma contando las barras perdidas, pero será un error. ¿Cómo sabe el EA si es la última barra o no? He dicho antes que en principio se puede comparar TimeLocal() y TimeCurrent() teniendo en cuenta la diferencia de tiempo y añadiendo un pequeño delta, porque a veces no hay cotización durante 3-5 minutos, especialmente en los pares CAD, y probablemente se puede considerar un error. Tal vez sea suficiente con hacerlo durante la entrada y la fijación de los compases perdidos después, por ejemplo, cuando la comunicación se interrumpe durante varios minutos, y probablemente no sea necesario volver a calcular en cada compás porque llevaría demasiado tiempo contar. El Asesor Experto que escribí sobre las pérdidas requiere hasta 20 mil barras para la adaptación inicial estadística. Para un número así, sería penoso ejecutar ciclos en cada barra y probablemente no sea necesario. Por supuesto, no es la mejor manera y depende además del reloj del ordenador. ¿Quizás se te ocurra algo mejor? Sin embargo, como estaba observando últimamente, si la función IsConected() se dispara, la barra cero suele aparecer casi inmediatamente.

Bueno, todo me parece sencillo... El procedimiento int start() se llama sólo en un nuevo tick, y es 100% significa que la función TimeCurrent() (devuelve la última hora conocida del servidor (hora de la última llegada de la cotización)) ya será actual independientemente de la disponibilidad de las barras...

Creo que todo está claro después de eso...

 
Renat:

Lamentablemente, no ha especificado ningún dato inicial, parámetros de prueba o registros.

Además, te refieres a bibliotecas (DLL) que no sólo requieren muchas instalaciones, sino que además no funcionan por falta de bibliotecas adicionales (esto es para el autor de las bibliotecas, que se olvidó de los archivos DLL adicionales).

Póngase en contacto con el autor de estas bibliotecas para obtener información.


Si siguieras el enlace que te proporcioné, verías que sólo un parámetro de entrada tiene un valor y está configurado como se describe: StopLoss=100...1 000 paso 10; x=1...1 000 000 paso 1. Además, dije que la build anterior no generaba este error, por lo que el error es tuyo. Todo funciona realmente. Sólo da este extraño mensaje. Por lo tanto, es posible que sólo sea este mensaje para mí y que no funcione para otra persona por las consecuencias de este error.
 
ANG3110:

Gracias, Yura, por el consejo.

Pero qué debo hacer, si el terminal se acaba de abrir y la barra cero es todavía antigua, digamos del día anterior. Por supuesto que podemos correr a una cierta profundidad de ella contando las barras perdidas, pero será un error. ¿Cómo sabe el EA si es la última barra o no? He dicho antes que en principio se puede comparar TimeLocal() y TimeCurrent() teniendo en cuenta la diferencia de tiempo y añadiendo un pequeño delta, porque a veces no hay cotización durante 3-5 minutos, especialmente en los pares CAD, y probablemente se puede considerar un error. Tal vez sea suficiente con hacerlo durante la entrada y la fijación de las barras perdidas después, por ejemplo, cuando la comunicación se interrumpe durante varios minutos, y probablemente no sea necesario volver a calcular en cada barra porque llevaría demasiado tiempo volver a calcular. El Asesor Experto que escribí sobre las pérdidas requiere hasta 20 mil barras para la adaptación inicial estadística. Para un número así, sería penoso ejecutar ciclos en cada barra y probablemente no sea necesario. Por supuesto, no es la mejor manera y depende además del reloj del ordenador. ¿Tal vez se te ocurra algo mejor? Aunque, como estaba observando últimamente, si la función IsConected() se dispara, la barra cero suele aparecer casi inmediatamente.

¡Hola!


¡esto también se puede comprobar lógicamente!

Primero, se obtienen algunos ticks y se cronometra el TimeCurrent() y si está lejos de las barras, se carga - pero también hay que tener en cuenta el fin de semana.

el lunes necesitas saber la hora de inicio en tu broker, y el viernes la hora de finalización ( en eso, en los ff pequeños tienes un pequeño error de unas pocas barras

( la hora de inicio del lunes y la hora de finalización del viernes pueden ser calculadas automáticamente por el método de promediación para un período mayor )

ejemplo de lógica

// простой пример контроля истори, просто логика 
 
int ФЛАГпроверкиИСТОРИ =0; // 0-история не проверена или не загружена

void init()
{
    ФЛАГпроверкиИСТОРИ   =0; // ставим флаг
}


void start()
{
     // читаем историю на предмет пропущеных баров
    if ( ФЛАГпроверкиИСТОРИ   == 0)
    {
// проверяем а вся ли нужна история есть и если нет то она загружается
      // загружаем
       если загружена ФЛАГпроверкиИСТОРИ=1;
       return;
    }
}


 
Akkarin:

Si siguieras el enlace que te proporcioné, verías que sólo un parámetro de entrada tiene valor y fue configurado, como se dice en la descripción: StopLoss=100..1 000 paso 10; x=1..1 000 000 paso 1. Además, dije que la build anterior no generaba este error, así que el error es tuyo. Todo funciona realmente. Sólo da este extraño mensaje. Así que puede ser sólo este mensaje para mí, mientras que alguien más puede no trabajar en absoluto debido a las consecuencias de este error.


Yo diligentemente ordenado todo, leer todo, entender la lógica, pero se encontró con exactamente lo que dijo - no es suficiente biblioteca dll de terceros, que el autor del conjunto de la biblioteca no ha puesto (aunque incluso hizo el instalador).

Aparentemente, un olvido trivial. Pero no puedo recorrer Internet en busca de algunos archivos dll.