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

 
Igor Makanu:

alles muss repariert werden.

Ihr Code sucht nach dem ersten gefundenen Auftrag aus der Auftragshistorie mit dem angegebenen Symbol und dem angegebenen Zauberer

Zählen Sie dann die Anzahl der gefundenen unrentablen Aufträge und multiplizieren Sie diese Anzahl mit einer Potenz von 2

Suchen Sie im Forum nach"Nützliche Funktionen von CMM" und machen Sie etwas wie folgt

- das Ticket der letzten Bestellung für unser Symbol und unsere Magie finden

- OrderProfit() und OrderLots() aus dem gefundenen Ticket ermitteln und gegebenenfalls mit dem Martingale-Koeffizienten multiplizieren

ZS: es könnte eine fertige Lösung geben

Das Problem ist ein wenig anders, ich habe eine fließende Menge bei jeder Öffnung und muss sie mit dem Koeffizienten multiplizieren.
Die Partie des ersten Knies zum Beispiel 0,07, und die zweite kann 0,04 sein, nach einem Verlust die Partie des dritten Knies 0,05 und hier ist diese Partie und müssen mit Koeffizient 4 multipliziert werden.
Meine Funktion berechnet ein gleitendes Los, es muss mit LotSize() * 2,4,8,16 usw. multipliziert werden.
 
Denis Pershin:
Die Aufgabe ist etwas anders, ich habe bei jeder Öffnung eine fließende Menge und muss sie mit einem Koeffizienten multiplizieren.
Die Partie des ersten Knies beträgt beispielsweise 0,07, die des zweiten 0,04, die des dritten Knies nach einem Verlust 0,05, und diese Partie sollte mit dem Koeffizienten 4 multipliziert werden.
Meine Funktion berechnet ein gleitendes Los, es muss mit LotSize() * 2,4,8,16 usw. multipliziert werden.

wie

Wenn Sie das Startlot kennen, können Sie den letzten Verlustauftrag verwenden, um sein Lot zu überprüfen und die Knienummer zu berechnen, und wenn der Auftrag im Gewinn ist, beginnen Sie wieder mit dem Startlot

lernen Sie, die letzte geschlossene Ordnung mit Ihrem Zauberer zu finden

Wenn das System der Losberechnung ist sehr komplex - die Möglichkeit, ein Zauberer + die Knie-Nummer für neue Aufträge, können Sie auch Kommentare verwenden, aber nicht sehr zuverlässig, besser mehrere Zauberer verwenden


Ihr Code geht nur durch die Bestellungen - er sieht nichts, deshalb habe ich darauf geachtet

 
Igor Makanu:

wie diese

Wenn Sie das Startlot kennen, können Sie den letzten Verlustauftrag verwenden, um sein Lot zu überprüfen und die Knienummer zu berechnen, und wenn der Auftrag im Gewinn ist, beginnen Sie wieder mit dem Startlot

lernen Sie, die letzte geschlossene Ordnung mit Ihrem Zauberer zu finden

Wenn das System der Losberechnung ist recht komplex - die Option eines Zauberers + die Zahl eines Knies für neue Aufträge, können Sie auch Kommentare verwenden, aber nicht zuverlässig, besser mehrere Zauberer verwenden


Ihr Code geht nur durch die Bestellungen - er sieht nichts, deshalb habe ich darauf geachtet

Das ist die Schwierigkeit: Das Ausgangslos ist unbekannt und wird auf der Grundlage von n % des Eigenkapitals berechnet.
Ich möchte den Kommentar nicht verwenden.
Jetzt wird die Anzahl der aufeinanderfolgenden Verluste im Code berechnet und korrekt berücksichtigt, aber ich kann mich nicht entscheiden, wie ich es mit Multiplikationskoeffizienten von 2,4,8,16 verbessern kann.
 
Denis Pershin:
Der Code zählt jetzt die Anzahl der aufeinanderfolgenden Verluste und zählt korrekt, aber wie man das mit einem Multiplikationsfaktor von 2,4,8,16 macht, kann ich nicht herausfinden.

falsch

Aber wenn es Ihnen passt, dann versuchen Sie, Ihren Code auf diese Weise zu korrigieren.

int c=1;
....
c*=2; // 1,2,4,8....
 
Igor Makanu:

falsch

aber wenn es Ihnen passt, dann versuchen Sie, Ihren Code wie folgt zu korrigieren

Er kommt zur dritten Multiplikation: 3*2=6, und er braucht schon 8, und die vierte wird 8 sein, und er braucht 16.

 

k = {1,2,4,8,16,......}

cn = k[c]

 
Vitaly Muzichenko:

Bei der dritten Multiplikation erhält er: 3*2=6, und er braucht schon 8, und bei der vierten Multiplikation erhält er 8, und er braucht 16.


void OnStart()
{
   int c = 1;
   for(int i = 1; i <= 5; i++)
   {
      c *= 2;
      printf("i = %i, c = %i",i,c);
   }
}

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

wo ist 6?

oder was ist es?

 
Igor Makanu:


2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

wo ist 6?

oder was ist es?

Ja, ich habe es falsch verstanden.

 
Plant MQ, der mobilen Plattform benutzerdefinierte Indikatoren hinzuzufügen?
 
Igor Makanu:


2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

wo ist 6?

oder was wird benötigt?

Vielen Dank, sehr hilfreich)