Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3824
Beiträge: 36908
Benutzer: 6.076
Aktive Benutzer: 496
Links: 80
Wir begrüßen unseren neuesten Benutzer: Spitzmaus
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 7 Stunden
- Spitzmaus
vor 9 Stunden
- juleslesqu...
vor einem Tag
- hmf44
vor einem Tag
- Crossa
vor einem Tag
- snatshit

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 37
Gesamt: 37
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Werbung

Like Tree6Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 13.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 7
markttechniker befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Ich konnte leider mein eigenes Post nicht korrigieren.
Da fehlt vor der } folgende Zeile:

OldBar = iTime(Symbol(), Period_D1, 0);

traderdoc
Hallo traderdoc!

Vielen vielen Dank dir für deine Antwort!!
Wenn ich dich richtig verstanden habe, dann müsste der Code nun so aussehen..

Code:
string TimeStart = "08:00";
string TimeEnd = "22:00";

if (OldBar != iTime(Symbol(), Period_D1, 0) {
   int candlestart = iBarShift(Symbol(), Period_M5, StrToTime(TimeStart) - 86400;
   int candleend = iBarShift(Symbol(), Period_M5, StrToTime(TimeEnd) - 86400;
   int candlehighest = iHighest(Symbol(), Period_M5, MODE_HIGH, candlestart-candleend, candleend);
   int candlelowest = iHighest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend);
   double high = iHigh(Symbol(), Period_M5, candlehighest);
   double low = iLow(Symbol(), Period_M5, candlelowest);
   OldBar = iTime(Symbol(), Period_D1, 0);
}
Habe ich dich richtig verstanden? Danke schön!
  #12 (permalink)  
Alt 13.06.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

In den Zeilen mit candlestart und candleend fehlt hinten noch ne Klammer.

Und bei bei candlelowest muss es heissen

int candlelowest = iLowest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend);

Das sind so die typischen Schusslichkeitsfehler die mir auch laufend passieren
traderdoc and markttechniker like this.
  #13 (permalink)  
Alt 13.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 7
markttechniker befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ralfbenker Beitrag anzeigen
In den Zeilen mit candlestart und candleend fehlt hinten noch ne Klammer.

Und bei bei candlelowest muss es heissen

int candlelowest = iLowest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend);

Das sind so die typischen Schusslichkeitsfehler die mir auch laufend passieren
Cool, danke dir!!
  #14 (permalink)  
Alt 13.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ralfbenker Beitrag anzeigen
In den Zeilen mit candlestart und candleend fehlt hinten noch ne Klammer.

Und bei bei candlelowest muss es heissen

int candlelowest = iLowest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend);

Das sind so die typischen Schusslichkeitsfehler die mir auch laufend passieren
Korrekt, wenn ich unterwegs bin, kann ich nur über das iPad schreiben und dann sehe ich z.T. das hintere Ende der Zeilen nicht mehr. Und der Korrekturbutton ich manchmal auch nicht anwesend, deshalb hier nochmals der korrigierte Code:

Code:
string TimeStart = "08:00";
string TimeEnd = "22:00";

if (OldBar != iTime(Symbol(), Period_D1, 0) {
   int candlestart = iBarShift(Symbol(), Period_M5, StrToTime(TimeStart) - 86400);
   int candleend = iBarShift(Symbol(), Period_M5, StrToTime(TimeEnd) - 86400);
   int candlehighest = iHighest(Symbol(), Period_M5, MODE_HIGH, candlestart-candleend, candleend);
   int candlelowest = iLowest(Symbol(), Period_M5, MODE_LOW, candlestart-candleend, candleend);
   double high = iHigh(Symbol(), Period_M5, candlehighest);
   double low = iLow(Symbol(), Period_M5, candlelowest);
   OldBar = iTime(Symbol(), Period_D1, 0);
}
traderdoc
markttechniker likes this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #15 (permalink)  
Alt 13.06.16
Mitglied
 
Registriert seit: Oct 2015
Ort: Karlshagen
Beiträge: 199
ralfbenker befindet sich auf einem aufstrebenden Ast
Standard

Aber der Code ist klasse, hab den Code von traderdoc gerade gegen meinen Code zur Rangebestimmung ausgetauscht, mein EA läuft im Backtest viel flüssiger. So sieht der jetzt bei mir mit Sonntagscode aus:

Code:
 if (Oldtime != iTime(NULL,PERIOD_D1,0))
{
candlestart = iBarShift(Symbol(), PERIOD_M5, StrToTime(ErsteKerzeVT) - 86400);
candleend =   iBarShift(Symbol(), PERIOD_M5, StrToTime(LetzteKerzeVT) - 86400);

if (DayOfWeek()==1)
{
candlestart = iBarShift(Symbol(), PERIOD_M5, StrToTime(ErsteKerzeVT) - 3*86400);
candleend =   iBarShift(Symbol(), PERIOD_M5, StrToTime(LetzteKerzeVT) - 3*86400);
}

int candlehighest = iHighest(Symbol(), PERIOD_M5, MODE_HIGH, candlestart-candleend, candleend);
int candlelowest = iLowest(Symbol(), PERIOD_M5, MODE_LOW, candlestart-candleend, candleend);
high = iHigh(Symbol(), PERIOD_M5, candlehighest);
low = iLow(Symbol(), PERIOD_M5, candlelowest);
if (VerfallstagTrading == false)
{
if(DayOfWeek()==5 && Day()>=15 && Day()<=21) TradeAllowed=false;
}


Oldtime=iTime(NULL,PERIOD_D1,0);
}
markttechniker likes this.
  #16 (permalink)  
Alt 14.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 7
markttechniker befindet sich auf einem aufstrebenden Ast
Standard

Hallo Leute,

vielen vielen Dank für eure Antworten und eure große Hilfsbereitschaft!
  #17 (permalink)  
Alt 18.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 4
Ace23 befindet sich auf einem aufstrebenden Ast
Smile

Zitat:
Zitat von MA-EA Beitrag anzeigen
Globale Variablen
Code:
extern string Open_Orders_From = "07:00:00";
extern string Open_Orders_Till = "21:15:00";
nach start
Code:
datetime TC = TimeCurrent();
datetime F = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_From);
datetime T = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_Till);
Order-Bedingung
Code:
if...(TC>F && TC<T)...

