|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Bitte Hilfe für absoluten noob
Hallo,
ich stehe absolut am Anfang mit EA's fange auch gerade an mich einzulesen, möchte meinen Ansatz aber auch gerne hier im Forum schildern um auf Grundlage Euren Feedbacks ganz praktisch anzusetzen. Meine Marschrichtung ist folgende: Ein EA soll jeden Tag ein mal laufen und folgendes tun: 1. auf derselben Maschine, wo MT4 läuft prüfen, ob in einem bestimmten Verzeichnis eine bestimmte Datei liegt. (Wenn nein, dann Ende) 2. Wenn ja, dann eine Position öffnen mit definiertem TP und SL (zB. +/- 100 Pips). (Ende) (Die Positionen sollen so lange laufen, bis TP oder SL erreicht sind.) Das ist alles ! :-) Könntet Ihr mich bei diesem Vorhaben mit konstruktiven Vorschlägen / Infos / Gedanken / Codeschnippseln etc. "anschubsen" ? Dankesehr !! |
|
|||
Hallo,
also am besten ist es erstmal selber zu probieren. D.h. man benutzt den eingebauten Editor und Compiler. Zunächste schaut man sich die Beispiele an und lernt so programmieren. Ein bischen hier und da verändern, die Hilfeeinrichtung zu MQ4 lesen und immer wieder ausprobieren.... Was Du beschrieben hast ist easy, bis vielleicht auf die Dateiüberprüfung, aber dann sieht man schonmal das Du Dich bemühst, und dann hilft man Dir sicher gerne weiter. LG Joe |
|
|||
Wie programmiere ich es am einfachsten, dass an jedem Werktag der EA exakt ein mal läuft, zB. um 10:00 Uhr morgens ?
Danke ! |
|
|||
Zitat:
Code:
// do not work on holidays. if(DayOfWeek()==0 || DayOfWeek()==6) return(0); |
|
|||
@pako, das ist doch nur ne halbe Sache!
Machen wir es doch vollständig: Code:
if(DayOfWeek()==0 || DayOfWeek()==6) return(0); if (Day() != OldDay) { Flag = true; OldDay = Day(); } if (Flag && TimeCurrent() >= StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + "10:00")) { //einmaliger Durchlauf!! Flag = false; return(0); } else return(0); traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Danke schon mal, mit dem Input kann ich etwas anfangen !
Melde mich nochmal wenn der nächste Step eine zu hohe Hürde zu sein scheint ... |
|
|||
Hallo,
ich wieder: Wie kann ich am einfachsten von meinem EA eine Position öffnen lassen, vorausgesetzt folgende Paramater sind bekannt / fix: Beispiele: Ticker/Symbol = EURUSD Richtung = LONG Lotgröße = 0.01 StopLoss = -139 Pips TakeProfit = +139 Pips Meine Versuche bisher mit "OrderSend" (OrderSend - MQL4 Documentation) waren nicht von Erfolg gekrönt ... ;-/ Danke !! |
|
|||
vielleicht komme ich der Sache näher ...
im Augenblick quält mich die Frage, wie im EA ein %Symbol% definiere. Ich möchte mich zunächst auf EURUSD beschränken. Ohne dass ich erkennen kann warum will mein EA immer USDCHF beackern. dankbar für jeden Tipp ! |
|
|||
Stand jetzt:
Ich versuche mit int ticket=OrderSend("EURUSD",OP_BUY,1,price,3,stoplos s,takeprofit,"My order",0,0,Green); eine Prosition zu öffnen. Bei Lauf des EA öffnet er mir einen USDCHF Chart und gibt mir über Alerts aus, dass er zB. mit folgenden Werten arbeiten wollte: Price = 0.93705000 TP = 0.93788000 SL = 0.93588000 Vermute das muss gerundet gerundet werden auf "0.xxxx", oder ?! OrderSend failed with Error #4109 Immer wenn ich meinen EA starte habe ich die Möglichkeit einen Haken zu setzen bei "Life trading zulassen", was ich auch mache. (zZt. natürlich noch DemoAccount). Das würde ich mir auch gerne sparen. Warum USDCHF, wenn ich in der Zeile ausdrücklich "EURUSD" stehen habe ?! Tipps ? Danke !! |
|
|||
bin echt am verdreifeln:
Z.B dieses Script (jetzt mal kein EA):
int start() { int ticket,iSlipPage,iSLPips,iTPPips; double dStopLoss, dTakeProfit,dLots; string sText,sArrow; iSLPips=100; //Stop Loss in Pips iTPPips=100; //Take Profit in Pips dLots=0.01; //Amount of Lots iSlipPage=3; sText="My Order"; //Order Text sArrow=CLR_NONE; //Order Arrow Color dStopLoss=Bid-NormalizeDouble(iSLPips*Point,MarketInfo("EURUSD", MODE_DIGITS)); dTakeProfit=Ask + NormalizeDouble(iTPPips*Point,MarketInfo("EURUSD", MODE_DIGITS)); ticket=OrderSend("EURUSD",OP_BUY,dLots, Ask,iSlipPage,dStopLoss, dTakeProfit,sText,000,0,sArrow); if(ticket<0) { Alert("OrderSend failed with error #",GetLastError()); Alert("Ask-Price = ", Ask); Alert("Bid-Price = ", Bid); Alert("SL = ", dStopLoss); Alert("TP = ", dTakeProfit); } return(0); } Liefert mir als Ausgabe: ----------------------------------------------------- TP = 0.9464 SL = 0.9439 Bid-Price = 0.9449 Ask-Price = 0.9454 OrderSend failed with error #4109 ----------------------------------------------------- Warum sind dies Werte (Preise), die auf USDCHF passen, wo ich doch ausdrücklich EURUSD angebe ? und warum #4109 ? Was ist da falsch ? Danke ! |
Lesezeichen |
Stichworte |
datei, datei prüfen, ea, expert advisor, mql4, programmierung, programmierung metatrader, verzeichnis |
|
|