[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. No puedo ir a ningún sitio sin ti - 4. - página 522

 
MaxZ:

Aquí está el famoso idnikator.

¿Puedes conseguir una foto como esta? :))))))



Aquí está.

 
Aquí está la página del libro de textohttps://docs.mql4.com/ru/array/ArrayCopy
Eso dice:
ArrayCopy(array2,array1,0,Bars*6-60,60);
// теперь array2 содержит 10 последних баров из истории (имеется в виду, что последний бар - это текущий бар, бар с индексом [0])

¿Por qué el array2 contiene los últimos 10 compases?
Porque Bars*6 - 60 no devolverá el valor 10. No noto ninguna lógica en absoluto.
Por ejemplo, hay 1000 barras en el historial. Entonces Bares*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. ¿Dónde están los últimos 10 compases?
 
hoz:
Aquí está la página del libro de textohttps://docs.mql4.com/ru/array/ArrayCopy
Eso dice:

¿Por qué el array2 contiene los últimos 10 compases?
Porque Bars*6 - 60 no devolverá el valor 10. No noto ninguna lógica en absoluto.
Por ejemplo, hay 1000 barras en el historial. Entonces Bares*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. ¿Dónde están los últimos 10 compases?

¡Me sorprendes de nuevo! ¡Los llamados últimos 10, desde 0 hasta la décima barra que tenemos en el gráfico en contacto con el precio! ¡Olvídate de los compases treinta y cinco mil de la historia! Ya los hemos revisado y sólo los necesitamos para el probador. Y necesitamos los más recientes, partiendo de cero, y por supuesto, los nuevos en el futuro: ¡hacia allí vamos! ;))
 
borilunad:

¡Me sorprendes de nuevo! ¡Los llamados últimos 10, desde 0 hasta la décima barra que tenemos en el gráfico en contacto con el precio! ¡Olvídate de los compases trigésimos y quinientos de la historia! Ya los hemos revisado y sólo los necesitamos para el probador. Y necesitamos los últimos, partiendo de cero, y por supuesto, los nuevos en el futuro, ¡hacia allí vamos! ;))

Esto último, es decir, más cerca del precio actual, ya lo he entendido. Pero este trozo de códigoBars*6 - 60 no lo entiendo. ¿Qué va a devolver? Quiero entender cómo se puede calcular lógicamente. ¿Puedo pedirle que se explique? Quizás sea fácil para alguien, pero yo no soy programador por formación, así que me cuesta entender este flujo de información. Estoy leyendo el tutorial, y poco a poco voy preguntando las dudas que me surgen. Espero que las preguntas sean pronto más relevantes que ahora.
 
hoz:
Aquí está la página del libro de textohttps://docs.mql4.com/ru/array/ArrayCopy
Eso dice:
¿Por qué el array2 contiene los últimos 10 compases?
Porque Bars*6 - 60 no devolverá el valor 10. No noto ninguna lógica en absoluto.
Por ejemplo, hay 1000 barras en el historial. Entonces Bares*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. ¿Dónde están los últimos 10 compases?
5940 -Índice inicial de la matriz original para copiar los últimos 10 compases (bar - 6 índices).
 

Roll:
5940 -El índice de inicio del array inicial para copiar los últimos 10 compases (el compás tiene 6 índices).

Estimados expertos, ¿no hay un error en el libro de texto?

Este es mi razonamiento:

Al principio del código se llama a la funciónint ArrayCopyRates que copia los datos de las barras del gráfico actual en un array bidimensional de tipo RateInfo[][6] y devuelve el número de barras copiadas o -1 en caso de fallo según el ejemplo de esta función:

double array1[][6];
ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
Print("Текущий бар ",TimeToStr(array1[0][0]),"цена открытия ", array1[0][1]);

