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

 
Alexey Viktorov #:

Estúpido en el segundo intento. Al parecer, la hora ha llegado por la noche.

No lo he hecho bien, pero no sé cómo dividir el instrumento en monedas.

Y hay una probabilidad de igualdad en el medio, no la vi a primera vista, pero es mejor hacer una búsqueda completa de la igualdad de los nombres de las divisas en el instrumento de la 2ª a la 3ª posición. O cortar la primera y la última posición y buscar en los 4 dígitos restantes)

 
Valeriy Yastremskiy #:

A B C D es correcto, pero no entiendo cómo dividir el instrumento en monedas.

Y hay una probabilidad de igualdad en el medio, no la vi de inmediato, pero es mejor hacer una búsqueda completa de la igualdad de los nombres de las divisas en el instrumento de la 2ª a la 3ª posición. O cortar la primera y la última posición y buscar en los 4 caracteres restantes).

No, me quedé tonto en el segundo intento sólo en las 4 condiciones. Al fin y al cabo, para la tarea no importa en qué posición se encuentre el elemento deseado, en el cero o en el tercero, lo principal es que se encuentre o no. En consecuencia, hay dos condiciones, una para la moneda base y otra para la segunda moneda.

 
Alexey Viktorov #:

No, me quedé mudo en el segundo intento sólo en las 4 condiciones. Al fin y al cabo, para la tarea no importa en qué posición se encuentre el elemento de búsqueda, cero o tercera, lo principal es si se encuentra o no. En consecuencia, hay dos condiciones, una para la moneda base y otra para la segunda.

Así que excluí la igualdad media de la segunda o tercera posición del instrumento. Si no se excluye, entonces es correcto, 2 condiciones.

 
Valeriy Yastremskiy #:

Bueno, yo excluía la igualdad del medio por lo tanto, de la segunda o tercera posición del instrumento. Si no excluye, tiene razón, 2 condiciones.

Sigo sin entender qué significa "igualdad de puntos medios".

Señal en el EURUSD

Una orden EURJPY - busque EUR y encuéntrelo, es cierto. No es necesario comprobar la segunda condición.

GBPJPY - busca el EUR, no lo encuentra. busca el USD, no lo encuentra, los lanzamientos son falsos. Total dos condiciones.

 
Alexey Viktorov #:

Sigo sin entender qué es un "medio igual".

Señal en el EURUSD

Orden en EURJPY - búsqueda de EUR y encontrar, la expulsión verdadera. No es necesario comprobar la segunda condición.

GBPJPY - busca el EUR, no lo encuentra. busca el USD, no lo encuentra, los lanzamientos son falsos. Total dos condiciones.

EURJPY es igual entre URJP

GBPJPY entre BPJP

Estoy de acuerdo, es un caso raro. Pero es posible, a juzgar por el gran número de instrumentos.

 
Valeriy Yastremskiy #:

Igualdad EURJPY entre URJP

GBPJPY entre BPJP

Estoy de acuerdo, es un caso raro. Pero es posible, a juzgar por el gran número de instrumentos.

No, prefiero quedarme en mi onda. Me cuesta entender por qué...

 

¿Cómo funciona el constructor en las estructuras?

struct as{
  int a,
      b,
      c;
    void as(){
    b=0;c=0;
    a=b+c;
    }  
 };
as sir;
 

¡Hola! Me estoy devanando los sesos.

Quien no sea difícil, por favor, que ayude con los comentarios.


1. ¿Cuál es el propósito de la variable "bb" y, en consecuencia, del operador if (bb == 0) bb = i; ?


2. if ((Time[i]>=BeginDateCalc && Time[i]<=EndDateCalc && NumberOfBars<=0)

|| (NúmeroDeBarras>0 && NúmeroDeBarras>=i))

¿Cómo puede ser NumberOfBars <= 0 y para qué?


3. s += (Alto [i] - Bajo [i]) / Punto;

¿Para qué sirve la división por puntos?


4. Por la condición del bucle for (i = Bares; i > 0; i--) el recuento va de la barra "más antigua" a la "más joven".

¿Por qué la variable b++ se incrementa, pero no se decrementa?

//+----------------------------------------------------------------------------+
//|                                                          AverageRange.mq4  |
//|                                                    Ким Игорь В. aka KimIV  |
//|                                                       http://www.kimiv.ru  |
//|                                                                            |
//|  14.09.2005  Скрипт для расчёта:                                           |
//|              средней волатильности инструмента High-Low                    |
//|              Возможность использования заданного количества баров          |
//+----------------------------------------------------------------------------+
#property copyright "Ким Игорь В. aka KimIV"
#property link      "http://www.kimiv.ru"
#property  show_inputs

extern datetime BeginDateCalc = D'2013.01.01';
extern datetime EndDateCalc   = D'2013.12.31';
extern int      NumberOfBars  = 100;         


//+----------------------------------------------------------------------------+
//|  script program start function                                             |
//+----------------------------------------------------------------------------+
void start() {
   int    i;           //счётчик
   int    b  = 0;      //использовано баров
   int    bb = 0;      //?????????????????????
   int    s =  0;      //сумма всех значений High - Low
   string st = "";     //строка вывода на экран    

  for (i = Bars; i > 0; i--) {
    
    if ((Time [i] >= BeginDateCalc && Time [i] <= EndDateCalc && NumberOfBars <= 0)
    || (NumberOfBars > 0 && NumberOfBars >= i)) {
      
      if (bb == 0) bb = i;
      s += (High [i] - Low [i]) / Point;
      
      b++;
    }
  }

  st =      "Начало: " + TimeToStr (Time [bb], TIME_DATE | TIME_MINUTES) + "\n";        // "/n" - это перенос строки
  st = st + "Конец: " + TimeToStr (Time [bb - b + 1], TIME_DATE | TIME_MINUTES) + "\n";
  st = st + "Использовано баров: " + b + "\n";
  st = st + "Средняя волатильность: " + s / b + " п.\n";
  
  Comment (st);
}
//+----------------------------------------------------------------------------+
 

El bb contiene el índice de la barra de la primera condición activada. Este índice se utiliza para calcular la hora de inicio del cálculo.

NumberOfBars - esta variable es establecida por el usuario, y este tipo no es confiable y puede establecer un valor negativo. Quizás, la lógica es que si NumberOfBars es no positivo, el cálculo se realiza entre la fecha de inicio y la de finalización, mientras que si es positivo, entonces se calcula por el número de velas establecidas con esta variable.

El Punto se divide en puntos (1,01051-1,01000)/Punto=51 para convertir los valores de la parte fraccionaria en puntos.

La variable bb después de cero sólo se modifica una vez durante todo el funcionamiento del script. if (bb == 0)

 
Aleksei Stepanenko #:

El bb contiene el índice de la barra de la primera condición activada. Este índice se utiliza para calcular la hora de inicio del cálculo.

NumberOfBars - esta variable es establecida por el usuario, y este tipo no es confiable y puede establecer un valor negativo. Tal vez, la lógica es que si NumberOfBars es no positivo, el cálculo se realiza entre las fechas de inicio y fin.

Pero el punto se divide para transferir los valores de la parte fraccionaria a los puntos 0,00051/Punto=51

La variable bb después de cero sólo se modifica una vez durante toda la operación del script.

Para ser honesto, no entiendo la lógica de Kim; por qué las condiciones de tiempos de barra que exceden el valor especificado y el número de barras calculadas con O el número de barras calculadas es mayor que el número de barras Barz)) Y al mismo tiempo sólo corrige los parámetros personalizados)

Y ni siquiera muestra una alerta de que el usuario ha metido la pata)