Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 635

 
Top2n:

Esta función devuelve el número de celdas de la matriz, no el número de celdas llenas.

Sólo un bucle te ayudará. Repasa y cuenta
 

Un consejo para un novato, por favor.

Mi tarea es crear una sub-ventana (sub-ventanas) de un Asesor Experto en la ventana del gráfico a la que está unido.

He buscado en todo, pero no he encontrado cómo hacerlo. Puedes crear/editar objetos

subventanas que ya han sido creadas por otros indicadores, pero no tengo lo que necesito...

¿Cómo puedo salir de esta situación?

 
boroda4:

Un consejo para un novato, por favor.

Mi tarea es crear una sub-ventana (sub-ventanas) de un Asesor Experto en la ventana del gráfico a la que está unido.

He buscado en todo, pero no he encontrado cómo hacerlo. Puedes crear/editar objetos

subventanas que ya han sido creadas por otros indicadores, pero no tengo lo que necesito...

¿Cómo puedo salir de esta situación?


Echa un vistazo al artículo, tal vez encuentres algo
 
Vinin:

Sólo un ciclo te ayudará. Repasa y cuenta.

¿Pueden decirme cómo calcular el número de celdas llenas en una matriz?

La matriz contiene los precios de la línea de tendencia, relativos a la barra actual.

 sch=ObjectsTotal(OBJ_TREND);//количество трендовы линий
for(int s=0;s<sch;s++) 
 {
 
// ArraySort(masS,WHOLE_ARRAY,0,MODE_DESCEND);
// ArraySort(masB,WHOLE_ARRAY,0,MODE_DESCEND);
  
   DWnem=ObjectName(s); //Текущее имя объекта
   DW="downtrendline"+IntegerToString(s);//Для фильтрации запроса
   DW2="uptrendline"+IntegerToString(s);//
  if(DWnem="")//если объекта уже нет, то обнуляем ячейку массива
   {
   masS[s]=0;
   masB[s]=0;
   }
 if(DWnem=DW)//если имя совпадает с фильтром, то запоминаем в массив
{
  if(ObjectGet(DWnem,OBJPROP_COLOR)==Goldenrod) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
  if(ObjectGet(DWnem,OBJPROP_COLOR)==Gainsboro) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
  if(ObjectGet(DWnem,OBJPROP_COLOR)==White) { 
   masS[s]=ObjectGetValueByShift(DWnem,1);}
}   
for(int a=0;a<20;a++)// ну а тут счетчик, чтоб посчитать сколько ячеек записано в масив { if(mas[a]>0) sch++; } Как остановить счетчик?

No puedo entenderlo.

No consigo descifrarlo y ya está, ¡¡¡ayuda por favor!!!

 

¿Pueden decirme cómo obtener la señal de terminación del TerminalTester en el terminal?

int start()
   {
    //---------------------------------- Из Терминала запустим ТерминалТестер -------------------------
    Start   = ShellExecuteW(0, "Open", "terminal.exe", "D:\\Alpari_Terminal_Tester\\tester\\optimise.ini", "D:\\Alpari_Terminal_Tester", 3);
    while(STOP)
        {
         //------ Функция запроса проверки состояния ТерминалТестера ------
         // STOP=?????????????????????????????????????????????????;
         Sleep(1000);
        }
    return(0);
   }
 
Top2n:

¿Pueden decirme cómo calcular el número de celdas llenas en una matriz?

La matriz contiene los precios de la línea de tendencia, relativos a la barra actual.

No puedo entenderlo.

No puedo resolverlo y ya está, ¡¡¡ayuda por favor!!!

Pruébalo así:

int limit = ...; //до какого числа нужно
MathMin(sch++,limit); //если это будет работать, не пробовал

Tal vez funcione. Buena suerte.

 
Top2n:

¿Pueden decirme cómo calcular el número de celdas llenas en una matriz?

La matriz contiene los precios de la línea de tendencia, relativos a la barra actual.

No puedo entenderlo.

No consigo descifrarlo y ya está, ¡¡¡ayuda por favor!!!


Probablemente, es necesario anular el contador en el tiempo, por lo que no se enrolla más, y contó de nuevo desde cero?

Las funciones kilométricas no son buenas, es mejor poner piezas completas de acciones en funciones separadas, incluso si algunas de ellas son llamadas sólo una vez. Y es mejor llamar a estas funciones por separado desde la función principal.

¿Este recuento servirá?

#property strict

/******************************************************************************/
uint getFilledCellsNumber(double &array[]) { // Массив принимается по ссылке, то есть, НЕ копируется
  uint cnt = 0;

  for (int i = 0, limit = ArraySize(array); i < limit; i++) {
    if (array[i] > 0) {
      cnt++;
    }
  }

  return cnt;
}

/******************************************************************************/
void OnStart() {
  double a[] = {0, 1.2, 1.3, 0, 1.1};
  uint filledCellsNumber = getFilledCellsNumber(a); // Массив передаётся по ссылке, то есть, НЕ копируется

  Print("Number of filled cells: ", filledCellsNumber);
}

Cuando lo pongo en marcha, me sale lo siguiente:

00:24:46 Script 1 EURUSDm,H1: loaded successfully
00:24:46 1 EURUSDm,H1: initialized
00:24:46 1 EURUSDm,H1: Number of filled cells: 3
00:24:46 1 EURUSDm,H1: uninit reason 0
00:24:46 Script 1 EURUSDm,H1: removed

Parece que cuenta bien.

 

Hola.

Al compilar un programa escrito en 2012, aparece una advertencia:

posible pérdida de datos debido a la conversión de tipo FinBuy1531.mq4 144 7

¿Qué significa y cómo puedo evitarlo?

P.D. El programa funciona normalmente en el probador.

 
simpleton:

¿Quizás el contador debería ponerse a cero a tiempo para no sumar más y volver a contar desde cero?

Las funciones kilométricas no son buenas, los trozos completos de acciones se colocan mejor en funciones separadas, incluso si algunas de ellas sólo se llaman una vez. Y desde la función principal llamar a los separados.

¿Funcionará este recuento?

Cuando lo pongo en marcha, me sale lo siguiente:

Parece que cuenta correctamente.


OOO muchas gracias!!!) Funciona muy bien en general.

Gracias a todos por su ayuda).

 
Shurkin:

Hola.

Al compilar un programa escrito en 2012, aparece una advertencia:

posible pérdida de datos debido a la conversión de tipo FinBuy1531.mq4 144 7

¿Qué significa y cómo puedo evitarlo?

P.D. El programa funciona normalmente en el probador.

Es necesario realizar correctamente la conversión de tipo en el código.