|
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 |
|
|||
OrderSend (Anfängerfrage)
Liebe Forengemeinschaft,
ich bin Neuling in der Programmierung des Metatraders und wollte ein Skript schreiben, dass eine Long-Order ausführt. Also habe ich das Standardbeispiel genommen und einfach nach meinen Wünschen abgeändert. Hier ist mein Skript: #property copyright "Alexander Jansen" #property link "" #include <stdlib.mqh> #include <WinUser32.mqh> //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,NUL L,0,0,CLR_NONE); if(ticket<1) { int error=GetLastError(); Print("Error = ",ErrorDescription(error)); return; } //---- return(0); } //+------------------------------------------------------------------+ Das funktioniert auch schön. Da ich gerne einen Stopp-Loss einfügen möchte, habe ich die entsprechende Zeile abgeändert zu int ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-30*Point,0,NULL,0,0,CLR_NONE); Und das funktioniert nicht mehr. Egal, was ich als SL einsetze (0.1, 10, 100, Ask-30 etc.), der Metatrader eröffnet keine Order. Nur wenn dort eine 0 steht, dann wird die Order eröffnet. Was habe ich falsch gemacht? Vielen Dank schonmal im voraus für jede Hilfe. Alexander |
|
|||
hmm die sieht eigendlich soweit sauber aus...
gut oben hast nen fehler drinne NULL und NUL L aber ich denke das kommt vom copy and paste das hier ist meine BUY order und die funktioniert super ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-10*Point,Ask+10*Point," Frogger V1 Buy",16384,0,Green); |
|
|||
funktioniert leider auch nicht
Hallo rekors,
danke für die schnelle Antwort. die NUL L liegt vermutlich am Zeilenumbruch, denn bei mir steht dort wirklich NULL. Leider klappt es auch mit Deinem Code nicht. Ich handel den DAX-SEP11. Ich hab auch schon überlegt, ob es vielleicht am Faktor liegt, also Ask-10*Points oder Ask-1000*Points oder Ask-0.01*Points. Es hilft jedoch alles nichts. |
|
|||
iAsk=NormalizeDouble(Ask,Digits);
int ticket=OrderSend(Symbol(),OP_BUY,0.1,iAsk,3,iAsk-30*Point,0,NULL,0,0,CLR_NONE); So sollte es klappen. Du musst NormalizeDouble verwenden. Hoffe es hilft. |
|
|||
Hallo erstmal,
falls das mit den NormalizeDouble nicht klappt, gäbe es noch folgende Erklärung: Es gibt Broker mit Kontentypen, wo man nicht gleich einen Stoploss und oder Target mit der Order setzen kann. Abhilfe schafft dann ein nachträgliches Modify der Order auf die gewünschten Werte. Ich mache das nur noch so und habe seitdem keinerlei Probleme mehr, es sei denn, man hält die Mindestdifferenz von ca. 2 x Spread nicht ein. Im Expertlog steht gewöhnlich bei Orderproblemen auch eine Fehlernummer. Diese Fehlernummer kannst du in Verbindung mit MQL4 googlen und wirst sicher fündig. Zumeist gibts da auch noch jede Menge Tips, wie man das jeweilige Problem löst. Gruß Joe |
|
|||
Danke für Eure Hilfe,
leider funktioniert es immer noch nicht. Ich habe den Verdacht, dass Joes Vermutung richtig ist. Ich werde mit meinem Broker sprechen und das Ergebnis posten. Viele Grüße Alexander |
|
|||
da brauchst Du doch nicht Deinen Broker fragen:
iAsk=NormalizeDouble(Ask,Digits); int ticket=OrderSend(Symbol(),OP_BUY,0.1,iAsk,3,0,0,NU LL,0,0,CLR_NONE); f_OrderModify(ticket,iAsk-iStopLoss*Point,iAsk+iTakeProfit*Point,CLR_NONE); Probieren und nicht aufgeben |
Lesezeichen |
Stichworte |
mql4, ordersend, programmierung, programmierung metatrader, sl, stoploss, stopploss |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|