- MQL4 arbeitet nicht mit Handels für Indikatoren sondern direkt mit denen - stell den Kursor auf iMA im Editor und drück F1 und lese, was iMA() zurückgibt!! MQL4 und MQL5 unterscheiden sich das grundsätzlich nicht vermischen!!
- MQL4 kann keine Indikatoren (in OnDeinit()) 'freigeben', wenn Du zB iMA mit immer neuen Parametern startest kannst Du so viele iMA starten, bis der ganze RAM weg ist und der PC abstürzt.
- Warum orientiert Du Dich nicht an einem EA mit zwei oder drei MA (zB. Alligator) aus der Codebase und kopierst von da, was Du brauchst?
- Wenn OrderModify 130 auswirft ist meist der Preis Schuld: Ask und Bid vertauscht, Preis zu nah am aktuellen oder auf der 'falschen' Seite! Druck den aktuellen, die gesendeten und den Eröffnungspreis aus. Tipp Ich verwende für SL und TP nicht Bid und Ask sondern einfach OrderClosePrice() ist dann immer der richtige!
- MQL5 hat jetzt diese Funktion für historische Ticks: https://www.mql5.com/de/docs/series/copyticksrange
- www.mql5.com
Okay damit ich das verstanden habe:
1. Ich brauche in MQL4 keine Handles... Hat das Nachteile?
2.Keine OnDeinit()... Verstanden. Bei 2 iMA's sollte es jedoch keine Probleme geben oder?
3. danke für den Link zur CodeBase... Alligator ist ja Indikator & noch dazu für den MT5
int OnCalculate(const int rates_total, const int prev_calculated, const datetime &Time[], const double &Open[], const double &High[], const double &Low[], const double &Close[], const long &TickVolume[], const long &Volume[], const int &Spread[]) { //--- check for rates total if(rates_total<ExtBarsMinimum) return(0); // not enough bars for calculation //--- not all data may be calculated int calculated=BarsCalculated(ExtJawsHandle); if(calculated<rates_total) { Print("Not all data of ExtJawsHandle is calculated (",calculated,"bars ). Error",GetLastError()); return(0); } calculated=BarsCalculated(ExtTeethHandle); if(calculated<rates_total) { Print("Not all data of ExtTeethHandle is calculated (",calculated,"bars ). Error",GetLastError()); return(0); } calculated=BarsCalculated(ExtLipsHandle); if(calculated<rates_total) { Print("Not all data of ExtLipsHandle is calculated (",calculated,"bars ). Error",GetLastError()); return(0); } //--- we can copy not all data int to_copy; if(prev_calculated>rates_total || prev_calculated<0) to_copy=rates_total; else { to_copy=rates_total-prev_calculated; if(prev_calculated>0) to_copy++; } //---- get ma buffers if(IsStopped()) return(0); //Checking for stop flag if(CopyBuffer(ExtJawsHandle,0,0,to_copy,ExtJaws)<=0) { Print("getting ExtJawsHandle is failed! Error",GetLastError()); return(0); } if(IsStopped()) return(0); //Checking for stop flag if(CopyBuffer(ExtTeethHandle,0,0,to_copy,ExtTeeth)<=0) { Print("getting ExtTeethHandle is failed! Error",GetLastError()); return(0); } if(IsStopped()) return(0); //Checking for stop flag if(CopyBuffer(ExtLipsHandle,0,0,to_copy,ExtLips)<=0) { Print("getting ExtLipsHandle is failed! Error",GetLastError()); return(0); } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
-> Welchen Teil des OnCalculate müsste ich nun Daraus Kopieren & durch "MAlang" & "MAkurz" ersetzen (Bzw was kann ich mir sparen)?
->Was sind denn nun Handles & Wofür wird on Calculate verwendet?
4.Bid & Ask verwende ich nur für das eröffnungssignal... Für das Setzen von SL & TP wird kein Bid/Ask verwendet sondern "OrderOpenPrice() * XYZ"...:
->Das Problem müsste also daran liegen, dass der "Preis zu nah am aktuellen oder auf der 'falschen' Seite!" liegt.
-> Wie printe ich in diesem Fall den aktuellen Preis & den gesendeten Preis aus? (Eröffnungspreis ist ja (OrderOpenPrice()"))
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo Liebe Forennutzder,
ich wäre euch extrem dankbar, wenn ihr Ordnung in meine Verwirrung schaffen könntet:
(Mein Broker macht momentannur MT4 und werde deswegen erstmal nicht wechseln. &
Es wird irgendwie trotzdem eine Lösung geben Müssen, schließlich resultiert bei der Optimierung im strategietester auf irgendeine art und weise eine Positive Summe.)
1.Copybuffer gibts nicht in MT4, bzw ist dieses ganze Array & Buffer drumherumgerede in MT4 überhaupt nötig? (in MT5 ist es ja unumgänglich)(In MT4 ... ich glaube eher weniger...Funktioniert nämlich überhaupt nicht wenn ich irgendwas versuche in der OnInit() zu starten. (bzw habe dann logischerweise auch keinen zugriff auf die Deklaration in der OnTick().)
vvvvvvvvv
2. Gibt es nicht eine Alternative um sicherzugehen, dass genug Arrays im Buffer sind? Copybuffer geht nicht in MT4, aber was ist mit der ArrayCopy() funktion??? wie müsste ich diese im Beispiel unten anwenden? (Das sind die 2 MA's:)
3.1 Was zum **** ist denn nun ein "Handle"? (für dummies) (bekomme ständig ein neues bild davon -> Verwirrung) 3.2 Was macht OnCalculate? (verstehe die definition im forum nicht ganz)-> wozu brauch ich das?
4.Was kann ich Tun um Fehler vorzubeugen? Folgendes kommt mir da in den Sinn:
5. Zuguterletzt noch eine letzte Frage zu MQL 5 Wie kann ich Den Ask- und Bid-kurs so aufrufen, dass ich ihn in einen Buffer speichern kann (und wie kriege ich letzeres hin)... (Copybuffer kann nur Int als "Indicator type" verarbeiten---> Forexpaare haben aber Dezimalstellen (=double)