Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1063
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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()