Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43265
Benutzer: 7.224
Aktive Benutzer: 74
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 15 Stunden
- Sundaytrad...
vor 22 Stunden
- TS_6
vor 3 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 04.05.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

In der Tat hätte da auch Time[1] statt Time[2] stehen müssen.
Code:
if (EMA10_2 > EMA20_2 && EMA10_1 < EMA20_1) datetime time1 = Time[1];  
if (EMA10_2 < EMA20_2 && EMA10_1 > EMA20_1) datetime time1 = Time[1];
Man müsste jetzt sicherlich auch unterscheiden, ob das Rechteck im laufenden Betrieb gebildet und nach rechts verbreitert werden soll oder ob die Rechtecke retrospektive eingezeichnet werden sollen.

Im laufenden Betrieb wird das Rechteck beginnend von Time[1] bis Time[1] !!! gezeichnet und mit jedem Weiterrücken nach rechts jetzt entweder gelöscht und incl. Verbreiterung neu gezeichnet oder in der Funktion ObjectMove() wird die 1. Zeitangabe die sein, nachdem die EMAs gekreuzt hatten und die zweite Zeitangabe wäre dann wieder Time[1], usw. bis die nächste Kreuzung erscheint. Das nächste Rechteck muss dann entweder einen neuen Namen tragen oder das alte wird gelöscht.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #12 (permalink)  
Alt 04.05.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 126
Angel befindet sich auf einem aufstrebenden Ast
Standard

Als hätte ich es Time[1] nicht geahnt...

Ja für einen Rückblick sollten die Rechtecke retrospektiv gezeichnet werden. Wobei das Problem wäre: Wie weit retro? Zeitangabe? Oder Anzahl der Candles?
Um danach natürlich aktuell weiterzurücken und das aktuelle zu zeichnen, sollten die Bedingungen vorhanden sein (Z.B. EMA 2 > EMA 4).
Hm...
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
  #13 (permalink)  
Alt 04.05.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 126
Angel befindet sich auf einem aufstrebenden Ast
Standard

Ist der Code , unter den Umständen ein Rechteck zu kreieren, denn eigentlich Korrekt?

PHP-Code:
ObjectCreate(0,"Rechteck",OBJ_RECTANGLE,0,Time[1],1.19100,Time[1],1.20100);
ObjectSetInteger(0,"Rechteck",OBJPROP_COLOR,clrBlueViolet );
ObjectSetInteger(0,"Rechteck",OBJPROP_WIDTH,);
ObjectSetInteger(0,"Rechteck",OBJPROP_SELECTABLE,true);
ObjectSetInteger(0,"Rechteck",OBJPROP_BACK,true); 
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
  #14 (permalink)  
Alt 04.05.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 126
Angel befindet sich auf einem aufstrebenden Ast
Standard

So, nun mal das komplette Prog in MQL4. Ich bekomme nicht einmal ein Rechteck angezeigt... Hier für EMA 2 und 4 auf M1 (Zu Testzwecken ):

