Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 374

 
 while (Count < FindPeak)
   {
// - 2 - ======================== Поиск одного экстремума ЗЗ ============================ 
    double ZZCur = 0;
    while(ZZCur == 0 && i < Bars)
      {
       if(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);
       i++;
      }
// - 2 - ============================ Окончание блока ===================================

// - 3 - ======================== Анализ найденного экстремума ========================== 
    if (ZZCur == 0)
      return(False);           // Если ни один из экстремумов не определен, то это ошибка
 
Novaja:

Hier ist eine andere Variante, die der Ihren ähnelt ... Der Titel der for-Schleife sagt i++, also habe ich die geschweiften Klammern am Ende entfernt. Ich habe die geschweiften Klammern entfernt, weil es nur einen Operator in der Schleife gibt (if else)

 while (Count < FindPeak)
 {
    double ZZCur;
    for(i=0,ZZCur=0; ZZCur==0 && i<Bars; i++)
       if      (iCustom(NULL, 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(NULL, 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);

    if (ZZCur == 0) return(False);   // Если ни один из экстремумов не определен, то это ошибка
.......
}
 
STARIJ:

Hier ist eine andere Variante, die der Ihren ähnelt ... In der Kopfzeile der for-Schleife steht i++, also habe ich sie am unteren Ende entfernt. Die geschweiften Klammern wurden entfernt, da es nur einen Operator in der Schleife gibt (if else).


Vielen Dank für die Alternative, alles im Sparschwein, muss Erfahrungen sammeln. Also hatte ich auch recht, nur Eulen wollen keine Geschäfte eröffnen, ich werde weiter suchen.

 

Hallo! Es gibt eine Reihe von offenen Preisen für Aufträge. Wenn ich den Index dieses Auftrags kenne, wie kann ich dann seine Art bestimmen?

if(index_elementa_masiva=OP_BUY)???
 
vikzip:

Hallo! Es gibt eine Reihe von offenen Preisen für Bestellungen. Wenn wir den Index dieser Bestellung kennen, wie können wir dann ihre Art bestimmen?

Für diese Art von Aufgabe ist es nicht sehr wünschenswert, eine Reihe von Eröffnungspreisen zu haben, da es hypothetisch mehr als einen Auftrag mit demselben Eröffnungspreis geben könnte.

Aber im Allgemeinen sollten wir den bekannten Eröffnungskurs nehmen, alle Aufträge in einer Schleife durchgehen und diejenigen auswählen, deren Eröffnungskurs gleich demjenigen im Array mit dem bekannten Index ist.

Wenn es mehr als einen solchen Auftrag gibt, müssen wir sie nach anderen Kriterien vergleichen, z. B. nach der Zeit, um herauszufinden, ob dies der gewünschte Auftrag ist.

Und wenn es nur eine Bestellung gibt, dann ist es die richtige - ohne weitere Auswahl nach anderen Kriterien.

 
Artyom Trishkin:

Es ist nicht wünschenswert, eine Reihe von offenen Preisen für diese Aufgabe zu haben, da es hypothetisch mehr als einen Auftrag mit demselben offenen Preis geben könnte.

Aber im Allgemeinen sollten wir den bekannten Eröffnungskurs nehmen, eine Schleife durch alle Aufträge ziehen und diejenigen auswählen, deren Eröffnungskurs mit dem Index im Array übereinstimmt, den Sie kennen.

Wenn es mehr als eine Reihenfolge gibt, sollten wir sie nach anderen Kriterien vergleichen, zum Beispiel nach der Zeit, um zu verstehen, dass dies die richtige Reihenfolge ist.

Und wenn es nur einen gibt, dann ist es der richtige - ohne weitere Auswahl nach anderen Kriterien.


Ich danke Ihnen!

 
Können Sie mir sagen, wie ich eine Bedingung schreiben kann, die besagt: wenn die Auftragsarten gleich sind?
 bool TYP_A=OrderType;
 bool TYP_B=OrderType;
 if (TYP_A=TYP_B)????
double PriceBlizkoA;                          // Цена выбранного ордера
         bool TYP_A; 
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:  
        if (OrderOpenPrice=PriceBlizkoA);                                     //если цена ордера равна цене заданого   и вот здесь ошибка. Догадываюсь неверно записано условие. Подскажите, что исправить?
         TYP_A=OrderType;   
 
vikzip:
Können Sie mir bitte sagen, wie ich eine Bedingung schreiben kann, die sich wie folgt anhört: wenn die Auftragstypen gleich sind?
Lesen Sie, was ein Vergleichsoperator ist und was ein Zuweisungsoperator ist und wie sie geschrieben werden.
 
vikzip:
Könnten Sie mir bitte sagen, wie ich die Bedingung schreiben soll, die sich wie folgt anhört: if order types are the same?

Das läuft auf dasselbe hinaus:

bool TYP_A=OrderType;
bool TYP_B=OrderType;

bool TYP_A=0; // Buy
bool TYP_B=1; // Sell

Als Ergebnis erhalten wir

if(TYP_A) // false
if(TYP_B) // true
Lesen Sie den Rat von Artiom.
 

Guten Tag zusammen!

Bitte geben Sie mir einen Befehl, damit der Roboter nicht mehr als 1 Order pro Kerze eröffnet.

Auch wenn er seinen Take auf diese Kerze gemacht hat - nicht, um den nächsten Auftrag auf dieselbe Kerze zu eröffnen.

Nun stellt sich heraus, dass - wenn die Bedingungen der Indikatoren erfüllt sind - ein Handel zu eröffnen ist.

Wenn ein Geschäft auf dem Take geschlossen wird, wird sofort ein neues Geschäft auf demselben Candlestick eröffnet, und hier wird es nicht mehr benötigt und bereitet mir Probleme.

Ich halte es für wichtig, ein Feedback zu geben.

Es braucht eine streng so 1 Kerze - 1 Deal.

Vielen Dank im Voraus!

Grund der Beschwerde: