Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Ab 8:00 anfangen zu scannen (http://www.expert-advisor.com/forum/showthread.php?t=6631)

chesstigran 16.04.20 00:04

Ab 8:00 anfangen zu scannen
 
Hallo Leute,

ich habe einen EA der darauf basiert die letzen 3 Kerzen nach der aktuell offenen Kerze zu scannen.

Wichtig wäre es für mich das er erst ab 8 Uhr anfängt die Kerzen zu scannen, ich habe mir einige Gedanken gemacht und einige Sachen versucht zu programmieren allerdings gingen die komplett in die falsche Richtung. Hat jemand von euch vielleicht Ideen wie man das ganze angehen kann.

Danke an euch im Voraus <3

TogoTiger 16.04.20 06:14

Zeit abfragen:

void OnTick()
{
string Zeit = TimeToStr(TimeCurrent(),TIME_MINUTES);

if (Zeit > "22:59" || Zeit < "08:00")
{
Print ("Kein Handel. Zeit: ",Zeit);
return;
}

hier das was du machen willst bei OnTick
}

traderdoc 16.04.20 10:54

Zitat:

Zitat von TogoTiger (Beitrag 43515)
Zeit abfragen:

void OnTick()
{
string Zeit = TimeToStr(TimeCurrent(),TIME_MINUTES);

if (Zeit > "22:59" || Zeit < "08:00")
{
Print ("Kein Handel. Zeit: ",Zeit);
return;
}

hier das was du machen willst bei OnTick
}

Ne, das funtioniert so überhaupt nicht. Strings miteinander vergleichen geht nicht.

Aber das würde gehen:

if (TimeCurrent() > StringToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " 22:59")
|| TimeCurrent() < StringToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " 08:00"))
{
...
}

traderdoc

TogoTiger 16.04.20 11:28

äh, sorry, Traderdoc. Das geht aber bei mir. Machen meine EA's schon immer so und traden schön in der Zeit, die ich will.

traderdoc 16.04.20 11:53

Zitat:

Zitat von TogoTiger (Beitrag 43517)
äh, sorry, Traderdoc. Das geht aber bei mir. Machen meine EA's schon immer so und traden schön in der Zeit, die ich will.

Sorry @TogoTiger, ich nehme alles zurück und erweitere damit meinen Horizont, um die Erkenntnis, dass der Compiler, auf welche Weise auch immer, zwei Zeitstrings miteinander vergleichen kann.

Man lernt nie aus.

traderdoc

traderdoc 16.04.20 12:16

Wie bist Du darauf gekommen, dass zwei Zeitstrings vergleichbar sind
oder wo hast Du das gelesen?
Ich google derzeitig, finde aber nur die Versionen der vorherigen Wandlung der Angabe "HH:MM" in int oder datetime.

traderdoc

traderdoc 16.04.20 12:59

Dss ist ja irre, selbst solche Abfragen werden korrekt beantwortet:

string Zeit = "05.16.2020 07:58:00";

if (Zeit > "04.16.2020 22:59" || Zeit < "03.16.2020 08:00") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}

Das lässt doch nur den Schluss zu, dass der Compiler, warum auch immer, aus dem String einer Zeitangabe die Variable vorher in den gewohnten int- bzw. datetime-Typ umwandelt.

Selbst diese Angabe-Form der Zahl funktioniert:

string Zeit = "09";

if (Zeit > "10" || Zeit < "05") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}

Die wiederum aber nicht:

string Zeit = "6";

if (Zeit > "10" || Zeit < "5") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}

Das
string Zeit = "45";

if (Zeit > "99" || Zeit < "5") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
ergibt ein true!?

Aber das
string Zeit = "55";

if (Zeit > "99" || Zeit < "5") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}
ergibt ein false, was in gewisser Weise evtl. noch logisch wäre, weil 55 zwischen 99 und 5 liegt. (Nur 45 ja auch!)

Aber warum der boolsche Logikwechsel zwischen 45 und 55??

Das wird wiederum richtig erkannt:

string Zeit = "160";

if (Zeit > "199" || Zeit < "150") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}

Das wiederum auch nicht:

void OnTick()
{
//string Zeit = TimeToStr(TimeCurrent(),TIME_MINUTES);

string Zeit = "160";

if (Zeit > "99" || Zeit < "15") {
Print ("Kein Handel. Zeit: ",Zeit);
return;
}
Print ("Handel. Zeit: ",Zeit);
}

Es scheint also so, dass die Strings immer vergleichbar ist, wenn die Zahlen dieselbe Anzahl Stellen besitzen.

Sehr merkwürdig!

traderdoc

TogoTiger 16.04.20 13:10

Woher ich das habe, weiss ich auch nicht mehr. Ich habs grad nochmals ausprobiert

string Zeit = TimeToStr(TimeCurrent(),TIME_MINUTES);
Print (Zeit);

bringt sauber 12:00

2 Strings vergleichen habe ich wohl einfach gewohnheitsmässig gemacht. Ich programmiere schon seit Urzeiten oft auf VAX, Alphas und OpenVMS-Systemen in einem Basic-Dialekt. Da kann man ohne weiteres Strings vergleichen und so wird das wohl in meine EAs gerutscht sein.

Aber warum soll man Strings nicht vergleichen können? Der Compiler macht das doch einfach Byte für Byte.

Seh grad, du hast dich sehr damit beschäftigt. Ich guck das mal genauer an, aber nciht grad jetzt. Muss einer Alpha was beibringen

MA-EA 16.04.20 13:40

Zitat:

Zitat von chesstigran (Beitrag 43514)
Hallo Leute,

ich habe einen EA der darauf basiert die letzen 3 Kerzen nach der aktuell offenen Kerze zu scannen.

Wichtig wäre es für mich das er erst ab 8 Uhr anfängt die Kerzen zu scannen...

https://docs.mql4.com/dateandtime/hour

https://docs.mql4.com/dateandtime/minute

AVT 16.04.20 13:42

Ich habe mal einen reinen String versucht:
Code:

extern string    Name1 = "Emil";  // 1. Name
extern string    Name2 = "Ludwig";// 2. Name (Ede, Emilia)

  if( Name1 > Name2 )                                    //"Emil">"Ludwig"?
      Print("4. Name1 ",Name1," > ",Name2 );
  else
    Print("4. Name1 ",Name1," <= ",Name2 );
//Resultat Emil Ludwig: Emil <= Ludwig
//Resultat Emil Ede  : Emil > Ede
//Resultat Emil Emilia: Emil <= Emilia

Sieht so aus, als würden selbst strings Buchstabe für Buchstabe analysiert und geordnet. Heißt wir brauchen keine Sortierfunktion ??
AVT


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:54 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum