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)
-   -   kann TrendWinkel nicht auslesen (http://www.expert-advisor.com/forum/showthread.php?t=7261)

AVT 24.10.22 14:41

kann TrendWinkel nicht auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
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 :confused:
(Wenn ich den Winkel wüßte, dann müßte ich ihn nicht auslesen).
Kann jemand helfen? Danke. AVT

traderdoc 24.10.22 22:58

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

AVT 25.10.22 03:34

Zitat:

Zitat von traderdoc (Beitrag 46375)
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 46375)
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. :)

AVT 25.10.22 16:50

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


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:12 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