Hallo ! Ich bin neu hier programmiere aber schon eine weile Bot's/EA's, da ich seit neustem auch mit Zeiten arbeiten soll wollte ich mich schonmal für dieses Beispiel bedanken da ich so etwas gesucht hatte !

Komme dabei auch gleichzeitig zu einem Problem, sobald ich das benutze anstatt Hour() == xx && Minute () == xx etc. macht mein EA garnichts mehr...^^

Mein Ursprüngliches Problem ist das ich bei den Formeln nur < > oder = zur Verfügung habe wenn ich ihm dann aber mit Hour() etc. sagen will von 16:25 bis 17:10 hab ich das Problem, das er ja nicht zurückspringen kann in der Logik oder übersehe ich dabei etwas ?

Mein Beispiel dazu siehe hier :

extern string Open_Orders_Vorher = "21:50:00";

datetime TC = TimeCurrent();
datetime F = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_Vorher);



void OnTick()
{


if (TC==F){
Comment(Bid, "HALLO");
NB = Bid;

}

Um zu Testen ob er genau zu dem Zeitpunkt den Comment ausgibt mit dem Bid Kurs des Produkt was ich angegeben habe. Daher meine Frage, was muss hier geändert werden das es das Comment ausgibt, er tut hier bei mir nichts nur wenn ich wie oben mit Hour() etc. arbeite ?

Vielen Dank bereits im voraus !
  #18 (permalink)  
Alt 18.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Bitte, bitte für das Danke, Da wirst Du bei mir noch viel mehr finden.

Auch hier gilt, Code mittels des Buttons # schreiben!

Code:
extern string Open_Orders_Vorher = "21:50:00";

datetime TC = TimeCurrent();
datetime F = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Open_Orders_Vorher);

void OnTick() {
   if (TC >= F) {
      Comment(Bid, "HALLO");
      NB = Bid;
   }
}
Wenn da TC == F steht, muss zwingend auf die Sekunde genau ein Tick kommen, der zeitlich identisch mit F ist. Und das wird in den seltesten Fällen so sein. Und soll der Comment dann nur einmal kommen, musst Du mit einem Flag die Mehrmaligkeit ausschließen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #19 (permalink)  
Alt 18.06.16
Neues Mitglied
 
Registriert seit: Jun 2016
Beiträge: 4
Ace23 befindet sich auf einem aufstrebenden Ast
Smile

Danke für die Antwort ! Ok, werde ich berücksichtigen. Das wusste ich nicht, das es so arbeitet, dennoch ist es genau das was ich brauche, dass ich z.B. genau 17:35:01 den Wert abfragen will bzw. ich in einem Intervall von 17:35:01 bis 20:00:00 arbeiten möchte. Der Comment soll solange erscheinen, wie das Intervall andauert um zu testen ob er 1. das Intervall einhält und 2. jeweils den richtigen Wert ausgibt.

Hmm nur dann wird das schwierig mit OnTick damit zu arbeiten, da ich ebenfalls möchte, das er ja jede Sekunde erneut Abfragt ob die Bedingung erfüllt ist und falls ja die Anweisung ausführt.

Hast du oder jemand eine Idee oder ein kleines Code Beispiel wie ich das angehen könnte?
  #20 (permalink)  
Alt 18.06.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.875
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Gut, wenn er jede Sekunde eine Aktion ausführen soll, dann ist die Funktion

OnTimer()

ideal dafür. Lies Dich dazu in die Dokumentation ein.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
mql4, mt4, programmierung, programmierung metatrader, vortageshoch, vortagestief, zeitfenster


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------