[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 262

 
dzhini:
Können Sie mir sagen, wie ich die Preiskoordinate eines grafischen Objekts vom Typ OBJ_LABEL bestimmen kann?

ObjectGet mit den Parametern OBJPROP_XDISTANCE und OBJPROP_YDISTANCE verwenden
 

1 Frage.Wenn der Name eines Arrays mit der Zahl 10 in Klammern angegeben ist, bedeutet dies, dass das Array 11 Elemente enthält.

Frage 2. Ich sollte sicherstellen, dass nach dem end_set des Arrays keine Nullen stehen , aber alle Preise vom allow_set bis zum end_set sollten vorhanden sein . Mache ich die ArrayResize richtig?

//global
preis[10];
int i =-1;
//-------------------
int start()
{
if(!TF_F_NewBar())return(0);
if(Allow_setting == true)
{
i++;
ArrayResize(price, i);//Ich gehe davon aus, dass das Array price[10] price[0] bleiben wird (ist das erlaubt?),
//d.h. eine Stelle im Array, an der Null geschrieben wird
. Mit jedem Schritt (Takt) werden wir also

//Erhöhung der Größe des Arrays
price[i] = Close[1] ; // Ich schreibe Close[1] anstelle von Null in dieses einstellige Array. Wenn dies erlaubt ist,
// dann können Sie das minimale Array price[0] angeben
;
}
if(end_set== true)
{
Array data processing ;

i = -1; //nach der Verarbeitung, zurück zur ursprünglichen Position
}
}

Bitte entschuldigen Sie, dass ich den Code falsch eingefügt habe, so wie er sein sollte.

 
gince:

1 Frage.Wenn der Name eines Arrays mit der Zahl 10 in Klammern angegeben ist, bedeutet dies, dass das Array 11 Elemente enthält


Ein solches Feld enthält 10 Zellen mit Indizes von 0 bis 9. Das bedeutet, dass sich das erste Element in der Zelle 1 mit dem Index 0 befindet, weshalb die for-Anweisung mit 0 beginnt.

Frage 2. Ich sollte sicherstellen, dass nach dem end_set des Arrays keine Nullen stehen , aber alle Preise vom allow_set bis zum end_set sollten vorhanden sein . Mache ich die ArrayResize richtig?

Möchten Sie die 10 Schlusskurse der letzten 10 Balken in das Array aufnehmen?

Entschuldigung, ich habe den Code nicht richtig eingegeben.

Sie können das Geschriebene jederzeit ändern, indem Sie auf "Bearbeiten" klicken.


 
paladin80:

Möchten Sie die letzten 10 Preise in der Nähe der letzten 10 Balken anordnen?

Sie können das Geschriebene jederzeit ändern, indem Sie auf "Bearbeiten" klicken.


Nein, nicht 10, sondern Allow_select bis end_set. Es kann entweder 40 oder 65 sein. Sie müssen sicherstellen, dass nach dem end_set keine Nullen im Array stehen.
 
gince:
Nein, nicht 10, sondern Allow_select vor end_select. Dies kann entweder 40 oder 65 sein und sollte keine Nullen nach dem end_set im Array enthalten


Das ist in Ordnung, setzen Sie das Array einfach zu Beginn als dynamisch:

double цена[];

...

int init ()

{

…

ArrayResize (цена,0);

…

}

int start ()

{

…

}

 
gince:
Nein, nicht 10, sondern Allow_select vor end_select. Dies kann entweder 40 oder 65 sein und sollte keine Nullen nach dem end_set im Array enthalten

double цена[]; // динамический массив
int    начало=2; // 0 (ноль) это текущий, ещё не закрытый бар
int    конец=45;
int    количество;
//---
int init()
  {
   количество=конец-начало; // =43
   ArrayResize(цена, количество); // устанавливается размер массива - 43 ячейки
   return(0);
  }

//---
int start()
  {
    if(!TF_F_NewBar()) return(0);    
    if(Разрешить_набор == true)
    {
      for (int i=0; i<=количество-1; i++) // заполнить 43 ячейки с индексом от 0 до 42.
                                          // в ячейке 0 будет цена close для бара 2 и т.д.
      цена[i]=Close[i+начало];   
    }
   return(0);
  }
//---
 
paladin80:

Ich weiß nicht, wie viele Elemente ein Array haben sollte. Es könnten 40 oder 65 sein. Mit einem Wort, wir brauchen ein dynamisches Array

double цена[]; // динамический массив

int i = -1;
//---
int init()
  {
   ArrayResize(цена, 0); // устанавливается размер массива минимальным - 1 ячейка
   return(0);
  }

//---
int start()
  {
    if(!TF_F_NewBar()) return(0);    
    if(Разрешить_набор == true)                // это сигнал по индюку
    {
      //Пришел новый бар и резрешение есть 
      i++.                                     //увеличиваем индех            
      ArrayResize(цена, i)
      цена[i]=Close[i];   
   }
   if(конец_набора== true)   // это сигнал по индюку
   {
      //----
      //работа с массивом
      //----
      Pазрешить_набор == false; 
      i= -1;
//А тут
надо что нибуть делать с бывшим массивом (уменшить, очистить или еще что то)      
   }
   return(0);
 }
//---
 
gince:

Ich weiß nicht, wie viele Elemente ein Array haben sollte. Es könnten 40 oder 65 sein. Mit einem Wort, wir brauchen ein dynamisches Array

Ich möchte Sie von der anderen Seite her fragen. Warum müssen Sie das Array mit Schlusskursen füllen? double close[] selbst ist bereits ein Array mit Schlusskursen.
 
paladin80:
Ich werde Sie von der anderen Seite her fragen. Warum müssen Sie ein Array mit Schlusskursen füllen? double close[] selbst ist bereits ein Array mit Schlusskursen.
Es ist mir egal, ob sie geschlossen oder offen ist. Das Wichtigste ist, dass sie von jetzt bis jetzt sind. Dann filtere ich sie. Die Filterung sollte in diesem Zeitraum von jetzt bis jetzt durchgeführt werden. Wenn ich ein Array gefiltert habe, mache ich ein weiteres mit anderen Daten. Und ich zeichne unter Verwendung des letzten Arrays. Das Feld, nach dem Sie gefragt haben, ist also nur eine Zwischenstufe.
 
Im Moment wird für jeden Balken ein Lückentext in das Array eingefügt. Und wenn ich das nicht tue, muss ich berechnen, ab welchem Balken ich Daten sammeln, zyklisieren und filtern soll. Damit bleibt nur noch letzteres übrig.