[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 183

 

Hola.

Me pueden decir si es posible calcular la distancia en puntos entre dos macerados.

Mi variante se da a continuación, pero no funciona como se pretendía originalmente.

Gracias de antemano.

  int g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = maHX_slow - maHX_fast;
  Alert (g);
 
nemo811:

Mi variante está abajo, pero no funciona como se pretendía originalmente.

Encontré un error. Aquí hay una versión que funciona:

  double g;
  double maHX_fast=iMA(NULL,fast_maHX_timeframe,fast_maHX_period,0,fast_maHX_method,fast_maHX_price,0);
  double maHX_slow=iMA(NULL,slow_maHX_timeframe,slow_maHX_period,0,slow_maHX_method,slow_maHX_price,0);
  g = (maHX_slow - maHX_fast)/Point;
  Alert (g);
 

Por la tarde....

¿Cómo transferir el valor del precio de cierre de una orden de un terminal a otro, operando en el mismo par de divisas?

 
TANKER:

Buenas tardes....

¿Cómo transferir el valor del precio de cierre de una orden de un terminal a otro, operando en el mismo par de divisas?


Si se pregunta eso, no creo que pueda hacerlo usted mismo.
 

Buenas noches a todos.

Se plantea la siguiente cuestión sobre las matrices.

Supongamos que necesitamos analizar n barras para una determinada fluctuación, seleccionarla, ponerla en un array y trabajar con esto...

A continuación hay algo de código; creo que los comentarios lo explicarán todo.

La lógica es la siguiente:

1. Fijamos el número necesario de barras.

2. Recorre todo el camino en el bucle.

Busca el cumplimiento de la condición especificada(close_1>close_2&close_2<close_3).

4. Si la condición se cumple, entonces calculamos la diferencia dif entre el precio de cierre_1 y el de cierre_2.

Y luego las propias preguntas:

1. ¿Cómo formar correctamente un array y escribir en él valores de diff (por supuesto, la dimensionalidad del array se determina en función del número de valores obtenidos)?

2. Calcular y mostrar el número de elementos de la matriz ?

3. Seleccione, por ejemplo, 3, 6, 7 elementos y calcule su suma.

4. Y por último, por ejemplo, para imprimir/alertar directamente la salida de toda la matriz en lugar de los elementos individuales?

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   //определяем переменные
   int i, bars;
   double close_1, close_2, close_3;//цена закрытия
   double diff;//вычисление разности close_1 и close_2
   double Mas[];//массив куда надо заносить данные
   
   
   //устанавливаем значения переменных
   bars=60;//количество баров для анализа
   
   for(i=1;i<=bars;i++)
   {
      close_1=iClose(NULL,PERIOD_M1,i);
      close_2=iClose(NULL,PERIOD_M1,i+1);
      close_3=iClose(NULL,PERIOD_M1,i+2);
      
      //условие для отбора в массив
      if(close_1>close_2&&close_2<close_3)//если выполняется это условие, тогда
      {
         diff=close_1-close_2; //считаем разность и записываем это дело в массив 
         
         /*
         Собственно вопросы:
         1. Как правильно сформировать массив и записать туда полученные значения diff ???
         2. Посчитать и вывести количество элементов в массиве ???
         3. Выбрать например 3, 6, 7 элемент и посчитать их сумму ???
         4. И последнее, непосредственно вывести например в Print/Alert весь полученный массив, а не только отдельно взятый элемент ???
         */
         
         //Это просто вывод, чтобы удостовериться что наше условие работает, можно потереть... 
         Alert("i ",i," diff: ",DoubleToStr(diff,5));
         
      }
   }


   return(0);
  }
//+------------------------------------------------------------------+
Y aquí hay una imagen para que quede claro, qué condición procesamos. : ))

Gracias de antemano a todos.

 
NickXXX:

Buenas noches a todos.

Ha surgido la siguiente pregunta sobre las matrices.

Supongamos que queremos analizar n barras para una determinada oscilación, seleccionarla, almacenarla en un array y trabajar con esta...

Ríete después del indicador de palabras.

Es más fácil crear un indicador, ya tiene ocho matrices de búfer, poner toda la lógica en él y luego abordar los elementos necesarios a través de iCustom

En print/alert todo el array es algo ilegible, pero mediante la enumeración y la creación de una cadena larga en el bucle es bastante posible.

3. Seleccione, por ejemplo, 3, 6, 7 elementos y calcule su suma.

No bromees con esto o lee la documentación.

double Summa=Mas[3]+Mas[6]+Mas[7];

Lecturas recomendadas https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

 
splxgf:

Ríete después del indicador de palabras.

Es más fácil crear un indicador, ya tiene ocho matrices de búfer, transferir toda la lógica a él, y luego abordar los elementos necesarios a través de iCustom

En print/alert todo el array es un poco ilegible, pero a través de la enumeración y creando una cadena larga en el bucle es bastante posible.

O no te metes en líos así, o te lees la documentación.

double Summa=Mas[3]+Mas[6]+Mas[7];

Lecturas recomendadas https://book.mql4.com/ru/variables/arrays

https://docs.mql4.com/ru/array

Sí, no hace falta que preguntes por la summa). Y aquí no se trata del indicador. Es más bien un ejemplo para poder manejar arrays correctamente.

Ya he visto el artículo recomendado pero no me ha servido para manejar esta cuestión.

Así que mi pregunta sigue siendo pertinente... ¿Cómo se construye un array en este ejemplo? Te agradecería mucho que me dieras el código para mayor claridad. Es más fácil entender de qué estamos hablando.

 

mejor a los indicadores de humo, todos los cálculos están vinculados a las barras, y la numeración de las barras comienza desde cero y la matriz se desplaza en cada nueva barra. El uso de un indicador le permitirá transferir la lógica de trabajo con matrices al sistema, además de añadir capacidades visuales, además de un fácil uso desde un EA.

Haga un indicador, de lo contrario es muy difícil vincular los elementos calculados de la matriz a las barras en el gráfico.

 
splxgf:

mejor a los indicadores de humo, todos los cálculos están vinculados a las barras, y la numeración de las barras comienza desde cero y la matriz se desplaza en cada nueva barra. El uso de un indicador le permitirá transferir la lógica del trabajo con matrices al sistema, además de añadir capacidades visuales, además de un fácil uso desde un EA.

Haga el indicador, de lo contrario será muy difícil vincular los elementos calculados de la matriz a las barras en el gráfico.

Ok, entiendo, es mejor leer todo en el indicador y enviar los valores al Asesor Experto.

Pero el problema aquí es un poco diferente, no puedo llenar el array con datos, muestra ceros. Quiero entenderlo.

De nuevo, utilizando este ejemplo. Vinculando a las barras que tengo, sólo hay que ir secuencialmente a i y trabajar la condición correcta close_1>close_2&close_2<close_3 (sólo por ejemplo).

Y ahora lo más interesante es que hemos calculado diff=close_1-close_2. ¿Cómo poner este valor de diff en el array?

Creo que podemos hacer una variable adicional int n y aumentarla en 1 (n++) en la condición if, obtendremos cuántas veces funcionó la condición y tomaremos este número como dimensión.

Pero aún así, ¿cómo poner el valor de la diferencia en una matriz?

 
NickXXX:

Entiendo, es mejor leer todo en el indicador y enviar los valores al Asesor Experto.

Pero la cuestión es un poco diferente, no puedo rellenar el array con datos, me saca ceros. Quiero entenderlo.

De nuevo, utilizando este ejemplo. Vinculando a las barras que tengo, sólo hay que ir secuencialmente a i y trabajar la condición correcta close_1>close_2&close_2<close_3 (sólo por ejemplo).

Y ahora lo más interesante es que hemos calculado diff=close_1-close_2. ¿Cómo poner este valor de diff en el array?

Creo que podemos hacer una variable adicional int n y aumentarla en 1 (n++) en la condición if, obtendremos cuántas veces funcionó la condición y tomaremos este número como dimensión.

Pero aún así, ¿cómo poner el valor de la diferencia en la matriz?

Mira, probablemente sea un capricho ahora mismo, pero entiendo que estás desconcertado porque estoy usando un script en este ejemplo. ¿Lo decías en serio cuando escribiste lo del indicador? Si es así, entonces hago todos los cálculos dinámicos en un indicador o en un Asesor Experto directamente. Sólo lo he lanzado una vez, lo he mirado y luego he corregido el código))).

La pregunta anterior sigue siendo pertinente. El tema de la matriz no está resuelto).

Razón de la queja: