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

 

¿Por qué no puedes compartir el código?

Estoy recibiendo un error: Uso de DLL detectado

Por favor, indíqueme cómo puedo compartir el código.

He visto esto: https://www.mql5.com/en/code/7673

Y mi código es similar.

Period Converter Optimized
Period Converter Optimized
  • www.mql5.com
Lastest Version: 1.4 2005.12.24  1.4      faster to detect if data changed by removing float point  operations, added support to output CSV file in real time.                             OutputCSVFile = 0 means no CSV.                             OutputCSVFile = 1 means CSV + HST.                             OutputCSVFile = 2 CSV only, no HST...
 

Hola. ¿Qué estoy haciendo mal?

Hay un indicador de histograma. Muestra la diferencia en el número de ticks hacia arriba y hacia abajo.

Estoy tratando de utilizar los valores del indicador en 1, 2 y 3 barras en mi EA.

double tbs1=iCustom(Symbol(),0,"tickbs",1,1);

double tbs2=iCustom(Symbol(),0,"tickbs",1,2);

double tbs3=iCustom(Symbol(),0,"tickbs",1,3);

En el probador, obtengo un error: tickbs EURUSD,M1: array out of range in 'tickbs.mq4' (26,19)

#property copyright "tickbs"
#property link      ""
#property version   "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers    1
#property indicator_color1     clrGreen
//--- input parameter
extern color   ClrUpUp        = clrGreen;
extern int     HistWidth      = 2;
//--- buffers
double BufB[];
double dOldPrice, dNewPrice;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   IndicatorBuffers(1);
   SetIndexBuffer(0,BufB);  
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrUpUp);       
   SetIndexLabel(0,"Hs");
   
   dOldPrice=Close[0];
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   dNewPrice=Close[0];
   if (dNewPrice>dOldPrice){
      BufB[0]=BufB[0]+1;
      dOldPrice=dNewPrice;
   }
   else 
      if (dNewPrice<dOldPrice){
         BufB[0]=BufB[0]-1;
         dOldPrice=dNewPrice;
      }
   return(rates_total);
  }
//+------------------------------------------------------------------+

Gracias.

 
Oleg Bondarev:

Hola. ¿Qué estoy haciendo mal?

Hay un indicador de histograma. Muestra la diferencia en el número de ticks hacia arriba y hacia abajo.

Estoy tratando de utilizar los valores del indicador en 1, 2 y 3 barras en mi EA.


En el probador, obtengo un error: tickbs EURUSD,M1: array out of range in 'tickbs.mq4' (26,19)

Gracias.

Los buffers se indexan desde cero.
 
Igor Makanu:

una y otra vez.... Una clase es ante todo un tipo de datos, como int, double...

¿Quieres un array de este tipo de datos? - declarar un array, si el array es dinámico, entonces redimensionarlo, entonces inicializar CADA ELEMENTO con los datos necesarios - necesitas punteros, entonces inicializarlos con punteros a la clase, necesitas instancias de la clase, entonces cada elemento del array no será un puntero, sino el propio objeto

esa es la esencia de la POO, cualquier clase es ante todo un tipo de datos de usuario.... No sé qué decir al respecto, pero la metodología es la misma que con un tipo de datos regular, pero lo que escribirás dentro de la clase es una cuestión personal, pero la inicialización de una nueva instancia siempre comenzará con un constructor, y qué constructor - por defecto, con parámetros o sin parámetros - puedes elegir cómo inicializar el objeto...... ugh, pero sigue leyendo libros, no hay manera de hacerlo de esta manera

Por favor, aconsejar que leer sobre OOP con ejemplos para MT4. O en general, con ejemplos. La sintaxis y la lógica del lenguaje son difíciles de entender, y el manual del lenguaje no siempre es claro hasta el final.

 
Valeriy Yastremskiy:

Por favor, aconsejar sobre lo que hay que leer sobre OOP con ejemplos para MT4. O con ejemplos en general. La sintaxis y la lógica del lenguaje son difíciles de entender, y el manual del lenguaje no siempre es completamente claro.

Vaya a la sección de artículos aquí y navegue - hay mucho sobre OOP, incluso para principiantes.

Статьи по MQL5
Статьи по MQL5
  • www.mql5.com
Статьи по программированию на языке MQL5
 
Artyom Trishkin:

Por favor, vaya a la sección de artículos aquí y navegue a través de ellos - hay una gran cantidad de artículos sobre OOP incluyendo aquellos para principiantes.

Gracias. Eso es útil. Alguien podría necesitarlo.

PLO

https://www.mql5.com/ru/articles/357

https://www.mql5.com/ru/articles/703

https://www.mql5.com/ru/articles/116

https://www.mql5.com/ru/articles/70

https://www.mql5.com/ru/articles/351

GA

https://www.mql5.com/ru/articles/55

MQL4

https://www.mql5.com/ru/articles/1483

A mí también me ha gustado)))

https://www.mql5.com/ru/articles/1499


También una pregunta, cuando haces clic en los artículos, aparecen 18 páginas de artículos y el título:

Artículos sobre la programación en MQL4 y MQL5

Cuando hago clic en la segunda página, el MQL4 desaparece. Cuando presiono en MT4, aparecen 6 páginas. Y no están en la selección inicial.


Объектно-ориентированный подход к построению мультитаймфреймовых и мультивалютных панелей
Объектно-ориентированный подход к построению мультитаймфреймовых и мультивалютных панелей
  • www.mql5.com
В статье рассказывается о том, как объектно-ориентированный подход может быть использован для создания мультитаймфреймовых и мультивалютных индикаторов для MetaTrader 5. Главной целью является построение универсальной панели, которая может быть использована для отображения различных типов данных (цены, их изменения, значения индикаторов...
 
Alexey Viktorov:
Los buffers se indexan desde cero.

Gracias.

 
Por favor, que alguien responda a mi consulta en el foro: https://www.mql5.com/ru/forum/336385
Как я могу скопировать symbols.raw и symgroups.raw в новый файл с дополнительной группой и символом в соответствующей группе MQL4/MT4?
Как я могу скопировать symbols.raw и symgroups.raw в новый файл с дополнительной группой и символом в соответствующей группе MQL4/MT4?
  • 2020.04.01
  • www.mql5.com
Я хочу знать, как я могу создать новый файл, скажем symbols_extra.raw и symgroups_extra.raw на MQL4, используя существующие symbols.raw и symgroups...
 
Valeriy Yastremskiy:

al hacer clic en la segunda página de MQL4 desaparece. Al hacer clic en MT4 aparecen 6 páginas. Y no están en la selección inicial.

MQL4 y MQL5 son idénticos en un 99% (sin SQlITE, OpenCL, DirectX), así que puedes sentirte libre de leer los artículos en MQL5, pero teniendo en cuenta que en los terminales 4 y 5 el trabajo con las órdenes es diferente y hay matices de trabajo con las series temporales

 
Igor Makanu:

Como MQL4 y MQL5 son idénticos en un 99% (sin SQlITE, OpenCL y DirectX), puedes leer los artículos sobre MQL5, pero teniendo en cuenta que en los terminales 4 y 5 el trabajo con las órdenes es diferente y hay matices de trabajo con las series temporales.

No es el caso, no hay artículos sobre mql4 en la selección inicial. Esto es engañoso. Por cierto la misma lógica está en kodobase. Pero las cabeceras no cambian allí. Tuve que utilizar el método de la tripa para averiguarlo). Gracias, vamos a leer)))

Razón de la queja: