|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Verbiete Mehrfachtrades
Sooo... Nächster Anlauf. ^^ Habe mal auf fxdaytrader's Abfrage weitergebaut...
Code:
//+----------------------------------------------------------------+ //| Befindet sich in der Nähe gerade ein bereits aktiver Trade? | //| Wenn ja, ist kein weiterer Trade erlaubt! | //+----------------------------------------------------------------+ // Zuerst für die Buy-Order bool GetDenyBuy() { bool DenyTrade =false; for (int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if (!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; if (OrderMagicNumber()!=magic) continue; if (OrderOpenPrice()+noTradeRange>=Ask) continue; if (OrderOpenPrice()-noTradeRange<=Ask) continue; { DenyTrade =true; } } return(DenyTrade); } // Jetzt die Sell-Order bool GetDenySell() { bool DenyTrade =false; for (int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if (!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; if (OrderMagicNumber()!=magic) continue; if (OrderOpenPrice()+noTradeRange>=Bid) continue; if (OrderOpenPrice()-noTradeRange<=Bid) continue; { DenyTrade =true; } } return(DenyTrade); } Ziel ist, den Bid und Ask immer mit den bereits getätigten Orders zzgl. einer konfigurierbaren Range zu vergleichen und dadurch eine allgemeine boolsche Trading-Erlaubnis für den EA zu erhalten... |
|
|||
Schluß für heute. Steig heute wohl nicht dahinter, warum das Ding nie true/1 wird.
Oben war noch ein Fehler, mit dem continue hab ich natürlich immer abgebrochen. Code:
//+----------------------------------------------------------------+ //| Befindet sich in der Nähe gerade ein bereits aktiver Trade? | //| Wenn ja, ist kein weiterer Trade erlaubt! | //+----------------------------------------------------------------+ // Zuerst für die Buy-Order bool GetDenyBuy() { bool DenyTrade =false; for (int cnt=OrdersTotal()-1; cnt>=0; cnt--) { if (!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) continue; if (OrderSymbol()!=Symbol()) continue; if (OrderMagicNumber()!=magic) continue; if ((NormalizeDouble(OrderOpenPrice()+noTradeRange,Digits)>=Ask)&& (NormalizeDouble(OrderOpenPrice()-noTradeRange,Digits)<=Ask)){ DenyTrade =true; } } return(DenyTrade); } Gute Nacht! |
|
|||
Guten Tag! Ist zufällig jemand langweilig? Ich steig einfach nicht drüber.
Danke! |
|
|||
Also vorweg, Langeweile habe ich keine, aber Mitleid, wie Du Dich hier abquälst.
Die Variable DenyTrade fasse ich mal aus dem sinnvollen Kontext so auf, dass falls die true ist, dem Programm mitgeteilt werden soll, dass sich in der Nähe ein offener Trade befindet. Sollte das die Interpretation dieser Variable sein, dann funktioniert das Prinzip evtl. nicht, weil bei if ((NormalizeDouble(OrderOpenPrice()+noTradeRange,Di gits)>=Ask)&& (NormalizeDouble(OrderOpenPrice()-noTradeRange,Digits)<=Ask)){ DenyTrade =true; } die Variable noTradeRange einen falschen Wert hat. Welchen hat sie denn z.B.? traderdoc |
|
|||
Vielen Dank für dein Mitleid, ich versuche mich wirklich selbst durch zu graben.
noTradRange will ich als Parameter von außen übergeben und soll zB 2 für 2 Pips enthalten. Würde eine Sperrzone von "Ask +/- 2Pip" ergeben. So die Theorie? |
|
|||
Nun, wenn auch tatsächlich die Zahl 2 für 2 Pips übergeben wird, dann wird das nicht gehen.
Denn die 2 Pips müssen in eine Dezimalzahl umgewandelt werden, indem 1. der Einfluß des Digits des Brokers eingeht und 2. die Umwandlung in eine Dezimalzahl realisiert wird. Also z.B. Multiplier = 1; if(Digits == 3 || Digits == 5) Multiplier = 10; noTradeRange *= Multiplier; noTradeRangevalue = NormalizeDouble(noTradeRange * Point, Digits); Das alles muß in der init() stehen. Vorher in den globalen Variablen noch noTradeRangevalue als double deklarieren und dann in Deinen schon geschriebenen Code statt noTradeRange schreiben. traderdoc |
|
|||
Danke schön!!!
Dann werd ich mal probieren, ob ich das klar kriege. |
Lesezeichen |
Stichworte |
magic id, magicnumber, mehrfachorder, mehrfachorders, mql4, order, programmierung, programmierung metatrader |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|