Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 635

 
Top2n:

Questa funzione restituisce il numero di celle nella matrice, non il numero di celle riempite.

Solo un ciclo vi aiuterà. Passare e contare
 

Qualche consiglio per un principiante, per favore!

Il mio compito è quello di creare una sottofinestra (sottofinestre) da un Expert Advisor nella finestra del grafico a cui è collegato.

Ho cercato dappertutto, ma non ho trovato come farlo. È possibile creare/modificare oggetti

sottofinestre che sono già state create da altri indicatori, ma non hanno quello che mi serve...

Come posso uscire da questa situazione?

 
boroda4:

Qualche consiglio per un principiante, per favore!

Il mio compito è quello di creare una sottofinestra (sottofinestre) da un Expert Advisor nella finestra del grafico a cui è collegato.

Ho cercato dappertutto, ma non ho trovato come farlo. È possibile creare/modificare oggetti

sottofinestre che sono già state create da altri indicatori, ma non ho quello che mi serve...

Come posso uscire da questa situazione?


Dai un'occhiata all'articolo, forse troverai qualcosa
 
Vinin:

Solo un ciclo vi aiuterà. Passare e contare.

Potete dirmi come calcolare il numero di celle riempite in un array?

L'array contiene i prezzi della linea di tendenza, relativi alla barra corrente.

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

Non riesco a capirlo.

Non riesco a capirlo per niente e questo è tutto, per favore aiutatemi!!!

 

Potete dirmi come ottenere il segnale di terminazione di TerminalTester nel terminale?

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:

Potete dirmi come calcolare il numero di celle riempite in un array?

L'array contiene i prezzi della linea di tendenza, relativi alla barra corrente.

Non riesco a capirlo.

Non riesco a capirlo e questo è tutto, per favore aiutatemi!!!

Prova così:

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

Forse funzionerà. Buona fortuna!

 
Top2n:

Potete dirmi come calcolare il numero di celle riempite in un array?

L'array contiene i prezzi della linea di tendenza, relativi alla barra corrente.

Non riesco a capirlo.

Non riesco a capirlo per niente e questo è tutto, aiuto per favore!!!


Probabilmente è necessario annullare il contatore nel tempo, in modo che non si avvolga più, e ricalcolato da zero?

Le funzioni chilometriche non vanno bene, è meglio mettere i pezzi di azioni completate in funzioni separate, anche se alcune di esse sono chiamate solo una volta. Ed è meglio chiamare queste funzioni separate dalla funzione principale.

Questo conteggio andrà bene?

#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 lo avvio, ottengo quanto segue:

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

Sembra contare bene.

 

Salve.

Quando si compila un programma scritto nel 2012, appare un avviso:

possibile perdita di dati a causa della conversione del tipo FinBuy1531.mq4 144 7

Cosa significa e come posso evitarlo?

P.S. Il programma funziona normalmente nel tester.

 
simpleton:

Forse il contatore dovrebbe essere azzerato in tempo, in modo che non aggiunga altro e conti di nuovo da zero?

Le funzioni chilometriche non vanno bene, pezzi completi di azioni sono meglio messi in funzioni separate, anche se alcune di esse sono chiamate solo una volta. E dalla funzione principale chiama quelle separate.

Questo conteggio funzionerà?

Quando lo avvio, ottengo quanto segue:

Sembra contare correttamente.


OOO grazie mille!!!)) Funziona benissimo in generale.

Grazie a tutti per il vostro aiuto)!

 
Shurkin:

Salve.

Quando si compila un programma scritto nel 2012, appare un avviso:

possibile perdita di dati a causa della conversione del tipo FinBuy1531.mq4 144 7

Cosa significa e come posso evitarlo?

P.S. Il programma funziona normalmente nel tester.

È necessario eseguire correttamente la conversione del tipo nel codice.