Freitag, 19. April 2024, 21:29 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.

Mario

unregistriert

1

Donnerstag, 13. Januar 2011, 00:53

GD auf Array erstellen

Hallo,
ich komme leider alleine nicht weiter und bräuchte bitte eure Hilfe.
Ich möchte gerne einen GD auf einen Array erstellen und kriegs leider nicht hin.

Ausgangslage:

StartI = ErsteDatenPeriode(Daten)
EndI = LetzteDatenPeriode(Daten)

Fo1 = "RSLongIndiATRKompS(High,"& cStr(F3) &", "& cStr(F7) &" )"
if ScriptberechneFormel(Fo1, R) then

For i = StartI to EndI

if (R(i) = NoValue) then
else

if(r <> R(i)) then

w1 = w
w = R(i)

if(w1 > 0) then
Zähler = Zähler + 1
differenz = differenz + Abs(w - w1)
durchschnitt = differenz / Zähler
end if

end if
r = R(i)
end if
Ergebnis(i) = durchschnitt

Next


end if

Ergebnis: Der Durchschnitt aller w zum Zeitpunkt x
Da es sich hier um eine Volatilitätsabhängige Berechnung handelt würde ich gerne nur die letzten bspw. 14 w als gleitenden Durchschnitt als Berechnungsgrundlage verwenden, da historisch hohe Volatilitäten den Durchschnitt überproportional beeinflussen.

Alle meine bisherigen Versuche bisher waren leider nicht zielführend.
Weiß jemand Rat ?

Viele Grüsse
Mario

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Mario« (13. Januar 2011, 01:09)


Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

2

Donnerstag, 13. Januar 2011, 01:58

Einen einfachen GD auf das Array ist das aber nicht, was Du da berechnen willst.
Und ein GD auf W wird das imho auch nicht, was Du da berechnest, oder ich steh auf dem Schlauch.
kurzer Tip, wie ich glaube, dass man es lösen kann


Dim w(14),w_zaehler,w_komplett
w_zaehler=0
w_komplett=0

jedesmal wenn ein neues w auftaucht

if w_zaehler=14 then
w_komplett=1
w_zaehler=0
end if

w_zahler=w_zaehler+1
w(w_zaehler)=w

.....
....

if w_komplett=1 then
sum=0
for j=1 to 14
sum=sum+w(j)
next j
ergebnis(i)=sum/14
end if


PS. Du verwendest in Deinem Code Variablen ohne Ihnen vorher einen Wert zugewiesen zu haben, das gehört sich nicht! ;)
PPS. Geht mit Sicherheit auch eleganter und schneller, aber iss schon spät und ich habe keine Lust über Deine W Konstruktion nachzudenken.
PPPS. Natürlich kann man auch schon Ergebnis berechnen, wenn keine 14 zusammen gekommen sind, aber das war ja nicht Deine Fragestellung. Dafür dann einfach den w_komplett kram rausnehmen
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Mario

unregistriert

3

Donnerstag, 13. Januar 2011, 09:29

Hallo Lenzelott,

Danke für Deine Hilfe,
ich hatte nur ein bisschen abgekürzt, da eine Wertezuweisung nicht unbedingt nötig ist. :)
Leider funktioniert es so nicht, da ein w solange einen Wert annimmt bis ein ein neues w hinreichend definiert ist.

Es könnte also sein, dass bspw. über einen Zeitraum von 1000 Bars also For i = 1 to 1000
nur 30 verschiedene W auftauchen.
Hiervon möchte ich nun den GD der letzten 14 W errechnen und nicht der letzten w(i) = 14

Die Berechnung müsste meines Erachtens ähnlich sein wie bei Renko-Ziegeln, die auch Zeitunabhängig berechnet werden.
Ich kanns nur leider nicht, da meine Programmierkünste doch arg beschränkt sind.

Hast Du oder jemand anderer Kompetenter einen Tip für mich ?

Viele Grüsse

Mario

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

4

Donnerstag, 13. Januar 2011, 12:49

Leider funktioniert es so nicht, da ein w solange einen Wert annimmt bis ein ein neues w hinreichend definiert ist.

Es könnte also sein, dass bspw. über einen Zeitraum von 1000 Bars also For i = 1 to 1000
nur 30 verschiedene W auftauchen.
Hiervon möchte ich nun den GD der letzten 14 W errechnen und nicht der letzten w(i) = 14


deswegen habe ich ja auch geschrieben


jedesmal wenn ein neues w auftaucht


Damit ist genu der teil in Deinem Code gemeint, wo Du ein neues W identifizierst nach von mir aus 1000 Bars.
Ergo funktioniert es genau so wie ich es oben vorgeschlagen habe
If you think it´s expensive to hire a professional, wait until you hire an amateur.