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: 3990
Beiträge: 38006
Benutzer: 6.303
Aktive Benutzer: 353
Links: 80
Wir begrüßen unseren neuesten Benutzer: Donani
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor einem Tag
- Donani
vor 2 Tagen
- dularus
vor 4 Tagen
- beeo
vor 6 Tagen
- mkraibache...
vor 6 Tagen
- fob

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

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 28.03.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 62
Angel befindet sich auf einem aufstrebenden Ast
Standard Pivot-Linien über 3 Tage hinweg anzeigen

Hi,

ich möchte mir die Pivotlinien über einen Zeitraum der letzten 3 Tage und gleichzeitig von heute anzeigen lassen. Die Pivotlinien sollen natürlich dauerhaft im Chart bleiben bzw. vielleicht (Resourcengründe) nach 10 Tagen gelöscht werden.
Nun will ich nur das Prinzip verstehen, und daher konzentriere ich mich nur auf die Tagespivotlinie.
Ich habe massive Probleme mit der Definition und Begrenzung der Linien, zb. von vorgestern 00:00 Uhr bis vorgestern 23:00 Uhr, also nur 23 Stunden.
Ich habe zum Linienzeichnen mal OBJ-TREND genommen.

PHP-Code:
ObjectDelete(0"LINIE"); //Falls die Linie mal verschoben wird, so wir sie gelöscht und neu gezeichnet
DH1=iHigh(NULL,PERIOD_D1,1);
DC1=iClose(NULL,PERIOD_D1,1);
DL1=iLow(NULL,PERIOD_D1,1);
DPP NormalizeDouble((DH1+DL1+DC1)/3,Digits);

ObjectCreate(0,"LINIE",OBJ_TREND,0,Time[0],DPP,iTime(Symbol(),PERIOD_D1,0),DPP);
ObjectSetInteger(0,"LINIE",OBJPROP_COLOR,Col );
ObjectSetInteger(0,"LINIE",OBJPROP_WIDTH,);
ObjectSetInteger(0,"LINIE",OBJPROP_SELECTABLE,true);
ObjectSetInteger(0,"LINIE",OBJPROP_SELECTED,true);
ObjectSetInteger(0,"LINIE",OBJPROP_FILL,false);
ObjectSetInteger(0,"LINIE",OBJPROP_BACK,false); 
Kann mir jemand helfen, wie ich die Zeiten von 00:00 Uhr bis 23:00 Uhr in der ObjectCreate-Funktion angebe? Das ist noch so eine große Schwierigkeit für mich....
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
Mit Zitat antworten
  #2 (permalink)  
Alt 28.03.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 62
Angel befindet sich auf einem aufstrebenden Ast
Standard

Hm.... mir fällt gerade auf.... mit "OBJ_TREND" wird es kaum gehen... da geht die Linie auf der einen Seite ins "Unendliche"...
Was könnte man denn noch nehmen?
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
Mit Zitat antworten
  #3 (permalink)  
Alt 28.03.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.043
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

OBJ_TREND ist schon völlig korrekt, nur fehlt bei Dir folgende Zeile:

ObjectSet(objectname, OBJPROP_RAY, false);

und dann klappt es auch mit der zeitlichen Begrenzung und der Darstellung der Geraden als Strecke.

Code:
ObjectCreate(0,"LINIE",OBJ_TREND,0,StringToTime("00:00"),DPP,StringToTime("23:00"),DPP);
Damit wird erst einmal die Linie am aktuellen Tag von 00:00 bis 23:00 gezeichnet.
Wenn nun die Linie zu diesen Zeiten am gestrigen (i = 1) oder vorgestrigen Tag (i = 2) gezeichnet werden soll, dass muss einfach ein Vielfaches der Tagessekunden jeweils abgezogen werden:

Code:
int x = 86400;
int i;               // mit i = 0 ... n
ObjectCreate(0,"LINIE",OBJ_TREND,0,StringToTime("00:00")-i*x,DPP,StringToTime("23:00")-i*x,DPP);
Viel Spaß!

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

Oh... Traderdoc... weißt Du, wie lange ich nach diesem Prozedere suchte und wie lange ich rumknobeln musste..? Ich freue mich so sehr... Danke sehr !!!

Soblad es fertig ist, stelle ich den Code hier online...!

Boa, das bringt mich jetzt sehr viel weiter..!!!
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
Mit Zitat antworten
  #5 (permalink)  
Alt 28.03.18
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.043
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Na dann, fasse es als mein spezielles Ostergeschenk für Dich auf.

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

