Mi enfoque. El núcleo es el motor. - página 90

 
fxsaber:

Estimado fxsaber.

Sé que cualquier dato puede ser intercambiado a través de recursos.

Pero primero hay que convertirlos en cadena y luego, mediante StringToChar(), convertirlos en uint, y guardarlos en un recurso. Y el código para esto es mucho más sencillo.

PERO, he demostrado que este método es más lento que la transferencia de la misma cadena, a través de la descripción del objeto.


Mis oponentes desprecian el tipo string y hablan de utilizar el mítico método de transferir todos los datos a uint de una vez mediante la unión.

Además, las cadenas también deben convertirse en uint mediante la unión.


¿Y por qué hay que convertir las cadenas a uint mediante la unión cuando existe StringToChar()?

 
Maxim Kuznetsov:

Internamente, sólo y únicamente existen GlobalVariables y archivos para el intercambio de datos entre EAs, indicadores y scripts.

Los 4 puntos anteriores son "hacks" locales a falta de pescado. Todos estos 4 puntos utilizan mecanismos no diseñados para intercambiar datos arbitrarios, y mucho menos matrices de datos.

п1. El 100% lleva al bloqueo temporal del hilo de la interfaz (sí, los objetos viven allí y sus "descripciones" también) y no funciona en el optimizador. Las descripciones de los objetos sirven para describirlos de forma legible para el ser humano,

p2. n2. no funciona en el probador y el optimizador, y sirve para notificar eventos

P3. p4. los recursos (incluso los nombrados) están pensados para el almacenamiento a largo plazo, no para el intercambio rápido. No puedo decir nada sobre la usabilidad en el probador/optimizador :-) Utilizo recursos de sólo lectura

no tiene sentido hablar de la velocidad de las soluciones curvas.

ps/ por cierto puedes usar archivos, más precisamente tuberías

Has escrito todo bien.

Pero los "hacks" son nuestro todo).

En el probador, en el modo de optimización, la conexión entre el Asesor Experto y el motor no funciona. No es necesario.


Para un intercambio significativo de valores de parámetros en los eventos, el EA y el motor deben enviarse mutuamente datos de hasta 2000 caracteres. Esto no es mucho. Pero no lo es tanto.


El hack más útil es el número 1.

Типы оптимизации - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Типы оптимизации - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
В данном режиме происходит полный перебор всех возможных комбинаций значений входных переменных, выбранных для оптимизации на соответствующей вкладке. Быстрая (генетический алгоритм) В основу данного типа оптимизации заложен генетический алгоритм подбора наилучших значений входных параметров. Данный тип оптимизации значительно быстрее полного...
 
Реter Konow:

Mis oponentes desprecian el tipo string y hablan de utilizar el mítico método de transferir todos los datos a la vez a uint, mediante la unión.

Además, las cadenas también deben convertirse a uint mediante la unión.

Elcódigo anterior convierte varios tipos a la vez (incluyendo no sólo cadenas, sino una matriz de cadenas) a uint y viceversa.

Pero no creo que sea útil en esta discusión.


SZY Si realmente quieres usar cadenas.

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

Bibliotecas: HistoryTicks

fxsaber, 2018.12.04 09:11

// Пример передачи/обмена данных между программами через поле комментария чартов

#include <fxsaber\HistoryTicks\Data_String.mqh> // https://www.mql5.com/ru/code/20298

void OnStart()
{
  int ArrayIn[] = {0, 1, 2, 3, 4, 5};  
  ChartSetString(0, CHART_COMMENT, DATA_STRING::ToString(ArrayIn));    // Записали данные в комментарий чарта

  int ArrayOut[];    
  DATA_STRING::FromString(ChartGetString(0, CHART_COMMENT), ArrayOut); // Прочли данные из комментария чарта
  
  ArrayPrint(ArrayOut);
}
 
fxsaber:

Elcódigo anterior traduce varios tipos a la vez (incluyendo no sólo cadenas, sino una matriz de cadenas) a uint y viceversa.

Pero no creo que sea útil en esta discusión.

Entonces, ¿se puede traducir un array de cadenas a uint a través de la unión?

¿Y es más rápido que medianteStringToChar()?

Si puede, ponga un ejemplo pequeño y sencillo. No puedo entender su código.

 
Реter Konow:

¿Así que puedes convertir un array de cadenas en uint mediante la unión?

¿Y es más rápido queStringToChar()?

Si es posible, ponga un ejemplo pequeño y sencillo. No puedo entender su código.

El ejemplo estaba en este hilo aquí.

Para reproducirlo, es necesario enlazar con la biblioteca a la que se hace referencia en el código de ejemplo.

Мой подход. Ядро - Движок.
Мой подход. Ядро - Движок.
  • 2018.12.19
  • www.mql5.com
В этой ветке, я хочу рассказать о своем подходе в программировании. Заранее предупреждаю, - здесь не будет обсуждений GUI...
 
fxsaber:

...

ZS Si realmente quieres recorrer las líneas

¿Cuál es el tamaño máximo de los comentarios?

 
Реter Konow:

Lo has escrito todo bien.

Pero los "hacks" son nuestro todo)).

En el probador, en el modo de optimización, el enlace entre el Asesor Experto y el motor no funciona. No lo necesitas.


Para un intercambio significativo de valores de parámetros en los eventos, el EA y el motor deben enviarse mutuamente datos de hasta 2000 caracteres. Esto no es demasiado. Pero tampoco es poco.


El hack más conveniente es el número 1.

con este "hack más fácil de usar", es posible pisar el "rastrillo de los niños", es decir, las plantillas que son muy queridas por los usuarios y que se utilizan al recargar.
 
fxsaber:
...


ZS Si realmente quieres recorrer las líneas

El comentario del gráfico tiene un tamaño limitado. ¿O no? Me he topado con él.

 

Otra pregunta seria.

Yo no lo he probado, pero hay dudas sobre la eficacia del intercambio rápido a través de recursos.

Intercambio rápido, - 16 milisegundos de ida y vuelta de forma constante.

¿No se sobrecargará el disco?

 
Maxim Kuznetsov:
Con este "hack más conveniente" se puede pisar un "rastrillo infantil", es decir, las plantillas, muy favoritas por los usuarios y utilizadas en la recarga.

Por favor, explique.

ZS. Los objetos con nombres especiales se utilizarán para la comunicación. Para evitar la coincidencia con los objetos del usuario.