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

 
trader781:

Korrigieren

Es gibt keine andere Möglichkeit, es irgendwo anders zu formulieren, es wäre ein falscher Parameter.

Es sollte die letzte Version berücksichtigt werden.

Ich werde versuchen, es zu ändern.

Ich habe versucht, die Standardfunktion OrderModify() zu verwenden, aber sie wird blockiert, wenn ich viele Aufträge gleichzeitig und ständig verschiebe

Danke für die Kritik.

Erklären Sie es OHNE ARGUMENTE, ist das wirklich so schwer?

int Counts()
{код функции}

Und rufen Sie auch eine leere auf, und setzen Sie die elza hinter geschweiften Klammern ab:

if(Counts()==0){че там нужно когда нет ордеров}
else {когда есть ордера}

Und jetzt haben Sie das hier:

if(Counts()==0){че там нужно когда else {когда есть ордера} нет ордеров}
 
Alekseu Fedotov:

Versuchen Sie es ^_~



Es funktioniert nicht ... Es gibt immer noch keine Einigung.
 
Movlat Baghiyev:
Es funktioniert nicht... Kein Handel, kein Handel...

Werden zumindest die ausstehenden Aufträge angezeigt, nein, wo liegen die Fehler?

...ich habe es repariert.

Dateien:
0.mq4  8 kb
 
Die Argumente sind fertig. Das Terminal hängt fest.
Dateien:
count.mq4  19 kb
 
trader781:
Fertige Argumente. Terminal hängt fest.

Es gibt also eine Art Schleife, die sich endlos hin und her bewegt.

Schreiben Sie #property strict an den Anfang des Codes und beheben Sie es, viele Warnungen.

Es ist durchaus möglich, in der letzten Funktion durch 0 zu teilen.

Andernfalls wird nur die erste Zeile ausgeführt, der Klammerblock bleibt verwaist.

Generell sollte man die Logik zuerst mit Worten zu Papier bringen, sonst ist sie wackelig.

 
Vitalie Postolache:


Es soll einen Befehl mit einem fließenden Dezimalpunkt ausführen, der von den Dezimalstellen in der Tabelle abhängt

NormalizeDouble(Ask+TakeProfit*Point(),Digits)

und wie haben Sie festgestellt, dass einige Zeilen nicht ausgeführt wurden?

 
trader781:

Es soll einen Befehl mit einem fließenden Dezimalpunkt ausführen, der von den Dezimalstellen in der Tabelle abhängt

NormalizeDouble(Ask+TakeProfit*Point(),Digits)

Woher wissen Sie, dass einige Zeilen nicht ausgeführt werden?

Ja, ich habe große Probleme mit der Logik. Und was bliebe vom Ergebnis übrig, wenn es in eine Ganzzahlvariable geschrieben wird? Was ist der Sinn dieses Codes?

int lastlot,tp;
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);

Ist es hier so schwer zu verstehen, dass ein Teil des Codes ein Waisenkind ist und unabhängig von der Bedingung ausgeführt wird?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код-сирота
}
 
Vitalie Postolache:

Ja, das ist ein großes Problem mit der Logik. Und was bleibt vom Ergebnis übrig, wenn es in eine Integer-Variable geschrieben wird? Was ist der Sinn dieses Codes?

int lastlot,tp;
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);

Ist es so schwer zu verstehen, dass ein Teil des Codes ein Waisenkind ist und nicht ausgeführt wird?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код, который никуда не идёт, сирота
}

Stopp

wenn es Aufträge gibt

Die Auftragsart ist

{

dann werden die Vorgänge für diese Auftragsart ausgeführt

}

nicht?

Ich kann nicht herausfinden, woher die Nullteilung kommt.
 
trader781:

Stopp

wenn es Aufträge gibt

ist die Auftragsart

{

dann werden die Vorgänge für diese Auftragsart ausgeführt

}

Nein?

Ja, Sie haben recht, aber der Code ist so geschrieben, dass mein Vorredner ihn falsch interpretiert hat.

Hinzugefügt:zero divide ist eine Division durch Null, und es sagt Ihnen im Protokoll, welche Zeile

 
trader781:

Stopp

wenn es Aufträge gibt

ist die Auftragsart

{

dann werden die Vorgänge für diese Auftragsart ausgeführt

}

Nein?

Oben korrigiert. Was nach else kommt, wird abhängig von der Bedingung ausgeführt. Der Block der geschweiften Klammern ist separat, er hat also nichts mit else zu tun.

Ich kann nicht herausfinden, woher die Nullteilung kommt.

Das ist der Ort, an dem

void ModifyOrders() //+------------модификация ввод тип
  {
   double avg_price; //+------------средняя цена
   price=0;//+------------цена
   bool z;//+------------выход в переменную
   double orderlots=0; //+------------лоты

   avg_price=NormalizeDouble(price/orderlots,Digits);//+------------то средняя ценаравна цена деленная на лот
@Vitaly Muzichenko Wo ist hier "fehlinterpretiert"? Benutzen Sie Ihr Gehirn.