Dienstag, 16. April 2024, 09:13 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: INVESTOX-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Registrierungsdatum: 23. Oktober 2006

Beiträge: 216

1

Sonntag, 25. Mai 2008, 20:30

Median

Hallo

ich habe soeben mit dem Median berechnet auf den Dax herumexperimentiert und festgestellt, dass dies ein brauchbarer Indikator sein könnte, siehe Anhang. Der von mir hierzu in VBS programmierte Indikator hat jedoch den Schönheitfehler, dass, falls genau gleiche Werte betrachtet werden, eine Fehlberechnung entsteht. Eine einfache Logik zur Vermeidung diese Problems ist mir auf die Schnelle nicht eingefallen. Leider ist in VBS die Medianberechnung nicht wie in vielen anderen Programmiersprachen hinterlegt. Ich habe zumindest nichts gefunden.
Wer von Euch kennt einen Algoritmus mit dem man zu Fuß den Median berechnen kann oder hat ihn in VBS bereits programmiert?
»augustus« hat folgendes Bild angehängt:
  • Median auf Dax.png
Gruß
Augustus

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

2

Sonntag, 25. Mai 2008, 21:50

@augustus

GD(Low+(High-Low)/2, 1, S)

Damit kannst Du auch die Periodenanzahl erhöhen, oder bei mehr Perioden die Glättungsmethode ändern!
Happy Trading

Registrierungsdatum: 23. Oktober 2006

Beiträge: 216

3

Sonntag, 25. Mai 2008, 23:14

Hallo Udo

Danke für die Antwort.
Dein Vorschlag berechnet einen Standard-GD.
Beim Median N handelt es sich um den mittleren Wert der letzen N nach ihrer größe sortierten Daten. Es wird nicht gemittelt sondern erst sortiert und dann der mittlere - bei N=5 der dritte Wert- ausgewählt. Dies führt dazu, dass der Indikator unbeeinflusst durch Extremwerte verläuft aber dennoch schnell genug auf nachhaltige Änderungen reagiert.
Gruß
Augustus

Matthias123

unregistriert

4

Montag, 26. Mai 2008, 00:25

desHallo,

ich denke der Fehler liegt am Sortieralgorithmus (Quicksort??) den Du verwendest. Du kannst ja mal den Code hier rein stellen. Dann wird der Fehler sicherlich gefunden.

Gruss
Matthias

Registrierungsdatum: 23. Oktober 2006

Beiträge: 216

5

Montag, 26. Mai 2008, 21:37

Hier ist die nicht ganz funktionsfähige Median-Berechnung.
»augustus« hat folgende Datei angehängt:
  • Median5.Inn (3,19 kB - 476 mal heruntergeladen - zuletzt: 9. April 2024, 03:39)
Gruß
Augustus

Matthias123

unregistriert

6

Dienstag, 27. Mai 2008, 01:14

Hallo Augustus,

wie ich vermutet habe liegt es an dem "händischen" Sortieralgorithmus. Nimm mal an alle Preis sind gleich, dann ist P(x)=1 (x= 1 bis 5) und somit das Mediandelta nicht definiert.

Ich würde vorschlagen Du nimmst den Quicksortalgorithmus (dann kann N auch variabel sein). Dann würde es etwa so aussehen (habe es aber nicht getestet...also bestimmt ein Fehler drin)

For i = StartIndex + 2 to EndIndex
Price(i) = (HighWert(i) + LowWert(i)) / 2

If i<N then
Mediandelta(i)=0
next
endif

For j= 0 to (N-1)
DeltaPhase(j) = Price(i-j)
next j

Call QuickSortSub(Deltaphase,0,N-1)

Mitte=Int((N-1)/2)
Mediandelta(i)=Deltaphase(Mitte)

Next


' Ergebnisübergabe

For i = StartIndex to EndIndex
Ergebnis(i) = Mediandelta(i)
Next


'Quicksort Algorithmus für VB6 (für VBS muss vielleicht etwas geändert werden)
Public Sub QuickSortSub(Feld() As Double, ByVal LB&, ByVal UB&)
Dim P1&, P2&, Ref$, TEMP$

P1 = LB
P2 = UB
Ref = Feld((P1 + P2) / 2)

Do
Do While (Feld(P1) < Ref)
P1 = P1 + 1
Loop

Do While (Feld(P2) > Ref)
P2 = P2 - 1
Loop

If P1 <= P2 Then
TEMP = Feld(P1)
Feld(P1) = Feld(P2)
Feld(P2) = TEMP

P1 = P1 + 1
P2 = P2 - 1
End If
Loop Until (P1 > P2)

If LB < P2 Then Call QuickSortSub(Feld, LB, P2)
If P1 < UB Then Call QuickSortSub(Feld, P1, UB)
End Sub

ulukai

unregistriert

7

Dienstag, 27. Mai 2008, 21:12

hallo,

ich bekomme immer folgende fehlermeldung(anhang)

ich kenn mich nur in java ein bisschen aus und konnte den bug nicht finden.

das konzept des indikators hört sich interessant an, wenn jemand den fehler findet, wäre echt dufte ...
»ulukai« hat folgendes Bild angehängt:
  • Unbenannt.JPG

Registrierungsdatum: 23. Oktober 2006

Beiträge: 216

8

Dienstag, 27. Mai 2008, 22:19

Matthias

vielen Dank für die Antwort. Den Programm Code kann ich nachvollziehen nur die Umsetzung in VBS macht mir Probleme. QuickSortSub ist wohl ein Unterprogrogarmm oder? Den Befehl selbst habe ich bei VBS nicht gefunden. Könntest Du noch ein paar zusätzliche Informationen liefern?

Danke
Gruß
Augustus

Registrierungsdatum: 23. Oktober 2006

Beiträge: 216

9

Dienstag, 27. Mai 2008, 22:21

ulukai

die Fehlermeldung dürfte ihre Ursache darin haben, dass einfach ein next zu viel aufgeführt ist. Schau Dir mal an von wo nach wo die For-Schleifen gehen müssen. So ist leicht zu erkennen ob ein Next zu viel vorkommt.

Gruß
Gruß
Augustus

Matthias123

unregistriert

10

Dienstag, 27. Mai 2008, 23:52

ext hasHallo Augustus,

Quicksort ist ein Unterprogramm (Activevb.de oder googlen um nähere Informationen zu erhalten). Mit dem Next stimmt leider. Probier es mal so( Deklarationen der Variavlen nicht vergessen..)

If i<N then
Mediandelta(i)=Price(i)

else

For j= 0 to (N-1)
DeltaPhase(j) = Price(i-j)
next j

Call QuickSortSub(Deltaphase,0,N-1)

Mitte=Int((N-1)/2)
Mediandelta(i)=Deltaphase(Mitte)

endif

Matthias123

unregistriert

11

Dienstag, 27. Mai 2008, 23:56

Habe leider kein VBS um es zu testen

ulukai

unregistriert

12

Mittwoch, 28. Mai 2008, 12:54

einen vbs-code kann man doch in inv testen lassen, ob er funktioniet,

Zitat

If i<N then
Mediandelta(i)=Price(i)

else

For j= 0 to (N-1)
DeltaPhase(j) = Price(i-j)
next j

Call QuickSortSub(Deltaphase,0,N-1)

Mitte=Int((N-1)/2)
Mediandelta(i)=Deltaphase(Mitte)

endif



ist das dasselbe wie der längere code?
und wie man in vbs variblen deklariert , weiss ich leider nicht...

und ich habe im ersten code das next gesucht, aber wenn ich eins entfernt habe, taucht woanders ein anderer fehler auf....

könnte jemand vlt. nochmal den richtigen code posten?

und warum geht das nicht in inv-code? gibts da keinen sortieralgorhytmus?

ulukai

unregistriert

13

Mittwoch, 4. Juni 2008, 18:39

gibts vielleicht noch einen anderen indikator, der den mittleren wert ähnlich gut berechnet, wie der im thread angegebene,

konnte bisher den code nicht richtig in INV übernehmen

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

14

Donnerstag, 5. Juni 2008, 09:59

Hallo,

es gibt in Investox den Indikator "Dynamischer Grenzwert", der auch den Median berechnen kann. Hier z.B. über 15 Perioden auf Close-Kurse:

DynGrenze(close, 15, 50, K)

Viele Grüße

Andreas Knöpfel

Wiwu Weiblich

Experte

Registrierungsdatum: 4. September 2002

Beiträge: 1 752

Wohnort: Neuenhagen b. Berlin

15

Donnerstag, 5. Juni 2008, 10:11

Hallo,


... und die Meander-Indikatoren nach Stridsman sind auch Median-Indikatoren.
Viele Grüße von Anke

http://www.ascunia.de