Autor |
|
_Stephan
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 46
|
|
Hallo Leute,
mich interessiert folgende Idee: Ist es möglich in EL den aktuellen Wert einer TL in Realtime abzufragen bzw. mit weiteren Werten vergleichen? Mit TL_GetValue kann man m.E. jeden Wert zu einem bestimmten Zeitpunkt abfragen. Gibt es eine Möglichkeit den Wert der aktuellen bar zu benutzen? Ich könnte mir vorstellen, daß es eine Möglichkeit geben könnte mit irgend einer Variablen, die immer den letztmöglichen Zeitpunkt definiert, den aktuellen Wert über TL_GetValue abzufragen. Aber wie....?
Gruß Stephan
|
|
06.06.2001, 20:10 |
|
_Jim Douglas
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 59
|
|
hallo Stephan,
interessante Frage, wenn ich Dich richtig verstehe. Ich habe schon oft überlegt ein System zu schreiben, sodaß die Entfernung Close - Trendlinie getradet wird. Das im Uptrend, natürlich. Umgekehrt im Downtrend.
etwa:
StpPrice = TL_GetValue(UpLine, Date, Time); if close - StpPrice > StdDev(close,15) * Factor then begin exitlong; end; if close - StpPrice < StdDev(close,15) * 0.5 then begin buy next bar at open; end; if close crosses under StpPrice then begin Exitlong; end;
usw. es gibt meistens ein Range in einem Uptrend, besonders wenn der Markt volatile ist. Konnte interessant sein.
viel Glück,
Jim
|
|
06.06.2001, 23:10 |
|
_Stephan
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 46
|
|
Hallo Jim,
dein Gedanke ist auch interessant, mein Ansatz war jedoch den Ausbruch zu handeln, also den "Trendlinienbruch". Bin jetzt beim Testen der Variante: TL1 = TL_New(D,T,V,D,T,V); TLV = TL_GetValue(TL1,Date,Time); If C > TLV Then ...
Gruß
|
|
07.06.2001, 14:10 |
|
_Alfredo
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 1
|
|
|
07.06.2001, 16:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
Hallo, Stephan!
Den Weg, den Du beschreitest ist soweit schon korrekt, da Du vermutlich bei den übergabeparametern in der Funktion TL_New(...) zwei voneinander verschiedene Punkte eingibst, den nur so kann die interne Klassenroutine überhaupt erst die Geradengleichung aufbauen.
Neben der Funktion TL_New(...), mit der Du eine neue Gerade generierst, die sich das Chartfenster unter der Linien-Referenznummer merkt, die die Funktion als Rückgabewert liefert, kannst Du aber auch gezielt manuell eingezeichnete Linien in einem Chartfenster ansprechen, wenn Du die Referenznummer dieser Linie kennst. Diese wird Dir als TrendLine # LN in einem Informationsfenster angegeben, wenn der Mauszeiger auf die Linie steht und dann die linke Maustaste gedrückt gehalten bleibt.
Diese LinienNummer LN setzt Du dann als Inputvariable, die Du als Referenznummer in die TL_Get....(LNref,...)- und TL_Set...(LNref),...)-Funktionen benutzen kannst.
Input: LNref(-1); vars: TL_Price(0);
if LNref > 0 then TL_Price=TL_GetBeginVal(LNref);
Die Verwaltung einer weiteren Anzahl von Trendlinien ist natürlich möglich, doch es muß beachtet werden, daß manuelles Löschen und Neuzeichnen von Linien, zur Numerierungsveränderung führt. Die Funktionen TL_GetFirst(...) und TL_GetNext(...) können für Verwaltungsaufgaben hilfreich eingesetzte werden, so z.B., um zu Testen ob eine gültige Trendlinien-Referenznummer bei der Input-Eingabe vorliegt oder nicht.
Immer die Richtigen Ergebnisse wünscht Uwe
|
|
07.06.2001, 18:10 |
|
_Stephan
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 46
|
|
Hallo Uwe,
echt stark, deine Anregung dazu! Check doch mal meine neue Überlegung im folgenden Syntax:
Inputs: Length(3); Variables: TrendL1(-1),TrendLExt(-1), ArrayDat(0),TrendLVal(0); Arrays: TLDate[10](0), TLTime[10](0), TLVal[10](0);
If SwingHighBar(1, High, Length, Length+1)=Length Then Begin For Value1 = 9 DownTo 0 Begin TLDate[Value1+1] = TLDate[Value1]; TLTime[Value1+1] = TLTime[Value1]; TLVal[Value1+1] = TLVal[Value1]; End; TLDate[0] = Date[Length]; TLTime[0] = Time[Length]; TLVal[0] = High[Length];
For Value22 = 1 To 10 Begin If TLVal[Value22] > TLVal[0] Then Begin ArrayDat = Value22; Value22 = 11; End; End;
If Value22 <> 11 Then Begin If TrendLExt >= 0 Then Begin TL_Delete(TrendL1); End; TrendL1 = TL_New(TLDate[ArrayDat], TLTime[ArrayDat], TLVal[ArrayDat], TLDate[0], TLTime[0], TLVal[0]); If TrendL1 >= 0 Then Begin TrendLExt = TL_SetExtRight(TrendL1, True); TL_SetColor(TrendL1, yellow); End; End; End;
If TrendL1 <> -1 Then TrendLVal = TL_GetValue(TrendL1,Date,Time);
If C crosses above TrendLVal Then ....
Die Ansätze für diesen Code habe ich teilweise aus den Beispielen in der TS, habe aber trotzdem ordentlich geschwitzt dabei. Was hälts du davon? Erste Tests sehen eigendlich sehr vielversprechend aus.
Gruß Stephan
|
|
08.06.2001, 10:10 |
|
_Uwe
Administrator
Dabei seit: 12 2001
Herkunft: User altes Forum
Beiträge: 313
|
|
Hallo, Stephan!
Das ist eine schöner Baustein, den Du auch ohne weitere IF-Abfragen, nach dem "Tripple-End" als Indikator verwenden kannst. Erweiternd kann man nun natürlich auch den automatischen "Fächer" programmieren.
Selbst GANN-Winkel können automatisch erstellt werden, wenn das Low zwischen den beiden Highs festellt um so eine charaktieristische Teilung zu finden.
Nachfolgende Grafik ist halbautomatisch entstanden, indem definierte Trendlinien, die manuell in den Chart gelegt sind, den Startpunkt mit den Punkten A und den Punkt A mit dem Punkt B verbinden. Durch die Übergabe der Referenznummern an den Indikator UR_Pitchfork, wird die Linienschar gezeichnet und der Text, der die Steigung der Mittelachse angibt (-1.3932/Bar), geschrieben.
Eine weitere Anwendungsmöglichkeit habe ich zur Darstellung der Umschlagszonen bei Schiebezonen nach Ross gefunden. Zur Darstellung möchte ich auf einen Beitrag von mir, im frama-Forum verweisen.
Weiterhin kreatives Schaffen und auf einen regen und effektiven Gedanken- und Erfahrungsaustausch hoffend wünsche ich alles Gute Uwe
|
|
08.06.2001, 13:10 |
|
|