|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
EA is not trading alone
Hallo,
ich bin noch neu und fange gerade an mich mit eas und der programmierung zu beschäftigen Ich habe mit erst mal einen einfach mit dem ExpertAdvisorBuilder gebastelt und versuche den nun zu verstehen und am Code zu verändern. Dabei habe ich sofort ein Problem festgestellt. Mein EA handelt nicht alleine, ich kann AKS manuell bestätigen, aber sobald ich ihn alleine handeln lassen möchte, macht er garnichts mehr. Ich vermute der Fehler liegt irgendwo in dem folgenden Code, aber ich verstehe den nicht: Zitat:
VG Benga |
|
|||
Vielelicht hast du ja unter der option nciht alle hacken gesetzt.. Sodass er nur trades eingeht die du auch manuell bestätigts...
|
|
|||
Ne, ich habe 4 andere EAs am laufen. nur der macht so ein unsinn. Wenn ich manuell bestätigen anmache, dann tradet er (ich muss es halt nur manuell bestätigen). Er soll das aber alleine machen. und wenn ich die manuell trading option weg mache, die live trading aber anlasse, dann macht er garnichts mehr. außer meine manuell gemachten trades einfach zu schließen ^^
|
|
|||
Hallo,
hast du einen ECN Broker? Dann must du eine Order erst ohne SL und TP setzen und anschließend per OrderModify hinzufügen. z.B. Code:
ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue); OrderModify(ticket,OrderOpenPrice(),StopLossLevel,TakeProfitLevel,0,0); naranjoe |
|
|||
DANKE!
Ich habe einen ECN Broker, aber ich dachte er ignorierte die SL und TP einfach, dass er dann die Punkte einfach nur nicht einträgt. |
|
|||
Zitat:
VG und Danke Marc
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... |
|
|||
Das sollte so mit jedem Broker funktionieren.
Gruß naranjoe |
|
|||
Hallo zusammen
Das Thema scheint zwar schon etwas älter zu sein, aber ich denke mein Probem passt hier am besten hinein: Ich bin gerade dabei mich ein wenig in mql4 ein zu arbeiten und habe mal versucht einen EA zu programmieren, der (der einfachheit halber bei der Initialisierung) einen Kaufbefehl ausführt. nach langem herumbasteln und durch miteinbeziehen der Info dieses Threads hab ich jetzt folgenden Code: Code:
extern double lot=0.1; extern int takeprofit=40; extern int stoploss=40; extern int magic=12331; int ticket=0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- Alert("EA erfolgreich geladen!"); openbuy(); //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- //---- return(0); } //+------------------------------------------------------------------+ void openbuy() { ticket=OrderSend(Symbol(), OP_BUY, lot, Ask, 3, NULL, NULL, NULL, magic, Blue); OrderModify(ticket, OrderOpenPrice(), Ask-stoploss*Point, Ask+takeprofit*Point,0, Blue); OrderPrint(); } Kann mir vieleicht jemand sagen, was ich falsch gemacht habe? Liebe Grüsse Mizu PS: Das Konto ist überigens ein Demokonto von easy-forex, falls das eine Rolle spielen sollte... |
|
|||
Moin Mizu,
der Aufruf openbuy() gehört in die int start() Sektion. int init() wird nur ein Mal bei der Initialisierung aufgerufen und dann nicht mehr. Der OrderModify Befehl wird vermutlich nicht ausgeführt weil er erstens unmittelbar auf OrderSend folgt aber die Bestätigung/Rückmeldung deines Brokers noch nicht erfolgt ist. Und zweitens du die Ticketnummer gar nicht kennen kannst weil sie von deinem Broker vergeben wird. Für den zweiten Versuch musst du also erst die gültige Ticketnummer ermitteln bevor du sie an die OrderModify Funktion übergibst und dann klappt's auch mit der Änderung. Ich würde die Funktionen sauber trennen. Grob skizziert: if Order < 1 {OpenBuy()} if Order > 0 {OrderModifiy()} Grüße Dan |
|
|||
@feelfree
ticket=OrderSend(...) gibt natürlich erstmal die Tickernummer zurück. Alles läuft beim MQL der Reihe nach, also sequenziell ab. ticket ist dann mit der vergebenen Ticketnummer belegt. Allerdings sollte man vor einem OrderModify(...) zuerst OrderSelect(ticket,...) benutzen. Wenn der OrderSelect positiv ist, dann erst sollte man OrderModify(...) aufrufen. Gruß Joe |
Lesezeichen |
Stichworte |
ea, ea handelt nicht, expert-advisor, expert-advisor handelt nicht, expertadvisorbuilder, mql4, programmierng, programmierung metatrader |
|
|