Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   EA soll position schließen wenn sie sich MACD kreuzen (http://www.expert-advisor.com/forum/showthread.php?t=3295)

feelfree 24.10.13 10:59

Moin Bardel,

ich werd's jetzt nicht im Detail korrigieren, da du es ja lernen willst.

Also wenn du dir dein Script genau anschaust; was fällt dir auf?

Es gibt 2 Sektionen:
CloseBuy für Long Positionen und CloseSell für Short Positionen.

Dann musst du das auch genau so definieren!

Wenn du dir die erstellten MQ4-Files genau ansiehst wirst du viel über die Programmabläufe lernen.
Für einen produktiven Dauereinsatz auf einem Livekonto sind sie allerdings wegen einiger eingebauter Fehler ungeeignet!

@doc
Es sieht so aus als würde der Builder diese Codes aus den zusammengeklickten Schaubildern generieren.

Bardel 25.10.13 00:14

Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

hast recht ist ja eigentlich auch logisch mit dem definieren der Long oder Short Positionen.

Ich denke der EA sollte jetzt so funktionieren. Wie meinst du "Für einen produktiven Dauereinsatz auf einem Livekonto sind sie allerdings wegen einiger eingebauter Fehler ungeeignet"?

feelfree 25.10.13 09:43

Unter anderem kann es zu unschönen Wechselwirkungen mit anderen EA's oder manuell geöffneten Positionen kommen.

Um nur mal ein Beispiel aus dem Code zu zeigen:

Code:

for (int i = 0; i < Total; i ++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType() <= OP_SELL
      &&  OrderSymbol() == Symbol())

Diese Sektion steht unter //check Position und fragt alle offene Positionen auf dem aktuellen Symbol ab.
Korrekterweise sollte er aber nur alle Positionen mit seiner MagicNumber abfragen.
So kann es passieren das er alle Trades schließt, die sich zufällig auf demselben Symbol befinden.

Der korrekte Code an dieser Stelle wäre:
Code:

for (int i = 0; i < Total; i ++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType() <= OP_SELL
      && OrderSymbol() == Symbol()
      && OrderMagicNumber() = MagicNumber)

Damit verwaltet der EA dann auch nur die Trades, die seiner MagicNumber entsprechen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:28 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum