Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 635

 
Top2n:

Diese Funktion gibt die Anzahl der Zellen im Array zurück, nicht die Anzahl der gefüllten Zellen.

Nur eine Schleife wird Ihnen helfen. Durchgehen und zählen
 

Ein Tipp für einen Neuling, bitte!

Meine Aufgabe ist es, ein Unterfenster (Unterfenster) von einem Expert Advisor in dem Chart-Fenster zu erstellen, mit dem er verbunden ist.

Ich habe alles durchgesehen, aber ich habe nicht gefunden, wie man das macht. Sie können Objekte erstellen/bearbeiten

Unterfenster, die bereits von anderen Indikatoren erstellt wurden, aber ich habe nicht das, was ich brauche...

Wie kann ich mich aus dieser Situation befreien?

 
boroda4:

Ein Tipp für einen Neuling, bitte!

Meine Aufgabe ist es, ein Unterfenster (Unterfenster) von einem Expert Advisor in dem Chart-Fenster zu erstellen, mit dem er verbunden ist.

Ich habe alles durchgesehen, aber ich habe nicht gefunden, wie man das macht. Sie können Objekte erstellen/bearbeiten

Unterfenster, die bereits von anderen Indikatoren erstellt wurden, aber ich habe nicht das, was ich brauche...

Wie kann ich mich aus dieser Situation befreien?


Schauen Sie sich den Artikel an, vielleicht finden Sie etwas
 
Vinin:

Nur eine Schleife wird Ihnen helfen. Gehen Sie durch und zählen Sie.

Können Sie mir sagen, wie ich die Anzahl der gefüllten Zellen in einem Array berechnen kann?

Das Array enthält die Trendlinienpreise, bezogen auf den aktuellen Balken.

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

Ich kann es nicht herausfinden.

Ich kann es beim besten Willen nicht herausfinden, bitte helfen Sie mir!!!

 

Können Sie mir bitte sagen, wie ich das Terminierungssignal des TerminalTesters in das Terminal bekomme?

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:

Können Sie mir sagen, wie ich die Anzahl der gefüllten Zellen in einem Array berechnen kann?

Das Array enthält die Trendlinienpreise, bezogen auf den aktuellen Balken.

Ich kann es nicht herausfinden.

Ich kann es nicht herausfinden und das war's, bitte helfen Sie mir!!!

Versuchen Sie es so:

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

Vielleicht klappt es ja. Viel Glück!

 
Top2n:

Können Sie mir sagen, wie ich die Anzahl der gefüllten Zellen in einem Array berechnen kann?

Das Array enthält die Trendlinienpreise, bezogen auf den aktuellen Balken.

Ich kann es nicht herausfinden.

Ich kann es beim besten Willen nicht herausfinden und das war's, bitte helfen Sie mir!!!


Wahrscheinlich müssen Sie den Zähler in der Zeit zu null, so dass es nicht mehr wickeln, und neu berechnet von Null?

Kilometerfunktionen sind nicht gut, es ist besser, die abgeschlossenen Teile der Aktionen in separate Funktionen zu packen, auch wenn einige von ihnen nur einmal aufgerufen werden. Und es ist besser, diese separaten Funktionen von der Hauptfunktion aus aufzurufen.

Reicht diese Zählung aus?

#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);
}

Wenn ich ihn starte, erhalte ich folgende Meldung:

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

Scheint richtig zu sein.

 

Hallo.

Beim Kompilieren eines im Jahr 2012 geschriebenen Programms erscheint eine Warnung:

möglicher Datenverlust durch Typkonvertierung FinBuy1531.mq4 144 7

Was bedeutet das und wie kann ich es vermeiden?

P.S. Das Programm läuft im Testgerät normal.

 
simpleton:

Vielleicht sollte der Zähler rechtzeitig auf Null gesetzt werden, damit er nicht mehr addiert und wieder von vorne beginnt?

Kilometrische Funktionen sind nicht gut, komplette Aktionsblöcke sind besser in separaten Funktionen untergebracht, auch wenn einige von ihnen nur einmal aufgerufen werden. Und von der Hauptfunktion aus diese einzelnen Funktionen aufrufen.

Wird diese Zählung funktionieren?

Wenn ich ihn starte, erhalte ich folgende Meldung:

Scheint richtig zu zählen.


OOO vielen Dank!!!)) Das funktioniert im Allgemeinen sehr gut.

Ich danke Ihnen allen für Ihre Hilfe ;-)

 
Shurkin:

Hallo.

Beim Kompilieren eines im Jahr 2012 geschriebenen Programms erscheint eine Warnung:

möglicher Datenverlust durch Typkonvertierung FinBuy1531.mq4 144 7

Was bedeutet das und wie kann ich es vermeiden?

P.S. Das Programm läuft im Testgerät normal.

Sie müssen die Typumwandlung im Code korrekt durchführen.