[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 556

 


Es ist natürlich besser, zu einem Lese-/Schreib-Array zu wechseln

1. Ändern Sie die Größe des Arrays nicht bei jeder Iteration um 1, sondern lieber seltener, zum Beispiel in 50er- oder 100er-Schritten, wenn nötig.

2. Für den Scheckdruck sollten Sie besser DoubleToStr() verwenden.

3. ich verstehe nicht, warum eine String-Variable zum Lesen verwendet wird

 
Vinin:


Es ist natürlich besser, auf ein Lese-/Schreib-Array umzuschalten

1. Ändern Sie die Array-Größe nicht bei jeder Iteration um 1, sondern lieber seltener, z. B. in 50er- oder 100er-Schritten, wenn nötig.

2. Es ist besser, DoubleToStr() für den Prüfdruck zu verwenden

3. ich verstehe nicht, warum eine String-Variable zum Lesen verwendet wird

1. es funktioniert sonst nicht. es schreibt Nullzeilen, wie bei 4 Spalten, die jedes Mal aktualisiert werden müssen

2. ok.

3. eine spezielle beraten, jetzt liest es alles richtig. aber es stellt sich heraus, eine Null-Zeile ist überflüssig, und eine zusätzliche laufen.aber der Wert ist nicht da, so füllt es die Null-Zeile entsprechend.

 
orb:

1. es funktioniert sonst nicht. es werden Nullzeilen geschrieben, z.B. für 4 Spalten, die jedes Mal aktualisiert werden müssen

2. ok.

3. eine spezielle beraten, jetzt liest es alles richtig. aber es stellt sich heraus, eine null Zeile ist extra, während eine extra laufen.und der Wert ist nicht da, bzw. die null Zeile gefüllt ist.


Bei einem solchen Ansatz wird es große Bremsen geben.
 
Vinin:

Bei diesem Ansatz wird es große Bremsen geben.

Verstehe, bisher fällt es mir leichter, so zu schreiben.

Können Sie mir sagen, wie ich verhindern kann, dass "while" ein weiteres Mal ausgeführt wird?

 
orb:

Verstehe, bisher fällt es mir leichter, so zu schreiben.

Wie werde ich sie los, während sie ein weiteres Mal ausgeführt wird?



Ich konnte sie nicht loswerden. Aber ich habe keine String-Variablen verwendet
 
Ich hab's. Kann dann ArrayResize(); weniger als der Schleifenzähler angewendet werden, wird es diese Zeichenfolge aus dem Array entfernen?
 
orb:
Ich hab's. Kann dann ArrayResize(); weniger als die Zyklusanzahl angewendet werden, wird es diese Zeichenfolge aus dem Array entfernen?

Ja, das wird sie.

Je seltener Sie diese Funktion verwenden, desto schneller funktioniert sie. Reservieren Sie 100 Elemente und lesen Sie, indem Sie den Array-Überlauf kontrollieren. Vergrößern Sie das Feld gegebenenfalls noch einmal um 100 Elemente. Gleichzeitig behalten Sie die tatsächliche Anzahl der heruntergeladenen Elemente bei. Nach dem vollständigen Herunterladen des Arrays führen Sie eine neue ArrayResize() aus, allerdings nach der tatsächlichen Anzahl der heruntergeladenen Elemente.

Aber die Funktionen für die Arbeit mit Arrays funktionieren besser. Sie sollten zuerst die Anzahl der Elemente des Arrays in einer Datei speichern, und dann das Array selbst

Lesen Sie zuerst die Anzahl der Elemente ab und legen Sie die Größe des Arrays fest. Laden Sie das Array herunter. Und keine Schleifen

 
Vinin:

Ja, das wird sie.

Je seltener Sie diese Funktion verwenden, desto schneller funktioniert sie. Reservieren Sie 100 Elemente und lesen Sie, indem Sie den Array-Überlauf kontrollieren. Vergrößern Sie das Feld gegebenenfalls noch einmal um 100 Elemente. Gleichzeitig behalten Sie die tatsächliche Anzahl der heruntergeladenen Elemente bei. Nach dem vollständigen Herunterladen des Arrays führen Sie eine neue ArrayResize() aus, allerdings nach der tatsächlichen Anzahl der heruntergeladenen Elemente.

Aber die Funktionen für die Arbeit mit Arrays funktionieren besser. Sie sollten zuerst die Anzahl der Elemente des Arrays in einer Datei speichern, und dann das Array selbst

Lesen Sie zuerst die Anzahl der Elemente ab und legen Sie die Größe des Arrays fest. Laden Sie das Array herunter. Und keine Schleifen

Danke! Ich werde das für die Zukunft im Hinterkopf behalten.
 

Bitte beraten Sie mich, wie ich das Problem richtig lösen kann:

Es gibt eine Projektion der Unterstützungs-/Widerstandsniveaus der älteren TF auf die aktuelle TF. Es muss ermittelt werden, welches der Niveaus zuletzt vom Kurs getestet wurde. Ich habe versucht, es durch die Fahnen zu machen:

int start()
{ 
      int limit;
      int counted_bars=IndicatorCounted();
      if(counted_bars>0) counted_bars--;

      limit=Bars-counted_bars;
      if(limit>barsToProcess)
         limit=barsToProcess;

     for(int i=0;i<limit;i++)

{
 
  bool flag_R[], flag_S[], S[];

   double Level_Re = iCustom(NULL,0,"........",0,i); // для каждого бара получаем значения со старшего ТФ
   double Level_Su = iCustom(NULL,0,"........",1,i); // для каждого бара получаем значения со старшего ТФ

{
   if (iHigh(Symbol(),0,i)>=Level_Re)              // проверяем тестирование ценой уровня Re
   {flag_R[i]=true; flag_S[i]=false; S[i]=true;}   // выставляем флаги
   
   if (iLow(Symbol(),0,i)<=Level_Su)               // проверяем тестирование ценой уровня Su
   {flag_R[i]=false; flag_S[i]=true; S[i]=true;}   // выставляем флаги


   if (S[i]==false) {flag_R[i]=flag_R[i+1]; flag_S[i]=flag_S[i+1];} // если тестирования не было - берем предыдущее значение

   if (flag_R[0]==true) Print("Re zone tested"); if (flag_S[0]==true) Print("Su zone tested");
   
}
}

return(0);
}

aber das Protokoll zeigt nichts an.... [Wenn ich z. B. Print(Level_Re) einstelle und dann das gesamte Array durchlaufe, bleibt das Protokoll beim Wert des Levels für den letzten Balken stehen, d. h. die Levels selbst werden korrekt berechnet, aber mit Flags funktioniert bei mir etwas nicht.... ]

Worin besteht der Fehler? Oder wie kann man es am besten machen?

 
alkador:

zu T-G

versuchen Sie es so:

datetime expiration=TimeCurrent()+MaxSecLiveTime;

OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, expiration, CLR_NONE);


und was ist der Unterschied zu:

extern int MaxSecLiveTime = 120;
OrderSend(Symbol(), OP_BUYSTOP, Lots(), PriceBuy, 0, 0, 0, EA_Comment, Magic, TimeCurrent()+MaxSecLiveTime, CLR_NONE);