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

 
Wer weiß, ob die Testgeschwindigkeit erhöht werden kann?
 

Guten Tag. Können Sie mich beraten - die Aufgabe besteht darin, jede Minute vertikale Linien zu zeichnen. Wie man die Zeichnung nicht nur mit den Minuten, sondern auch mit dem Eröffnungskurs der Minute verknüpft. Die Schwierigkeit besteht darin, dass der Eröffnungskurs der Minute auf eine Nicht-Standardzeit, d.h. nicht auf eine Minute, festgelegt werden sollte. Ich habe einen Codeschnipsel geschrieben, aber ich verstehe nicht, wie man den Eröffnungskurs der Minute eingibt, wenn die induzierte Variable auf eine Nicht-Standardzeit gesetzt wird

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]); // new_Minute

Ind_Puffer_0[i]=0

if(new_Minute && Zeitraum()<30 ) Ind_Buffer_0[i]=max;

...und dann die Standardzeichnung mit Objekten.

Vielleicht kann mir jemand sagen, was, wenn überhaupt, getan werden kann.

 
Lonely_man:

Guten Tag. Können Sie mich beraten - die Aufgabe besteht darin, jede Minute vertikale Linien zu zeichnen. Wie man die Zeichnung nicht nur mit den Minuten, sondern auch mit dem Eröffnungskurs der Minute verknüpft. Die Schwierigkeit besteht darin, dass der Eröffnungskurs der Minute auf eine Nicht-Standardzeit, d.h. nicht auf eine Minute, festgelegt werden sollte. Ich habe einen Codeschnipsel geschrieben, aber ich verstehe nicht, wie man den Eröffnungskurs der Minute eingibt, wenn die induzierte Variable auf eine Nicht-Standardzeit gesetzt wird

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]); // new_Minute

Ind_Puffer_0[i]=0

if(new_Minute && Zeitraum()<30 ) Ind_Buffer_0[i]=max;

...und dann die Standardzeichnung mit Objekten.

Vielleicht kann mir jemand sagen, was, wenn überhaupt, getan werden kann.

Die vertikale Linie hat keine Koordinate - den Preis.
 
paladin80:
In while sollten wir eine Bedingung festlegen, die mindestens zwei Werte annehmen kann, z. B. flag (true oder false). Wenn es sich um eine Konstante (true) und nicht um eine Bedingung handelt, ist while nicht erforderlich. Entfernen Sie while (true) und die Klammern und Sie erhalten das gleiche Ergebnis.


Wenn Sie die while-Anweisung entfernen, wie wird dann die continue-Anweisung funktionieren?

Denn im Falle eines Fehlers müssen wir die Bedingungen und offenen Aufträge erneut prüfen.

 if (Fun_Error(GetLastError())==1)      // Обработка ошибок
 continue;                              // Повторная попытка
 return;                                // Выход из start()

Die continue-Anweisung übergibt die Kontrolle an den Beginn der nächsten externen while- oder for-Anweisung, was den Beginn der nächsten Iteration bewirkt.

Vielleicht verstehe ich etwas nicht?

 

Guten Tag.

Ich habe eine Handelsstrategie entwickelt, um schwebende Orders auf einem bereits gebildeten vorletzten Balken [Nummer 1] zu öffnen. Das heißt, es werden Positionen eröffnet (Pending Orders für Buystop und Sellstop), die ausgelöst werden, wenn sich der Kurs um 20 Pips über das Maximum/Minimum der Preisspanne des ersten Balkens (Eröffnungskurs) bewegt.

Es gibt auch eine automatische Löschung von schwebenden Aufträgen, die nicht ausgelöst wurden, und zwar auf folgender Grundlage: Wenn ein neuer Balken mit der Bezeichnung 1 gebildet wurde, wird der Eröffnungskurs einer oder mehrerer ausstehender Orders nicht mit dem Höchst-/Maximalwert des neuen aktuellen Balkens 1 +/- 20 Pips übereinstimmen (höchstwahrscheinlich, da Höchst-/Maximalwerte zweier benachbarter Balken selten übereinstimmen).

Aber aus irgendeinem Grund passiert es, dass er zuerst beide Positionen öffnet, aber in ein paar Sekunden eine von ihnen schließt (obwohl der neue Balken unter Nummer 1 noch nicht gebildet wurde).

Meine Herren Experten, ich bin ein Anfänger, und vielleicht übersehe ich einige Feinheiten. Können Sie mir bitte sagen, wo der Fehler möglich ist.

 RefreshRates();
for(int n=1;n<=OrdersTotal();n++)            //цикл перебора всех имеющихся ордеров
{
  if(OrderSelect(n-1,SELECT_BY_POS)==true)   //если найден ордер, то...
  {
    if((OrderType()==4)&& (OrderOpenPrice()!= High[1]+20*Point))                      // проверяем его тип (buystop/sellstop), если его тип buystop и цена покупки не совпадает с максимумом текущего 1-го бара, то..
      {
          OrderDelete(OrderTicket());                                                  // удаляем его
         
       }
    if((OrderType()==5) && (OrderOpenPrice()!= Low[1]-20*Point))                       // если его тип sellstop и цена продажи не совпадает с минимумом текущего 1-го бара, то ...
    {      
           
            OrderDelete(OrderTicket());                                                //удаляем его
         
    }
  }
}
Dateien:
 

Beim Vergleich von Bruchzahlen müssen diese auf eine signifikante Stelle normiert werden.

Zählen Sie beim Löschen von Aufträgen vom Ende her rückwärts, nicht vom Anfang.

 
... Das ist richtig, und auch - dem Experten verbieten, zu arbeiten, bis eine neue Bar gebildet worden ist.
 
Pacman:


Wenn Sie die while-Anweisung entfernen, wie funktioniert dann die continue-Anweisung?

Denn im Falle eines Fehlers müssen wir die Bedingungen und offenen Aufträge erneut prüfen.

Die continue-Anweisung übergibt die Kontrolle an den Beginn der nächsten externen while- oder for-Anweisung, was den Beginn der nächsten Iteration bewirkt.

Vielleicht verstehe ich etwas nicht?

Keine Sorge, while(true)-Anweisungen werden sehr häufig verwendet, wenn weder die Anzahl der Iterationen noch die Bedingungen für den Schleifenabbruch bekannt sind.

Deshalb wird die Schleife durch den Break-Operator beendet, wenn z. B. mehrere in der Schleife verschachtelte Bedingungen erfüllt sind.

Es gibt aber auch Eulen (z.B. mcllts), die nicht mit einem Tick und damit nicht mit einer Startfunktion arbeiten, sondern kontinuierlich und in einer Dauerschleife mit dem Operatorwhile(true).

 
Equilibrium:
Hallo, guten Tag, bitte helfen Sie mir, ich kann nicht debuggen meine Expert Advisor (Öffnen und Schließen von Aufträgen nicht funktionieren wie erwartet (durch Überschreiten einer Stochastik jedes Mal), öffnen Sie auf Stochastik sehr selten und ich kann nicht verstehen, warum ((((), auch alle Aufträge sind nur auf stoplo oder takeprofit (Ticket-Nummer Fehler geschlossen, kann auch nicht verstehen, wo der Fehler). danke für jede Antwort:

Der Ticket-Fehler liegt höchstwahrscheinlich daran, dass Ihre Ticket-Variable zweimal initialisiert wird - am Anfang und in der Funktion

Versuchen Sie einen anderen Namen in der Funktion, zumindestTicket1 :)

 
Können Sie mir sagen, wie ich den Preis der Trendlinie auf jedem Balken herausfinden kann?
Grund der Beschwerde: