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: 43264
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 6 Stunden
- Sundaytrad...
vor 12 Stunden
- TS_6
vor 2 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 24.10.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard kann TrendWinkel nicht auslesen

Das Skript erstellt 2 Trendlinien OBJ_TRENDBYANGLE.
Die Doku sagt: "Both angle and the second anchor point's coordinates can be used to set the slope of the line." Ich nehme die second anchor point, und zwar die jeweiligen Start- und Endpunkte von 2 Ema-Linien (hier mal manuell festgelegt von Bar 22 zu Bar 21, deren Werte habe ich aus den Buffern abgeschrieben).
Code:
void OnStart()
{
   double StarVal1=1.14395; //Ema(12) Bar 22
   double EndVal1 =1.13479; //        Bar 21
   double StarVal2=1.13408; //Ema(5)  Bar 22
   double EndVal2 =1.11753; //        Bar 21
   
   ObjectCreate(0,"Ema12",OBJ_TRENDBYANGLE,0,Time[22],StarVal1,Time[21],EndVal1);
      ObjectSetInteger(0,"Ema12",OBJPROP_COLOR,clrOrchid);
   ObjectCreate(0,"Ema5",OBJ_TRENDBYANGLE,0,Time[22],StarVal2,Time[21],EndVal2);
      ObjectSetInteger(0,"Ema5",OBJPROP_COLOR,clrOrchid);
   
   double Angle1=ObjectGetDouble(0,"Ema12",OBJPROP_ANGLE);
   double Angle2=ObjectGetDouble(0,"Ema5",OBJPROP_ANGLE);
   Print(
         " °1=",DoubleToStr( Angle1,2),
         " °2=",DoubleToStr( Angle2,2)
        );
   // Eigenschaften zeigt: °1 Ema12 = 288.5
   //                      °2 Ema5  = 280.6
}
Die Linien werden korrekt erstellt.

Gehe ich jetzt auf Eigenschaften einer dieser Linien wird unter "Parmeter" - "Winkel in Grad" der Wert angezeigt. Und genau diesen Wert will ich auslesen.
Das klappt aber nicht. Ich kriege für beide den Wert 0.

Wo ist der Haken an der Sache
(Wenn ich den Winkel wüßte, dann müßte ich ihn nicht auslesen).
Kann jemand helfen? Danke. AVT
Angehängte Grafiken
Dateityp: jpg Unbenannt.JPG (16,6 KB, 3x aufgerufen)
  #2 (permalink)  
Alt 24.10.22
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Nun, ich kann Dir zwar nicht sagen, warum der Winkel nicht auslesbar ist (sofern er das ist), frage mich aber, wie dieser überhaupt zu bestimmen sei. Es ist nicht das erste Mal, dass ein User den Winkel einer Linie wissen möchte. Die Frage ist jedoch primär, nach welchen Kriterien soll der denn "gemessen" werden? Staucht oder streckt man die x- oder y-Achse wird jedesmal ein anderer Winkel resultieren. Wir haben es hier auch nicht mit einem kartesischen Koordinatensystem zu tun, indem man aus dem Anstieg über den Tangens den Winkel errechnen kann, so dass die "Messbarkeit" oder "Bestimmbarkeit" ins Reich des relativen Betrachtung fällt.
Somit stellt sich dann die Frage nach der Sinnhaftigkeit und Verwertbarkeit dieser Winkelaussage.

traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #3 (permalink)  
Alt 25.10.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
Nun, ich kann Dir zwar nicht sagen, warum der Winkel nicht auslesbar ist (sofern er das ist), frage mich aber, wie dieser überhaupt zu bestimmen sei.
Schade, ich hatte gehofft, daß nur mal wieder irgendeinen Fehler im Code ist, den ich übersehe
Das Bestimmen überlasse ich dem MT.
Wenn ich sowieso eine Linie anlege, dachte ich mir, anstatt einer normalen Trendline eben mal eine AngleLinie zu nehmen (aussehen tun sie ja beide gleich und auch das Erzeugen ist identisch).
Und wenn ich mit ObjectSetDouble den Angle setzen kann, dann müßte ich mit ObjectGetDouble den Wert doch auch auslesen können, egal, ob der nun 100% richtig ist oder nicht. Jedenfalls sagt meine Doku zu OBJPROP_ANGLE "For the objects with no angle specified, created from a program, the value is equal to EMPTY_VALUE". Der Empty Value ist aber was anderes als die 0, die ich bei Abfrage erhalte.
Zitat:
Zitat von traderdoc Beitrag anzeigen
Es ist nicht das erste Mal, dass ein User den Winkel einer Linie wissen möchte. Die Frage ist jedoch primär, nach welchen Kriterien soll der denn "gemessen" werden? Staucht oder streckt man die x- oder y-Achse wird jedesmal ein anderer Winkel resultieren. Wir haben es hier auch nicht mit einem kartesischen Koordinatensystem zu tun, indem man aus dem Anstieg über den Tangens den Winkel errechnen kann, so dass die "Messbarkeit" oder "Bestimmbarkeit" ins Reich des relativen Betrachtung fällt.
Somit stellt sich dann die Frage nach der Sinnhaftigkeit und Verwertbarkeit dieser Winkelaussage.
Wie der MT die intern berechnet ist mir eigentlich schnurz, genauso wie die Tatsache, daß deren 0° auf 3 Uhr liegt, solange 300° nicht zu 350° mutieren, kann man die Angabe als zusätzliche Grobschätzung verwenden, das war eigentlich die einzige Idee dahinter, auf die Schnelle z.B. die Richtung des Ema zu erkennen ohne die ganzen Schörkel und Schleifen in ihm (und bei mir bleiben die Winkel gleich, selbst bei Timeframewechsel - verhält sich halt wie ne Trendlinie mit all ihren Vor- und Nachteilen, allerdings ist z.Zt. der Markt geschlossen).

Und nein, als Signal/Trigger für irgendwelche Trades verwende ich so etwas nicht, da gibt es bessere Wege. Scheint so als könnte ich diese Idee vergessen, denn die Linie von einem höheren Timeframe ist auf dem M1 nicht mehr zu sehen (jedenfalls nicht wenn sie weiter entfernt liegt), daher der Grad (den kann man ja irgendwo in einer Ecke anzeigen und man verliert die Richtung nicht - so nach dem Motto bei Sturm SSO sollte man nicht auf den Mast klettern, sonst wird man Haifischfutter).

Danke Doc für Deine Antwort.
  #4 (permalink)  
Alt 25.10.22
AVT AVT ist offline
Elite Mitglied
 
Registriert seit: Mar 2018
Ort: Hamburg
Beiträge: 612
AVT befindet sich auf einem aufstrebenden Ast
Thumbs down Update

Wenn ich die Linien mittels Winkel erzeuge, ist das Ausslesen des Winkelwertes kein Problem.
Code:
void OnStart()
{
   double StarVal1=1.12464;
   double StarVal2=1.10128;

   ObjectCreate(0,"EmaA",OBJ_TRENDBYANGLE,0,Time[18],StarVal1,0,0);
      ObjectSetDouble(0,"EmaA",OBJPROP_ANGLE,349.7);
      ObjectSetInteger(0,"EmaA",OBJPROP_COLOR,clrYellow);
   ObjectCreate(0,"EmaB",OBJ_TRENDBYANGLE,0,Time[18],StarVal2,0,0);
      ObjectSetDouble(0,"EmaB",OBJPROP_ANGLE,335.2);
      ObjectSetInteger(0,"EmaB",OBJPROP_COLOR,clrYellow);
   
   double AngleA=ObjectGetDouble(0,"EmaA",OBJPROP_ANGLE);
   double AngleB=ObjectGetDouble(0,"EmaB",OBJPROP_ANGLE);
   Print(
         " °A=",DoubleToStr( AngleA,2),
         " °B=",DoubleToStr( AngleB,2)
       ); //Resultat: °A=349.70 °B=335.20
}
Ich betrachte das als Bug, denn laut eigener Doku sollte im Fall, daß beim Erstellen kein Winkel benutzt wird, der OBJPROP_ANGLE gleich EMPTY_VALUE sein - dementsprechend wären Angle1 und Angle2 beim Ausleseversuch =2147483647 und eben nicht 0 (denn Null ist gültiger Winkelwert!!)
AVT
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 00:24 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.
-----------------------------------------------------------------------------------------------------------------------------