PHP-Code:
#property copyright "Angel"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
datetime time1,time2;
         
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnInit()
  {  
   
ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  
ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
  {               

double EMA10_1 iMA(NULL210101); // "NULL"= (Current Chart) , Timeframe , Periode ("0"=Current , "1"=M1 usw), MA_Shift , MA_Method ("0"=SMA,"1"=EMA usw) , Enum_Applied_Price ("0"=Close , "1"=Open usw) , shift)
double EMA10_2 iMA(NULL410102);
double EMA20_1 iMA(NULL210101);
double EMA20_2 iMA(NULL410102);

if (
EMA10_2 EMA20_2 && EMA10_1 EMA20_1)  time1 Time[1];  
if (
EMA10_2 EMA20_2 && EMA10_1 EMA20_1)  time1 Time[1];

{

ObjectCreate(0,"Rechteck",OBJ_RECTANGLE,0,Time[1],1.19100,Time[1],1.20100);
ObjectSetInteger(0,"Rechteck",OBJPROP_COLOR,clrBlueViolet );
ObjectSetInteger(0,"Rechteck",OBJPROP_WIDTH,);
ObjectSetInteger(0,"Rechteck",OBJPROP_SELECTABLE,true);
ObjectSetInteger(0,"Rechteck",OBJPROP_BACK,true); 
}

return(
0);      

__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
  #15 (permalink)  
Alt 04.05.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Der Code für das Zeichnen des Rechteckes ist korrekt, nur wird zu Beginn das Rechteck nicht angezeigt, weil die beiden Zeiten identisch sind und MQL nicht mal dafür einen Strich zeichnet. Das würde sich aber mit der nächsten Kerze ändern. Mit Time[1] in der Funktion ObjectCreate kannst Du aber nicht arbeiten. Auf jeden Fall nicht so wie im Kontext des Codes. Außerdem müss jedes Rechteck einen anderen Namen bekommen, also z.B. "Rechteck" + (string)time1,
dann würde hinter dem Wort die Zeit angehängt werden, welche zu Beginn des Zeichnens vorlag.

Nur wie schon beschrieben, wenn die Rechtecke retrospektive gezeichnet werden sollen, dann muss so oder so die Programmmierung anders laufen.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #16 (permalink)  
Alt 07.05.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 126
Angel befindet sich auf einem aufstrebenden Ast
Standard

Ok, dass jedes neu gezeichnete Rechteck einen neuen / eigenen Namen bekommen muss, leuchtet mir nun ein.
Das könnte man ja aber umgehen, indem ein Rechteck mit dem gleichen Namen immer neu gezeichnet wird..?! Nur mal als Alternative. ich stochere ja noch im Blinden rum...
Ok, ich habe mal einen Code entwickelt:
Die Y-Werte habe ich mal Fix und ohne Hintergedanken angenommen, damit sie halt mal da sind.Interessant sind für mich ja die X-Werte. Hier auf M1 im EUR/USD und mit den Grenzen "10.te Kerze" und "3.te Kerze".

PHP-Code:
int start()
{
 
ObjectDelete("Rechteck");      
 
ObjectCreate("Rechteck"OBJ_RECTANGLE0iTime(NULL,1,10), 1.21000iTime(NULL,1,3), 1.19000);      
 
ObjectSetInteger(0,"Rechteck",OBJPROP_COLOR,clrBlueViolet);
return(
0);               

Das Rechteck wird mit
PHP-Code:
 ObjectDelete("Rechteck"); 
immer neu gezeichnet. Der Bereich "wandert" halt mit, was für Schnittpunkte der GDs (Gleitende Durchschnitte) ja nicht erwünscht ist. Die wandern ja auch nicht mit, sondern bleiben an deren Schnittpunkten in der Vergangenheit. Sorry für die Ausführlichkeit, aber hier lesen ja noch blutigere Anfänger als ich mit...
So, hier haben wir als X-Werte also die Anzahl der zurückliegenden Candles.

Ich sehe folgendes Problem:
Ich will die Schnittpunkte ja auch "retrospektive" angezeigt bekommen und natürlich die aktuellen. Wenn ich den PC nach einer Stunde aus und wieder anschalte, so müsste ich ja immer warten, bis ein GD wieder geschnitten wird und somit die Grenzen eingefärbt würden.
Beim Schnitt der GDs : Kann man da die X-Werte in einem Zeitformat "abgreifen" und verwenden? Gibt es da eine Funktion? Oder muss man immer umständlich zurückrechnen? Gibt es eine Funktion o.ä. die man ähnlich verwenden kann wie " time 1 = 07.05.2018, 14:12 Uhr" ? Das wäre natürlich der komfortabelste Weg....
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
  #17 (permalink)  
Alt 08.05.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 126
Angel befindet sich auf einem aufstrebenden Ast
Standard

Muss ich denn - um retrospektiv anzeigen zu lassen, wo der Kurs auf M1 die EMA200 geschnitten hat, zB i=5000 annehmen und wirklich jede M1-Candle untersuchen, ob sie drüber oder drunter war...?
Und somit mit der Anzahl der Kerzen arbeiten (ZB vor 3546 M1-Kerzen schnitt der Kurs oder die EMA eine bestimmte andere EMA und bei 2545 M1-Kerzen schnitt der Kurs die EMA wieder von der anderen Richtung)
Ist das wirklich der einzige Ansatz, wie man die Hintergrundfläche zwischen diesen beiden Grenzen einfärben kann?

Kurz: Geht die Bestimmung der X-Werte über die Kerzen oder die Zeit und wie wendet man sie denn an?
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang

Geändert von Angel (08.05.18 um 23:09 Uhr)
Thema geschlossen

Lesezeichen


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 +2. Es ist jetzt 10:05 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.
-----------------------------------------------------------------------------------------------------------------------------