![]() |
|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
![]() |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
![]()
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 } Gehe ich jetzt auf Eigenschaften einer dieser Linien wird unter "Parmeter" - "Winkel in Grad" der Wert angezeigt. Und genau diesen Wert will ich auslesen. ![]() 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 |
|
|||
![]()
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. |
|
|||
![]() Zitat:
![]() 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:
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. ![]() |
|
|||
![]()
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 } AVT |
![]() |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|