Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 635

 
Top2n:

Esta função retorna o número de células da matriz, não o número de células preenchidas.

Somente um loop o ajudará. Passar e contar
 

Alguns conselhos para um novato, por favor!

Minha tarefa é criar uma subjanela (subjanela) a partir de um consultor especializado na janela do gráfico a que está anexado.

Procurei em tudo, mas não descobri como fazer isso. Você pode criar/editar objetos

subwindows que já foram criadas por outros indicadores, mas não tenho o que preciso...

Como posso sair desta situação?

 
boroda4:

Alguns conselhos para um novato, por favor!

Minha tarefa é criar uma subjanela (subjanela) a partir de um consultor especializado na janela do gráfico a que está anexado.

Procurei em tudo, mas não descobri como fazer isso. Você pode criar/editar objetos

subwindows que já foram criadas por outros indicadores, mas não têm o que eu preciso...

Como posso sair desta situação?


Dê uma olhada no artigo, talvez você encontre algo
 
Vinin:

Somente um ciclo o ajudará. Passar e contar.

Você pode me dizer como calcular o número de células preenchidas em uma matriz?

A matriz contém preços de linha de tendência, em relação à barra atual.

 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++; } Как остановить счетчик?

Eu não consigo entender.

Eu não consigo entender pela minha vida e é isso, por favor, ajude-me!!!

 

Você pode me dizer como obter o sinal de terminação do TerminalTester no 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:

Você pode me dizer como calcular o número de células preenchidas em uma matriz?

A matriz contém preços de linha de tendência, em relação à barra atual.

Eu não consigo entender.

Eu não consigo entender pela minha vida, me ajude por favor!!!

Experimente assim:

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

Talvez funcione. Boa sorte!

 
Top2n:

Você pode me dizer como calcular o número de células preenchidas em uma matriz?

A matriz contém preços de linha de tendência, em relação à barra atual.

Eu não consigo entender.

Eu não consigo entender pela minha vida e é isso, ajude-me por favor!!!


Provavelmente precisa anular o contador a tempo, para que não seja mais difícil, e contar novamente do zero?

As funções quilométricas não são boas, é melhor colocar peças completas de ações em funções separadas, mesmo que algumas delas sejam chamadas apenas uma vez. E é melhor chamar essas funções separadas da função principal.

Essa contagem 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);
}

Quando o começo, recebo o seguinte:

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 conta bem.

 

Olá.

Ao compilar um programa escrito em 2012, um aviso aparece:

possível perda de dados devido à conversão do tipo FinBuy1531.mq4 144 7

O que isso significa e como posso evitá-lo?

P.S. O programa está sendo executado normalmente no testador.

 
simpleton:

Talvez o contador devesse ser zerado a tempo para que não acrescente mais e conte novamente do zero?

As funções quilométricas não são boas, partes completas de ações são melhor colocadas em funções separadas, mesmo que algumas delas sejam chamadas apenas uma vez. E, a partir da função principal, chamar aqueles separados.

Essa contagem vai funcionar?

Quando o começo, recebo o seguinte:

Parece que conta corretamente.


OOO muito obrigado!!!)) Funciona muito bem em geral.

Obrigado a todos por sua ajuda!)

 
Shurkin:

Olá.

Ao compilar um programa escrito em 2012, um aviso aparece:

possível perda de dados devido à conversão do tipo FinBuy1531.mq4 144 7

O que isso significa e como posso evitá-lo?

P.S. O programa está sendo executado normalmente no testador.

Você precisa realizar corretamente a conversão do tipo no código.