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.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43252
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 16.04.20
Neues Mitglied
 
Registriert seit: Feb 2020
Beiträge: 20
chesstigran befindet sich auf einem aufstrebenden Ast
Standard 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
  #2 (permalink)  
Alt 16.04.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

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
}
  #3 (permalink)  
Alt 16.04.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TogoTiger Beitrag anzeigen
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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #4 (permalink)  
Alt 16.04.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Standard

ä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.
  #5 (permalink)  
Alt 16.04.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von TogoTiger Beitrag anzeigen
ä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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #6 (permalink)  
Alt 16.04.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #7 (permalink)  
Alt 16.04.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 16.04.20
Mitglied
 
Registriert seit: Dec 2015
Beiträge: 85
TogoTiger befindet sich auf einem aufstrebenden Ast
Smile

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
  #9 (permalink)  
Alt 16.04.20
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von chesstigran Beitrag anzeigen
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
  #10 (permalink)  
Alt 16.04.20
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

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
Thema geschlossen

Lesezeichen

Stichworte
zeit abgleichen, zeit einstellen, zeit vergleichen

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 11:59 Uhr.





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