Können Sie mir sagen, ob ich auf dem richtigen Weg bin?
Zielsetzung: Einführung einer variablen Losgröße in Abhängigkeit von der Entfernung zum Hauptbahnhof.
In den Eingabeparametern:
extern double Lot1 = 0.01; // erste Variante von Lot extern double Lot2 = 0.03; // zweite Variante des Loses extern int Distan = 20; // Abstand zur SlowMA
Darüber hinaus benötigen wir eine Bedingung: Wenn der aktuelle Preis (Bid oder Ask, je nach Richtung) bis zur Distant-Größe reicht, verwenden wir die erste Lot-Größe, wenn er darüber liegt, verwenden wir die zweite.
Das erste, was mir in den Sinn kam:
if (Ask-SlowMA<Distan) Lot == Lot1; if (SlowMA-Bid<Distan) Lot == Lot1; if (Ask-SlowMA>Distan) Lot == Lot2; if (SlowMA-Bid>Distan) Lot == Lot2;
Aber es funktioniert nicht. Der Fehler liegt entweder in den Losverbindungen oder in der allgemeinen Logik.
Dann brauchen wir eine Bedingung: Wenn der aktuelle Preis (Bid oder Ask, je nach Richtung) bis zur Distant-Größe reicht, verwenden wir die erste Lot-Größe, wenn er größer ist, verwenden wir die zweite.
Das erste, was mir in den Sinn kam:
if (Ask-SlowMA<Distan) Lot == Lot1; if (SlowMA-Bid<Distan) Lot == Lot1;; wenn (Ask-SlowMA>Distan) Lot == Lot2; if (SlowMA-Bid>Distan) Lot == Lot2;
Aber es funktioniert nicht. Es handelt sich entweder um einen Fehler in Verbindung mit Lot oder um einen Fehler in der allgemeinen Logik.
Ich danke Ihnen im Voraus.
Welche Bedeutung haben Ask, Bid und SlowMA, wenn Ask-SlowMA größer als Distan sein kann?
Die Abweichung des aktuellen Kurses (Bid oder Ask) vom Ma (SlowMA) kann größer oder kleiner als Distans sein. Dementsprechend sollten Sie entweder die erste oder die zweite Losgröße festlegen.
Ich habe Varianten gefunden, bei denen das Lot auf der Grundlage der Einlage oder der Anzahl der offenen Aufträge geändert wird, aber ich kann keine Reaktion auf einen solchen linearen Begriff erhalten.
Irgendetwas sagt mir, dass wir eine Funktion brauchen, die einen absoluten Wert zurückgibt. Das heißt, wenn wir sie auf eine negative Zahl anwenden, wird das Ergebnis positiv sein.
Die Abweichung des aktuellen Kurses (Bid oder Ask) vom Ma (SlowMA) kann größer oder kleiner als Distans sein. Dementsprechend sollten Sie entweder die erste oder die zweite Losgröße festlegen.
Ich habe Varianten gefunden, bei denen das Lot auf der Grundlage der Einlage oder der Anzahl der offenen Aufträge geändert wird, aber ich kann keine Reaktion auf einen solchen linearen Begriff erhalten.
Irgendetwas sagt mir, dass wir eine Funktion brauchen, die einen absoluten Wert zurückgibt. Das heißt, wenn wir sie auf eine negative Zahl anwenden, wird das Ergebnis positiv sein.
Den absoluten Wert der Differenz zwischen Bid und MA brauchen wir vielleicht etwas später; da Sie den Hinweis nicht verstanden haben, lassen Sie uns jetzt gemeinsam rechnen
Angebot = 1,12730;
MA = 1,12530;
Distans = 20;
Frage:
Wann und ob 1,1273 bis 1,1253 wird mehr als 20 sein?
Aus irgendeinem Grund zeigt mein Taschenrechner nur 0,002 an. Aber das ist weit weg von 20...
Vielen Dank, ich verstehe. Oder Sie können es so machen:
dist=Distan*Punkt;
if (Ask-SlowMA<dist) Lot == Lot1; if (SlowMA-Bid<dist) Lot == Lot1; if (Ask-SlowMA>dist) Lot == Lot2; if (SlowMA-Bid>dist) Lot == Lot2;
Wie mache ich das also richtig?
Und jetzt können wir MathAbs() verwenden, um nicht mehr zu viel darüber nachdenken zu müssen, was von was abgezogen werden soll. Und es gibt einen weiteren interessanten bedingten Operator
Lot = MathAbs(Ask-SlowMA) < dist ? Lot1 : Lot2;
Das bedeutet: Der Lot-Variable wird der Wert von Lot1 zugewiesen, wenn Ask- SlowMA kleiner als dist ist, ansonsten wird der Wert von Lot2 zugewiesen.
Noch eine Empfehlung: Vergessen Sie die Variable Punkt. Verwenden Sie _Point oder die Funktion Point()
Ich habe bereits meine Augen gebrochen, ich kann nicht finden, wo Klammern fehlen, ich bekomme Fehler wie '(' - unausgewogene linke Klammer test.mq4 31 8 (ab der Zeile, in der TrendDetection() aufgerufen wird)
Und jetzt können Sie MathAbs() anwenden, so dass Sie nicht mehr wissen müssen, was Sie wovon subtrahieren müssen. Und ein weiterer interessanter bedingter Operator
Das bedeutet: Der Lot-Variable wird der Wert von Lot1 zugewiesen, wenn Ask- SlowMA kleiner als dist ist, ansonsten wird der Wert von Lot2 zugewiesen.
Noch eine Empfehlung: Vergessen Sie die Variable Punkt. Verwenden Sie _Point oder die Funktion Point()
Was ist mit Point, scheint alles zu funktionieren?
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
aber wie kann man diesen Modus aktivieren?
Markieren Sie das Kästchen unten links im Fenster des Testers:
Hallo Guru.
Können Sie mir sagen, ob ich auf dem richtigen Weg bin?
Zielsetzung: Einführung einer variablen Losgröße in Abhängigkeit von der Entfernung zum Hauptbahnhof.
In den Eingabeparametern:
extern double Lot1 = 0.01; // erste Variante von Lot
extern double Lot2 = 0.03; // zweite Variante des Loses
extern int Distan = 20; // Abstand zur SlowMA
Ma wurde im Expert Advisor Body definiert:
double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);
Darüber hinaus benötigen wir eine Bedingung: Wenn der aktuelle Preis (Bid oder Ask, je nach Richtung) bis zur Distant-Größe reicht, verwenden wir die erste Lot-Größe, wenn er darüber liegt, verwenden wir die zweite.
Das erste, was mir in den Sinn kam:
if (Ask-SlowMA<Distan) Lot == Lot1;
if (SlowMA-Bid<Distan) Lot == Lot1;
if (Ask-SlowMA>Distan) Lot == Lot2;
if (SlowMA-Bid>Distan) Lot == Lot2;
Aber es funktioniert nicht. Der Fehler liegt entweder in den Losverbindungen oder in der allgemeinen Logik.
Vielen Dank im Voraus.
Hallo Guru.
Können Sie mir sagen, ob ich auf dem richtigen Weg bin?
Zielsetzung: Einführung einer variablen Losgröße in Abhängigkeit von der Entfernung zum Hauptbahnhof.
In den Eingabeparametern:
extern double Lot1 = 0.01; // erste Losgröße
extern double Lot2 = 0.03; // zweite Lot-Variante.
extern int Distan = 20; // Entfernung von der SlowMA
Im Hauptteil des Expert Advisors definiert Ma:
double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);
Dann brauchen wir eine Bedingung: Wenn der aktuelle Preis (Bid oder Ask, je nach Richtung) bis zur Distant-Größe reicht, verwenden wir die erste Lot-Größe, wenn er größer ist, verwenden wir die zweite.
Das erste, was mir in den Sinn kam:
if (Ask-SlowMA<Distan) Lot == Lot1;
if (SlowMA-Bid<Distan) Lot == Lot1;;
wenn (Ask-SlowMA>Distan) Lot == Lot2;
if (SlowMA-Bid>Distan) Lot == Lot2;
Aber es funktioniert nicht. Es handelt sich entweder um einen Fehler in Verbindung mit Lot oder um einen Fehler in der allgemeinen Logik.
Ich danke Ihnen im Voraus.
Bid und Ask sind die letzten bekannten Geld- und Briefkurse, d.h. der aktuelle Kurs.
SlowMA ist meine umgetaufte Ma
(double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)
Die Abweichung des aktuellen Kurses (Bid oder Ask) vom Ma (SlowMA) kann größer oder kleiner als Distans sein. Dementsprechend sollten Sie entweder die erste oder die zweite Losgröße festlegen.
Ich habe Varianten gefunden, bei denen das Lot auf der Grundlage der Einlage oder der Anzahl der offenen Aufträge geändert wird, aber ich kann keine Reaktion auf einen solchen linearen Begriff erhalten.
Irgendetwas sagt mir, dass wir eine Funktion brauchen, die einen absoluten Wert zurückgibt. Das heißt, wenn wir sie auf eine negative Zahl anwenden, wird das Ergebnis positiv sein.
Bid und Ask sind die letzten bekannten Geld- und Briefkurse, d.h. der aktuelle Kurs.
SlowMA ist meine umgetaufte Ma
(double SlowMA = iMA(NULL,60,periodSlowMA,0,MODE_EMA,PRICE_MEDIAN,0);)
Die Abweichung des aktuellen Kurses (Bid oder Ask) vom Ma (SlowMA) kann größer oder kleiner als Distans sein. Dementsprechend sollten Sie entweder die erste oder die zweite Losgröße festlegen.
Ich habe Varianten gefunden, bei denen das Lot auf der Grundlage der Einlage oder der Anzahl der offenen Aufträge geändert wird, aber ich kann keine Reaktion auf einen solchen linearen Begriff erhalten.
Irgendetwas sagt mir, dass wir eine Funktion brauchen, die einen absoluten Wert zurückgibt. Das heißt, wenn wir sie auf eine negative Zahl anwenden, wird das Ergebnis positiv sein.
Den absoluten Wert der Differenz zwischen Bid und MA brauchen wir vielleicht etwas später; da Sie den Hinweis nicht verstanden haben, lassen Sie uns jetzt gemeinsam rechnen
Angebot = 1,12730;
MA = 1,12530;
Distans = 20;
Frage:
Wann und ob 1,1273 bis 1,1253 wird mehr als 20 sein?
Aus irgendeinem Grund zeigt mein Taschenrechner nur 0,002 an. Aber das ist weit weg von 20...
Vielen Dank, ich verstehe. Oder Sie können es so machen:
dist=Distan*Punkt;
if (Ask-SlowMA<dist) Lot == Lot1;
if (SlowMA-Bid<dist) Lot == Lot1;
if (Ask-SlowMA>dist) Lot == Lot2;
if (SlowMA-Bid>dist) Lot == Lot2;
Wie mache ich das also richtig?
Vielen Dank, ich verstehe. Oder Sie können es so machen:
dist=Distan*Punkt;
if (Ask-SlowMA<dist) Lot == Lot1;
if (SlowMA-Bid<dist) Lot == Lot1;
if (Ask-SlowMA>dist) Lot == Lot2;
if (SlowMA-Bid>dist) Lot == Lot2;
Wie mache ich das also richtig?
Und jetzt können wir MathAbs() verwenden, um nicht mehr zu viel darüber nachdenken zu müssen, was von was abgezogen werden soll. Und es gibt einen weiteren interessanten bedingten Operator
Lot = MathAbs(Ask-SlowMA) < dist ? Lot1 : Lot2;Das bedeutet: Der Lot-Variable wird der Wert von Lot1 zugewiesen, wenn Ask- SlowMA kleiner als dist ist, ansonsten wird der Wert von Lot2 zugewiesen.
Noch eine Empfehlung: Vergessen Sie die Variable Punkt. Verwenden Sie _Point oder die Funktion Point()
Ich brauche Hilfe, ich bin noch am Lernen...
Und jetzt können Sie MathAbs() anwenden, so dass Sie nicht mehr wissen müssen, was Sie wovon subtrahieren müssen. Und ein weiterer interessanter bedingter Operator
Das bedeutet: Der Lot-Variable wird der Wert von Lot1 zugewiesen, wenn Ask- SlowMA kleiner als dist ist, ansonsten wird der Wert von Lot2 zugewiesen.
Noch eine Empfehlung: Vergessen Sie die Variable Punkt. Verwenden Sie _Point oder die Funktion Point()