Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1196

 

@Oleg

Pedir a los desarrolladores que pongan el número de error como en la Documentación, no está claro por qué está en la Documentación y no se usa en el Editor en la Descripción

https://www.mql5.com/ru/docs/constants/errorswarnings/errorscompile

Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
Документация по MQL5: Константы, перечисления и структуры / Коды ошибок и предупреждений / Ошибки компиляции
  • www.mql5.com
Импортируемая функция не может иметь такого параметра (нельзя передавать указатель, класс или структуру, содержащую динамический массив, указатель, класс и т.д.) Недопустимый возвращаемый тип. Например, такая ошибка будет выдана для функций, импортированных из...
 
Alexandr Sokolov:

simplemente especifica el índice del buffer que se asignará durante la inicialización en SetIndexBufer


No soy bueno programando, no hay un buffer en el código del indicador a través del cual salen los datos

 
edelweiss7:

No soy bueno programando, en el código del indicador no hay ningún búfer por el que salgan los datos

No he profundizado en su código, pero entiendo que dibuja niveles


... necesitas el manejador OnChartEvent

https://www.mql5.com/ru/docs/event_handlers/onchartevent

controlar la creación de nuevos objetos (esCHARTEVENT_OBJECT_CREATE), y si el prefijo del nombre es de su indicador - tomar las propiedades de la línea creada (allí el precio y el tiempo de sus puntos)

Документация по MQL5: Обработка событий / OnChartEvent
Документация по MQL5: Обработка событий / OnChartEvent
  • www.mql5.com
//|                                          OnChartEvent_Sample.mq5 | //|                        Copyright 2018, MetaQuotes Software Corp. | //|                                             https://www.mql5.com | //| Expert initialization function                                   |...
 
Alexandr Sokolov:

No he profundizado en su código, pero entiendo que dibuja niveles


... necesita un controlador de eventos OnChartEvent

https://www.mql5.com/ru/docs/event_handlers/onchartevent

controlar la creación de nuevos objetos (esCHARTEVENT_OBJECT_CREATE), y si el prefijo del nombre es de su indicador - tomar las propiedades de la línea creada (precio y tiempo de sus puntos allí)

Cómo implementar esto en un EA
 

Por favor, ayúdenme a corregir un error que aparece en mi registro:

MQL4 Market: no se han podido cargar los productos (ha fallado la cabecera [12150])

 
El manipulador (mt5, indictaor) maneja las pulsaciones de los botones repetidamente. ¿Cuál podría ser la razón de esto?
 
Yevhenii Levchenko:
El manipulador (mt5, indictaor) maneja las pulsaciones de los botones repetidamente. ¿Cuál puede ser la razón de esto?

redraw - ChartRedraw()

 
Yevhenii Levchenko:
El manejador de eventos (mt5, indictaor) maneja las presiones de los botones algunas veces. ¿Cuál puede ser la razón?

sin un diagrama de muestra de cómo se procesan los eventos es sólo una suposición

Alternativamente, ejecútelo en la carpeta de Indicadores Examle\SimplePanel

y si este código funciona correctamente ... Adivínalo tú mismo ;)

 
Yevhenii Levchenko:
El manejador (mt5, indictaor) maneja las pulsaciones de botón en un intervalo de tiempo. ¿Cuál podría ser la razón de esto?

acaba de hacer el mismo error esta mañana :-)

El botón está adaptado para funcionar en el probador y funciona por sondeo, no completamente en el OnChartEvent.

El error estaba en el tipo de comprobación

if (ObjectGetInteger(....,OBJPROP_STATE)!=state /* это баг, должен быть 0 */) {

    // состояние поменялось

    state=!state;

}

 

Buenos días.

La cuestión es que para la media se calculan las últimas 50 velas.

Pregunta. Que añadir, arreglar en el código para que se calcule una vez y no cada tick. El problema es que en ON-LINE hay una acumulación de valor.

for(int j=rates_total-50-1; j<rates_total-1; j++)
     {
      if(open[j]>close[j])
         candleOC+=open[j]-close[j];
      if(close[j]>open[j])
         candleOC+=close[j]-open[j];
      candleHL+=high[j]-low[j];
      bar+=1;
     }
   if(bar>0)
     {
      filterOC=candleOC/bar;
      filterOC=NormalizeDouble(filterOC,_Digits);
      filterHL=candleHL/bar;
      filterHL=NormalizeDouble(filterHL,_Digits);
     }
//filterHL=0.00500;  //пример среднего значения HL
//filterOC=0.00250;  //пример среднего значения OC
Razón de la queja: