Autor |
Beitrag |
Michael Farlaub
      
Beiträge: 18
D6 PE, Indy 9
|
Verfasst: So 19.06.05 17:58
grüß Euch!
Ich habe Grafiken in der Charts dargestellt sind. Mein Ziel ist es Kanäle zu erkenne an die ein Vekor (Linie) angelegt werden soll.
Am besten hier mal mein gezeichnetes Beispiel:
Chart:
Hier die Vektoren:
Die Charts sehen mehr oder weniger alle ähnlich aus. Es gibt Auf und Abwärts-kanäle.
Ich werde das Bild mit scanline nach Farbenerkennung abscannen, so dass zu jedem Pixel die Farbe habe.
Ich bin jedoch leider auf noch keine brauchbare Strategie gekommen wie ich die Vektoren an ihr Stelle bekomme.
Über Vorschläge würde ich mich freuen.
Grüße
Michael
_________________ Was ist denn jetzt los?
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 19.06.05 21:59
Normalerweise nimmt man die zugrundeliegenden numerischen Werte und dann die gute alte Analysis, um die Charttendenzen einzuzeichen. Wenn Dir nichts anderes, als Bitmaps zur Verfügung stehen, wird es natürlich schwieriger...
Du erstellst eine Liste aller unteren Enden der gelben Linien, und eine Liste der oberen Enden der gelben Linien (jeweils XY-Paare). Dann benutzt Du Mathematik (Analysis).
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: So 19.06.05 22:12
Darf man fragen, was das für Daten sind? (Interpretation der gelben Punkte und Interpretation der zu bestimmenden Linien)
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 19.06.05 22:18
[einmisch]
Sieht nach Aktienkursen aus :
Gelb: Tageskurse mit niedrigstem/höchstem Kurs
Lila Punkte: 30 day moving average
Rot/Pink : 200 day moving average
[/einmisch]
|
|
delfiphan
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: So 19.06.05 22:22
Ach so, dann würd ich auch mal so ein 30 day moving average machen. Anhand der lila Punkte sieht man ja relativ gut, ob's nach oben oder unten geht. Einfach die Richtungswechselstellen merken und die mit Linien verbinden.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 19.06.05 22:29
Sollte Michael mal erklären. Mit dieser Charttechnik soll man irgendwie Tendenze erkennen, aber einfach die Umkehrpunkte verbinden reicht wohl nicht. Schau Dir mal die lokalen Minima/Maxima an. Da wird dann dieser Punkt mit dem kleinsten/grössten Minima/Maxima der foglenden Tage verbunden: solange der Kurs wieder steigt, wird das lokale Minimum (Wendepunkt des Kurses) mit dem kleinsten Tagesminimum während der steigenden Kurse verbunden und umgekehrt.
Der Schnittpunkt mit den anderen Linien soll dann den richtigen Einstiegspunkt für die Bestellung von Frischfisch sein oder so. Keine Ahnung.
Wie gesagt: Sollte Michael mal erklären....
|
|
Phantom1
      
Beiträge: 390
|
Verfasst: So 19.06.05 22:40
Naja, so genau hab ich das auch alles nicht verstanden, aber ich hab mal was auf die schnelle geproggt (Ist vieleicht ein Anfang).
man braucht nur ein TImage mit der Bitmap und ein TButton:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66:
| type TIntArray = array of Integer; TRichtung = (rStart, rUp, rDown);
procedure ColorSearch(src: TBitmap; var Buffer: TIntArray; r,g,b: Byte); var x, y: Integer; p: PRGBTriple; pos: Word; begin src.PixelFormat:=pf24bit; SetLength(Buffer, src.Width); for x:=0 to src.Width-1 do begin pos:=0; for y:=0 to src.Height-1 do begin p:=src.ScanLine[y]; Inc(p, x); if (p.rgbtRed=r) and (p.rgbtGreen=g) and (p.rgbtBlue=b) then begin Inc(Buffer[x]); Inc(pos, y); end; end; if Buffer[x]>1 then begin Buffer[x]:=pos div Buffer[x]; end else Buffer[x]:=-1; end; end;
procedure DrawVektor(src: TBitmap; var Buffer: TIntArray; Color: TColor; Precise: Byte); var x, x1, y: Integer; richtung: TRichtung; begin src.Canvas.Pen.Color:=Color; y:=0; x1:=0; richtung:=rStart; for x:=0 to High(Buffer) do if Buffer[x]<>-1 then begin Case Richtung of rStart: begin if Buffer[x]<y then Richtung:=rUp else Richtung:=rDown; src.Canvas.MoveTo(x, Buffer[x]); end; rUp : if (Buffer[x]>y) and (Buffer[x]-y>Precise) then begin src.Canvas.LineTo(x1, y); Richtung:=rDown; end; rDown : if (Buffer[x]<y) and (y-Buffer[x]>Precise) then begin src.Canvas.LineTo(x1, y); Richtung:=rUp; end; end; y:=Buffer[x]; x1:=x; end; src.Canvas.LineTo(x1, y); end;
procedure TForm1.Button1Click(Sender: TObject); var Buffer: TIntArray; begin ColorSearch(Image1.Picture.Bitmap, Buffer, 255,204,2); DrawVektor(Image1.Picture.Bitmap, Buffer, clWhite, 6); Image1.Repaint; end; |
So siehts dann aus:
EDIT: Code verbessert
mfg
Phantom1
Moderiert von Christian S.: Code- durch Delphi-Tags ersetzt.
Zuletzt bearbeitet von Phantom1 am Mo 20.06.05 10:41, insgesamt 1-mal bearbeitet
|
|
Michael Farlaub 
      
Beiträge: 18
D6 PE, Indy 9
|
Verfasst: So 19.06.05 23:34
grüß euch!
genau, es ist ein aktienkurs und es geht um charttechnik.
wenn der kurs eine kanal verlässt (bricht), ist das ein zeichen für einen richtungswechesel. (ist einer von vielen chartindikatoren)
Zitat: | Ach so, dann würd ich auch mal so ein 30 day moving average machen |
moving average ist auch ein trendindikator, aber was anders als trendkanäle.
@Phantom1
man du bist ja echt ein genie! das ist schon so gut wie das was ich brauche.
wie lange hast du dafür gebraucht?
RESPEKT! und vielen dank!
grüße
michael
_________________ Was ist denn jetzt los?
|
|
Phantom1
      
Beiträge: 390
|
Verfasst: So 19.06.05 23:46
@Michael Farlaub: so schwer fand ich das eigentlich nicht, hab dafür nur etwa 1 stunde gebraucht (hatte grade lust und zeit  ). Naja wie auch immer du kannst den code ja na nach deinen wünschen anpassen, falls du fragen zum Code hast, bitte dann über PN.
|
|
Michael Farlaub 
      
Beiträge: 18
D6 PE, Indy 9
|
Verfasst: Mo 20.06.05 00:09
Quelltext 1: 2: 3: 4:
| Sollte Michael mal erklären. Mit dieser Charttechnik soll man irgendwie Tendenze erkennen, aber einfach die Umkehrpunkte verbinden reicht wohl nicht. Schau Dir mal die lokalen Minima/Maxima an. Da wird dann dieser Punkt mit dem kleinsten/grössten Minima/Maxima der foglenden Tage verbunden: solange der Kurs wieder steigt, wird das lokale Minimum (Wendepunkt des Kurses) mit dem kleinsten Tagesminimum während der steigenden Kurse verbunden und umgekehrt. Der Schnittpunkt mit den anderen Linien soll dann den richtigen Einstiegspunkt für die Bestellung von Frischfisch sein oder so. Keine Ahnung.
Wie gesagt: Sollte Michael mal erklären.... |
Bei der Charttechnik kombiniert man verschiedene indikatoren(SAR, MACD, RSI, Slow Stochastik, Fibonacci Zahlen, Trendkanäle) die dann, wenn quasi alle kauf = true sind, gekauft werden
dann kann man schon ziemlich gute performance erziehlen. bin dabei solch ein automatisches tradingsystem zu entwickeln.
der ganze börsenkram bzw die menschliche psychologie kann man alles mit mathematik beschreiben. so kann man einen aktienverlauf ausreichend vorhersehen. zumindest den trend.
grüße
michael
_________________ Was ist denn jetzt los?
Zuletzt bearbeitet von Michael Farlaub am Mo 20.06.05 00:17, insgesamt 1-mal bearbeitet
|
|
Michael Farlaub 
      
Beiträge: 18
D6 PE, Indy 9
|
Verfasst: Mo 20.06.05 00:15
Titel: :
_____________
_________________ Was ist denn jetzt los?
|
|
|