la barra actual es la barra con índice 0-0 , por tanto, volviendo al código original, copiamos el elemento con índice 0-0 (la barra actual) del array1 , a array2 con índice 0-0, obtenemos las últimas 10 barras (donde la última barra es la actual, la de índice [0]), lo que es contrario a lo que escribimos en el tutorial... así que copiando el elemento con índice Bars*6-60,60 del array1 en el array2 con índice 0 obtenemos la información sobre las barras del historial.

 

Hola.

Tengo un indicador personalizado.

Estoy escribiendo un EA... y tengo una pregunta... ¿cómo acceder a mi indicador? En concreto, toma los datos de la barra especificada (en mi caso, necesito tomar la segunda barra). Tengo windowsPriceMax, pero por lo que he entendido, sólo muestra el último valor del gráfico de la subventana y no está claro, si por ejemplo tengo 3 líneas en el indicador, ¿qué mostrará?

 
Tragedy:

Hola.

Tengo un indicador personalizado.

Estoy escribiendo un EA... y tengo una pregunta... ¿cómo acceder a mi indicador? En concreto, toma los datos de la barra especificada (en mi caso, necesito tomar la segunda barra). Recibí windowsPriceMax, pero por lo que entiendo, sólo emite el último valor del gráfico y no entiendo si tengo 3 líneas en el indicador, ¿qué emitirá?



double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

Cálculo del indicador personalizado especificado. El indicador personalizado debe ser compilado (un archivo con extensión EX4) y ubicado en el directorio terminal_experts\indicators.
Parámetros:

símbolo - nombre del símbolo del instrumento, sobre cuyos datos se calculará el indicador. NULL significa el símbolo actual.
timeframe - Periodo. Puede ser uno de los períodos de la carta. 0 significa el período del gráfico actual.
nombre - Nombre personalizado del indicador.
... - Lista de parámetros (si es necesario). Los parámetros pasados deben corresponder con el orden de declaración y el tipo de variables externas (extern) del indicador personalizado.
mode - Índice de la línea indicadora. Puede ser de 0 a 7 y debe corresponder al índice, utilizado por una de las funciones SetIndexBuffer.
Desplazamiento - Índice del valor recibido del buffer del indicador (desplazamiento relativo a la barra actual por el número especificado de períodos hacia atrás).

 

Gracias. Eso ayudó. Pensaba que sólo eran los indicadores del iMac*** iStoch*** que venían preinstalados.

 
Lisi4ka330:

Estimados expertos, ¿no hay un error en el libro de texto?

Este es mi razonamiento:

Al principio del código se llama a la funciónint ArrayCopyRates que copia los datos de las barras del gráfico actual en un array bidimensional de tipo RateInfo[][6] y devuelve el número de barras copiadas o -1 en caso de fallo según el ejemplo de esta función:

la barra actual es la barra con índice 0-0 , por lo tanto, volviendo al código original, copiamos el elemento con índice 0-0 (la barra actual) del array1 , a array2 con índice 0-0, obtenemos las últimas 10 barras (donde la última barra es la actual, la de índice [0]), lo que es contrario a lo que escribimos en el tutorial... y respectivamente, copiando el elemento con índice Bars*6-60,60 del array1 en el array2 con índice de inicio del elemento 0 obtenemos la información sobre las barras del historial.


Sin hacer declaraciones a bombo y platillo, vamos a comprobarlo en la práctica:

//+------------------------------------------------------------------+
//|                                                       массив.mq4 |
//|                                                  Copyright 2012, |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012,"
#property link      "https://forum.mql4.com/ru/46980/page525"
#property show_inputs
extern string s=" -----номер бара--------";
extern int a=9;//номер 10 последних баров 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
{if(a<10)
{double array1[][6];double array2[10][6];
  ArrayCopyRates(array1);
  ArrayCopy(array2,array1,0,Bars*6-60,60);
// теперь array2 содержит 10 последних баров из истории(имеется в виду,что последний бар-это текущий бар,бар с индексом [0])
Alert("Контрольный бар - ",a," время - ",TimeToStr(array2[a][0]),"  цена открытия - ",array2[a][1]);}return(0);}
Razón de la queja: