Errores, fallos, preguntas - página 310

 

¿En qué se diferencia?

CHART_WIDTH_IN_BARS Ширина графика в барах
от
CHART_VISIBLE_BARS Количество баров на графике, доступных для отображения
 
Urain:

¿En qué se diferencia?

Puede haber un campo vacío a la derecha, si se establece una sangría. En este caso CHART_VISIBLE_BARS mostrará un valor menor que CHART_WIDTH_IN_BARS
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Urain:

¿En qué se diferencia?

Literalmente diferente.


 
Rosh:
¿Cuál es la pregunta?

1. tomar la secuencia de comandos retorcidos al puesto y ejecutar en el gráfico. El script debe copiar un número determinado de barras y realizar el desenrollado de las 20 más antiguas.

Se utiliza esta forma (entiendo que no hay comprobaciones y todo tipo de trampas para los errores, pero aún así)

int  CopyRates(
   string           symbol_name,       // имя символа
   ENUM_TIMEFRAMES  timeframe,         // период
   int              start_pos,         // откуда начнем 
   int              count,             // сколько копируем
   MqlRates         rates_array[]      // массив, куда будут скопированы данные
   ); 

Así que con esos parámetros que he especificado (número de barras y M1) el script se ejecuta pero a veces se niega a funcionar NORMALMENTE. Ocurre a partir de un determinado número de barras (tengo más de 368700).

A 368800 devuelve muchas menos barras (pero siempre un número diferente - 368732 / 368735 / 368736 o algo por el estilo).

Pero no siempre funciona correctamente incluso a 360000, hubo casos en los que sólo copió 10000 barras.

2. La variante en la que se especifican dos fechas me chocó mucho. No sólo no aceptaba el 0 como primera fecha (lo que tiene sentido en mi opinión) sino que además copiaba hasta el 10000.

Aunque con 0 tan int como start_time es comprensible (tengo experiencia), todo es cuestión de sobrecarga de funciones y de que el compilador "no entiende" ciertas cosas. Pero por eso 10000 barras es una pregunta aparte que se llama "en un millón".

Las barras de 10000 minutos tal y como las entendemos no irán más allá de 2011, si entiendo bien, no irán más allá de febrero (y como queda claro por todo lo anterior al menos 360000 se cargan seguro).

int  CopyRates(
   string           symbol_name,       // имя символа
   ENUM_TIMEFRAMES  timeframe,         // период
   datetime         start_time,        // с какой даты
   datetime         stop_time,         // по какую дату
   MqlRates         rates_array[]      // массив, куда будут скопированы данные
   ); 

PS

Al mismo tiempo, la velocidad de la normal y de la "buggy" (cuando el script copia sólo 10000 barras) difiere muchas veces.

PPS

Por favor, asegúrese de llevar ciertas secciones de la ayuda (o más bien sus ejemplos) a su conclusión lógica, para evitar la ambigüedad y otras situaciones "tontas".

Los cheques deben colocarse adicionalmente, etc. Además, en este caso no hay referencias cruzadas en las descripciones de los parámetros (al menos en timeframe) y no está claro qué tipo tienen start_time y start_pos. Supongo que la fecha (de lo contrario, ¿por qué el compilador jurar por 0 como start_time).

//Код по третьему варианту, может я что-то упустил?
//Так ругается - 'CopyRates' - ambiguous call to overloaded function
Copied = CopyRates(Symbol(),PERIOD_M1,0,TimeCurrent(),Rates);
//Так нет, но копирует только 10000 баров
Copied = CopyRates(Symbol(),PERIOD_M1,(datetime)0,TimeCurrent(),Rates);
 

¿Es un error o mi falta de habilidad?

void OnStart()
  {
//---
   long chart_id=ChartID();
   ChartSetInteger(chart_id,CHART_AUTOSCROLL,false);   // отключаем автоскролл
   while(!IsStopped())
     {
      //------------------      
      ChartNavigate(chart_id,CHART_END,-2410); // делаем навигацию, поставим константу
      //------------------
      Sleep(500);
      ChartSetString(chart_id,CHART_COMMENT,ChartGetInteger(chart_id,CHART_FIRST_VISIBLE_BAR));
      ChartRedraw(chart_id);// отображаем первый бар чарта после навигации
      Sleep(500);
     }        
  }


El gráfico da tirones al navegar desde la barra cero. He insertado a propósito resbalones entre la navegación y la actualización para resaltar el problema. Pero el fallo existe incluso sin resbalones. Resulta que ChartNavigate() primero mueve el gráfico a cero y luego lo vuelve a mover. Además, no lo hace siempre.

Al menos, el hecho de que el fallo no exista cada vez que se llama a ChartNavigate(), aparece cuando se ejecuta sin resbalones.

Документация по MQL5: Операции с графиками / ChartNavigate
Документация по MQL5: Операции с графиками / ChartNavigate
  • www.mql5.com
Операции с графиками / ChartNavigate - Документация по MQL5
 
Urain:

¿Es un error o mi falta de habilidad?


El gráfico da tirones al navegar desde la barra cero. He insertado a propósito resbalones entre la navegación y la actualización para resaltar el problema. Pero el fallo existe incluso sin resbalones. Resulta que ChartNavigate() primero mueve el gráfico a cero y luego lo vuelve a mover. Además, no lo hace siempre.

Al menos, el hecho de que el fallo no exista cada vez que se llama a ChartNavigate(), aparece cuando se ejecuta sin resbalones.


Pruebe el ejemplo de La función ChartNavigate no funciona, por favor ayude
 

Entonces, ¿qué hay en este ejemplo que sea tan fundamentalmente diferente de mi código?

Es que en tu código la navegación se llama una vez, mientras que yo necesito mantener el gráfico en la barra deseada todo el tiempo (independientemente de las acciones del usuario).

He probado tu ejemplo y he ejecutado mi código sin actualizar el gráfico (aunque es importante para mí porque el programa utiliza muchas transformaciones gráficas), pero tampoco ha funcionado. El idiota sigue siendo. Sigo navegando hasta el mismo punto, y luego navego hasta la barra de cero.

También me parece inaceptable el uso de la navegación desde la barra actual, porque el usuario puede mover el gráfico sin querer mientras el programa está en marcha.

 
Si no está claro de inmediato, permítame explicarlo: el código anterior es un intento de emular un autodesplazamiento en una barra determinada.
 
Interesting:
¿Está la historia escondida?
¡por supuesto que hay una historia, pero no todos los gusanos tienen una historia de propagación!
 
Urain:

Entonces, ¿qué hay en este ejemplo que sea tan fundamentalmente diferente de mi código?

Es que en tu código la navegación se llama una vez, mientras que yo necesito mantener el gráfico en la barra deseada todo el tiempo (independientemente de las acciones del usuario).

Después de revisar tu ejemplo, ejecuté mi código sin refrescar el gráfico (aunque es importante para mí ya que el programa también utiliza un montón de conversiones gráficas), pero tampoco sirvió. El idiota sigue siendo. Sigo navegando hasta el mismo punto, y luego navego hasta la barra de cero.

También me parece inaceptable el uso de la navegación desde la barra actual, porque el usuario puede mover el gráfico sin querer mientras el programa está en marcha.

Tengo el mismo problema con mi indicador, sólo que se redibuja en cuanto llega el tick y no está claro cómo solucionarlo?