So, ich habe mal etwas programmiert :-)
Es werden die (klassischen) Pivotpunkte auch brav angezeigt... Aber nur von heute - trotz Schleife!!!
Da sitzt man vor dem Metaeditor... dreht hier ein bisschen, und da ein bisschen, verändert dies und das.... und es verändert sich nix
Es werden wohl die heutigen Werte angezeigt (Habe ich mit einem bewährten Pivot-Template gecheckt, das ich drübergelegt habe), aber es werden keine Linien für die vorigen 2 bzw. 3 Tage angezeigt. Die Linien der vergangenen Tage werden einfach nicht gezeichnet.... Dies auch wieder nur eine vereinfachte Form, denn ich habe vor, diese Tagesschleife später in einer Wochenschleife für die Wochen-Pivots laufen zu lassen. Aber zuerst muss ich wissen, wie ich die Zeitwerte der X-Achse hinbekomme und wie die Linien der vergangenen Tage gezeichnet werden. Die Profis haben es doch sicher auf einen Blick erkannt, was da faul ist ?!?!
PHP-Code:
{             //Tagespivotpunkte
               
for (D=1;D<=3;D++)
                  { 
//Tages-Schleife-Anfang                 

                  
DHl=iHigh(0,PERIOD_D1,D);
                  
DCl=iClose(0,PERIOD_D1,D);
                  
DLl=iLow(0,PERIOD_D1,D);
                  
DPP NormalizeDouble((DHl+DLl+DCl)/3,Digits);
                  
DR1 NormalizeDouble((2*DPP)-DLl,Digits);
                  
DR2 NormalizeDouble(DPP+(DHl-DLl),Digits);
                  
DR3 NormalizeDouble(2*(DPP-DLl)+DHl,Digits);
                  
DS1 NormalizeDouble((2*DPP)-DHl,Digits);
                  
DS2 NormalizeDouble(DPP-(DHl-DLl),Digits);
                  
DS3 NormalizeDouble(DS1-(DHl-DLl),Digits);
                  
ObjectCreate(0,"TAGES-Pivot",OBJ_TREND,0,StringToTime("00:00")-((D-1)*86400),DPP,StringToTime("23:00")-((D-1)*86400),DPP);
                  
ObjectCreate(0,"TAGES-R1",OBJ_TREND,0,StringToTime("00:00")-((D-1)*86400),DR1,StringToTime("23:00")-((D-1)*86400),DR1);
                  
ObjectCreate(0,"TAGES-R2",OBJ_TREND,0,StringToTime("00:00")-((D-1)*86400),DR2,StringToTime("23:00")-((D-1)*86400),DR2);
                  
ObjectCreate(0,"TAGES-R3",OBJ_TREND,0,StringToTime("00:00")-((D-1)*86400),DR3,StringToTime("23:00")-((D-1)*86400),DR3);
                  
ObjectCreate(0,"TAGES-S1",OBJ_TREND,0,StringToTime("00:00")-((D-1)*86400),DS1,StringToTime("23:00")-((D-1)*86400),DS1);
                  
ObjectCreate(0,"TAGES-S2",OBJ_TREND,0,StringToTime("00:00")-((D-1)*86400),DS2,StringToTime("23:00")-((D-1)*86400),DS2);
                  
ObjectCreate(0,"TAGES-S3",OBJ_TREND,0,StringToTime("00:00")-((D-1)*86400),DS3,StringToTime("23:00")-((D-1)*86400),DS3);                  
 
                  
ObjectSetInteger(0,"TAGES-Pivot"OBJPROP_RAYfalse);
                  
ObjectSetInteger(0,"TAGES-Pivot",OBJPROP_COLOR,250);
                  
ObjectSetInteger(0,"TAGES-Pivot",OBJPROP_WIDTH,);
                  
ObjectSetInteger(0,"TAGES-Pivot",OBJPROP_SELECTABLE,true);
                  
ObjectSetInteger(0,"TAGES-Pivot",OBJPROP_SELECTED,true);
                  
ObjectSetInteger(0,"TAGES-Pivot",OBJPROP_FILL,false);
                  
ObjectSetInteger(0,"TAGES-Pivot",OBJPROP_BACK,false); 
                          
}
//Tagesschleife-Ende 
Für die ObjectSetInteger-Abteilung muss ich mir auch noch was überlegen... wie ich das mit einer Schleife hinbekomme... Sonst wären das ja 7 x 7 Zeilen.. und das pro Tag! Ich habe mir überlegt, dass die Funktion "StringConcatenate" vielleicht geeignet wäre, mehrere Strings zusammenzukleben.. Vielleicht so:
PHP-Code:
for (i=1;i<=7;++)
{
Bezeichnung=StringConcatenate("TAGES-R",i);
                  
ObjectSetInteger(0,BezeichnungOBJPROP_RAYfalse); 
                  
ObjectSetInteger(0,Bezeichnung,OBJPROP_COLOR,250);
                  
ObjectSetInteger(0,Bezeichnung,OBJPROP_WIDTH,);
                  
ObjectSetInteger(0,Bezeichnung,OBJPROP_SELECTABLE,true);
                  
ObjectSetInteger(0,Bezeichnung,OBJPROP_SELECTED,true);
                  
ObjectSetInteger(0,Bezeichnung,OBJPROP_FILL,false);
                  
ObjectSetInteger(0,Bezeichnung,OBJPROP_BACK,false);  

Mal sehen, ich werde es später ausprobieren, wichtiger erscheint mir, warum nicht an den anderen Tagen die Pivotlinien gezeichnet werden..
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
Mit Zitat antworten
  #7 (permalink)  
Alt 29.03.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 62
Angel befindet sich auf einem aufstrebenden Ast
Standard

Offensichtlich muss für jeden Tag, an dem eine Linie gezeichnet werden soll, ein neuer Name für die Linie vergeben werden
Das bedeutet, wenn man die Pivots der vergangenen 3 Tage mit einer for-Schleife durchrechnen lassen will, so muss man bei Zeichnen der Pivot-Linien deren unterschiedliche Namensvergabe berücksichtigen, d.h. Pivot1, Pivot2 usw. Was mich wiederum zu dem zweiten Teil der Frage bringt: Wie füge ich denn einem String (der zwingend erforderlichen Bezeichnung einer Pivotlinie) eine Zählvariable hinzu, so dass aus "Pivot" dann "Pivot1" , Pivot2" usw. wird?!
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
Mit Zitat antworten
  #8 (permalink)  
Alt 29.03.18
AVT AVT ist offline
Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 58
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Angel Beitrag anzeigen
Wie füge ich denn einem String (der zwingend erforderlichen Bezeichnung einer Pivotlinie) eine Zählvariable hinzu, so dass aus "Pivot" dann "Pivot1" , Pivot2" usw. wird?!
Code:
   string PivotLevelName="Pivot";
   for(int i=1; i<=6; i++)  // mal angenommen es sind 6
   {
      string Levelname=( PivotLevelName+IntegerToString(i) );
      Print("Levelname=",Levelname);
   }
wäre meine Lösung. AVT
__________________
heute schon gelacht?
Mit Zitat antworten
  #9 (permalink)  
Alt 29.03.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 62
Angel befindet sich auf einem aufstrebenden Ast
Standard

Super - Einwandfrei!
Ich habe das Prinzip verstanden und es klappt auch.
Nun fängt die Schachtelung an.
ABER was ich soooooo nicht bedacht habe:
An den Sonntagen zwischen 23:00 Uhr und 00:00 Uhr bildet er mir nun Pivotpunkte. Das sowie das Ergebnis ist natürlich der größte Unsinn.
Kann man diese Zeit irgendwie herausfiltern? So "Alles was Sonntag ist" oder "alles, was generell zwischen 23:00 Uhr und 00:00 Uhr liegt".

Aufgrund der Länge meiner Pivotpunkte, die sich über den gesamten Tag erstreckt, kann ich sagen, dass sie sich wirklich auf den Zeitraum 0000 - 2300 beziehen und nicht umgekehrt auf den Zeitraum 23:00 - 0000.
__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
Mit Zitat antworten
  #10 (permalink)  
Alt 04.04.18
Mitglied
 
Registriert seit: Dec 2017
Ort: 76891
Beiträge: 62
Angel befindet sich auf einem aufstrebenden Ast
Standard

So, nun habe ich mal einen Tages-Pivot programmiert, der die Tagespivotpunkte der vergangenen 6 Tage anzeigen soll. Das war gar nicht sooooo einfach
Nun macht er mir bei den letzten beiden Tagespivotpunkten eine Linie über die letzten beiden Tage, was vermutlich wegen der Osterfeiertage / Monatswechsel geschuldet ist - oder findet jemand den Fehler?
Die Linie soll natürlich nur über dem jeweiligen Tag liegen.

PHP-Code:
#property copyright "Angel (c)"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window

double DHl,DCl,DLl,DPP,DR1,DR2,DR3,DS1,DS2,DS3;
int Z;

//+-----------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {  
   
ObjectsDeleteAll();
   return(
0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start()
 {           
            {for (
Z=Z<=6Z++)
 
                { 
                  
Comment("   Z = ",Z);
                  
DHl=iHigh(NULL,PERIOD_D1,Z);
                  
DCl=iClose(NULL,PERIOD_D1,Z);
                  
DLl=iLow(NULL,PERIOD_D1,Z);
                  
DPP NormalizeDouble((DHl+DLl+DCl)/3,Digits);

                  
ObjectCreate(0,(Z-1),OBJ_TREND,0,(iTime(NULL,PERIOD_D1,(Z-1))),DPP,(StringToTime("22:59")-((Z-1)*86400)),DPP);                                       
                  
ObjectSetInteger(0,Z-1,OBJPROP_RAYfalse);
                  
ObjectSetInteger(0,Z-1,OBJPROP_COLOR,White );
                  
ObjectSetInteger(0,Z-1,OBJPROP_WIDTH,);
                  
ObjectSetInteger(0,Z-1,OBJPROP_SELECTABLE,true);
                  
ObjectSetInteger(0,Z-1,OBJPROP_BACK,true); 
                }    
            }

return(
0);

__________________
MQL4-Interessiert... und noch gaaaanz am Anfang
Mit Zitat antworten
Antwort

Lesezeichen


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 +2. Es ist jetzt 23:24 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 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.
-----------------------------------------------------------------------------------------------------------------------------