Jump to content
Tom Next - Daytrading Community

Mythos

Moderatoren
  • Posts

    3,694
  • Joined

  • Last visited

  • Days Won

    175

Blog Entries posted by Mythos

  1. Mythos
    Es ist endlich soweit! Nach gefühlten Jahren an Betatests im kleinen Kreis kommt der lang ersehnte Schritt in die Öffentlichkeit:
     
    Die TEFEx geht in die Public Beta

     
    Und zwar am Mittwoch 27.4.2011 pünktlich zum Handelsschluss des DAX (17:30)
     
    Heißt soviel wie: jeder kann sich registrieren und mitmachen. Da ich sowieso ständig weiterbastle und mich auch immer über Feedback freue, lass ich den Betastatus vorerst unverändert. Aber es gab seit 1 Monat keine Bugs mehr, sondern nur Verbesserungen im Interface, Webdesign etc.
     
    Zur Unterstützung der neuen Trader, zum Austausch und für alles sonst so, wird es für die Tom-Next Fraktion bei der TEFEx hier auch ein eigenes Supportforum geben. Dort gibt es einerseits Unmengen an Hintergrundinfos, aber auch ein paar Tipps für Anfänger und die Möglichkeit zum Traders-Talk.
     
    Ich freu mich schon viele von euch bei der TEFEx zu sehen . Mal sehen ob wirklich 90% die ersten Konten an die Wand fahren , bis jetzt stimmts (so mancher Betatester hat schon Resets im Wert von über 1.5 Mio benötigt ).
  2. Mythos
    ... der erste Tag public und es war gleich mal massig was los.
    Eigentlich is es ja recht ruhig gestartet, ein paar Anregungen hie und da. Und dann gings los.
    Eine Idee jagte die nächste und in Summe hat sich der Client heut wieder deutlich verändert.
     
    Die Tickerliste is um Chartbutton erweitert, dafür der Closebutton auf ein X reduziert und die Position zusammengefasst. Außerdem sieht man jetzt den G/V der aktuellen Position.
     
    Im Chart gibts jetzt einerseits die Anzeige des letzten Preises in der Preis-Achse und in der Zeit-achse gibts jetzt auch ein Label das genau zeigt wo das Crosshair gerade steht.
    Dann kann der Chart jetzt endlich auch wirklich das Autozoom beim ersten aufruf, damit er nit so verloren wirkt.
     
    Is noch was neu? ich glaub der Rest war eher im Hintergrund. Passwort-reset funktion und das es jetzt einen "AllInOne"-"Login/Register/OpenTEFEx"-Button geben kann ist neu. Diesen Super Button gibts übrigens hier in der Leiste oben neben der EP. Wer noch nicht registriert ist, kann sich darüber registrieren, wer schon registriert ist, kommt zum login, wer schon eingeloggt ist kriegt direkt das Applet zu Gesicht. Ich steh auf automatisierung zur Verstärkung der Userfaulheit ;)
     
    so, ich bin müde, mir tun die Augen weh und sitzen kann i auch nimmer... genialer Tag ;)
     
    lg mythos
  3. Mythos
    zumindest am Papier ;)
    Also wenn man sich rein die Zahlen anschaut ist es ein Wahnsinn was gestern bei der TEFEx abging. Allein gestern (28.4.) gab es 28862 Pageviews. Die Zahl der Visits gestern war doppelt so hoch als der Durchschnitt davor. Wenns so weitergeht brauch ich bald ein eigenes Rechenzentrum.
     
    Ein schönes Beispiel von "Traue keiner Statistik die du nicht selbst gefälscht hast". Lt. Stats gab es gestern nämlich genau 19 Visits. Die unglaubliche Zahl an Pageviews ist vermutlich durch die Shoutbox zu erklären die ja regelmäßig refreshed. Aber es war trotzdem einiges los.
  4. Mythos
    Es ist ja schön wenn Betatester einem Schwachstellen aufzeigen, aber manche Menschen aber ein Talent das auch sehr drastisch zu tun.
     
    Da die TEFEx ja unter anderem auch für komplette Börsenneulinge gedacht ist, wurde die Runde der Betatester um ein paar solche erweitert. Und wenn man noch nie etwas von MoneyManagement, Riskmanagement etc. gehört hat. Dann denkt man natürlich auch nicht weiter nach.
     
    Es gibt ein Symbol, das tickt herum, also kauft man alles was man sich leisten kann (Bis gestern war das bei Anfängern auch noch recht viel, vor allem im Vergleich zur Liquidität von Kiwee). Also Schwubs, alle LimitSells im Orderbuch aufgeraucht, der Kurs in neuen Höhen und der offene Gewinn ebenfalls.
    "OMG ich hab gewonnen!" ist natürlich der erste Gedanke des unbedarften Users und er wirft seine gesamte Position auf den Markt. Das er sich durch den Kauf an die Spitze eines ca 80 Punkte Loches gesetzt hat, und die Market Sell (weil was außer Market handelt man den an Börsen?) natürlich erst da unten im Bodennebel einen Fill kriegt, und dort dann durch alle vorhandenen LimitBuys raucht, wusste er zu dem Zeitpunkt nicht... noch nicht.
     
    Das beste an der Geschichte: Aus seiner Sicht wurde sofort ein Bug vermutet weil er ja unten gekauft (also auf "Kaufen" gedrückt) und oben verkauft, aber trotzdem verloren hat.
     
    Das HappyEnd:
    Ich hab die darauffolgenden Stunden damit verbracht ihm das gesamte System Börse näher zu bringen. Also es gibt inzwischen mindestens 1 Menschen dem die TEFEx das Thema Börse deutlich näher gebracht hat. Und ich hab die Doku ein gutes Stück erweitert.
     
    Jetzt muss ich nur noch schaun das ich das Orderbuch wieder halbwegs gefüllt und den Kurs wieder halbwegs ruhig bekomm. Rodeoreiten is dagegen ja ein Kindergeburtstag.
     
    lg Mythos (die inoffizielle BaFin bei TEFEx )
  5. Mythos
    Wenn der mythos einen Traderchat will, dann kann auch AJAX ihn nicht aufhalten ;)
     
    Irgendwie war mir beim Traden immer ein bissl fad. Es fehlte immer die soziale Komponente (sprich das "hast du auch grad verloren?" ;)... Ein Chat musste her. Und damits ins Bild passt, und auch kein Kapital vorhanden ist, schreibt man sichs gleich selber...
     
    Neue MySQL Tabelle is ja schnell angelegt. Der PHP code der die einträge aus der DB holt und in html rendert ist auch schnell erstellt (inzwischen is PHP ja keine Hürde mehr).
    Aus dem alten Typo3 ist auch schnell ein AJAX-Request abgeschaut und eingebaut... und dann gehts los...
     
    XML vs. HTML... bis ich mal check das man in XML dem Parser sagen kann "das is text, tu das nit anschauen!" hats ein bissl gedauert
    Dann die HTML-Zeichen rausholen damit keiner rumpfuschen kann... aber der mythos erwischt natürlich zerst mal die falsche Funktion und verpfuscht sich die Umlaute...
    Und dann noch das Problem mit den & im http request... selbst im Post gibts in "meiner" AJAX variante keine Möglichkeit parameter zu trennen ausser mit & (zumindest scheints so)... also macht ein & im text gleich einen neuen parameter... nit gut.
    Naja ein str_replace hat auch das Problem gelöst und jetzt läufts.
     
    Langer Rede kurzer Sinn: Ab jetzt gibts unterm TEFEx Applet einen kleinen chat wo sich die aktiven Trader austauschen können...
     
    viel spass damit
  6. Mythos
    Kleine Erweiterung, großer Nutzen: Ab jetzt sieht man auch den Eröffnungspreis der aktuellen Position im Chart dargestellt. Jetzt fehlt nur noch die visuelle DOM im Chart und ich handel nur mehr aus dem Chart heraus ;) (Ja ist bereits auf der TODO Liste...)
     
    Hier noch der Screenshot:

     
    Edit: hier der Screenshot von Level2 im Chart. Derzeit wirds nur angezeigt wenn das Level2 Fenster auch offen ist.
     

     
    lg mythos
  7. Mythos
    Ja, sowas passiert wenn man als "Trader" mit den neuentwickelten Modulen rumspielt. Man hat ständig ein "Das wär noch schön" oder "Da könnte man doch noch so..." im Kopf. So zb auch bei der DOM Anzeige.
    Die Balken im Chart sind ja nett, aber irgendwie is es lästig wenn man sie nur klein auf der Seite haben will und sie trotzdem über den halben Chart ragen, oder wenn man sie detailiert sehen will, die Balken aber nur winzig am rechten Rand kleben und man nichts erkennt.
    Und wehe es kommt ein großer Level2 Eintrag und die Skalierung sorgt dafür das man plötzlich die ganzen "normalen" Einträge nicht mehr wahrnehmen kann (Unterschied zwischen 1 und 10 ist nichts wenn die Skalierung auf einen 500er Block geht)...
     
    Also rein in den Code und verbessern. Rausgekommen ist das folgende Video
    Bin für Anregungen natürlich wie immer offen.
     
    http://vimeo.com/21839449
     
    no worries
    mythos
  8. Mythos
    lol manche Bugs will ich euch nicht vorenthalten. So wie dieser:
     
    Ich hab ja beim zoomen/skalieren mit der Mouse einen Turbo eingebaut. Sprich beim drücken der SHIFT Taste wirkt sich die Mausbewegung für den Zoom mit Faktor 10 aus. Naja, hab grad gemerkt das es dazuführen kann das man den Chart spiegelt ;)
    Wenn man so schnell so stark zoomt, das man mit einem Mouseevent mehr als die gesamte Fensterhöhe zurücklegt, dann wird der zoom statt von 100% auf zB 50% auf -x% gestellt... dann hast im Chart die Limit Buys plötzlich über den Sells ;)
     
    naja, also ich habs jetzt behoben, aber lustig wars schon ;)
  9. Mythos
    Endlich is es soweit. Es gibt wieder eine Neuerung die wirklich "auffällt" und die die Usability deutlich steigert (hoffentlich ;):

    Das neue Chartmodul


     
    Alles aufzuzählen was es kann wär jetzt ein bissl aufwändig, also nur die Topfeatures:

    Crosshair
    Barchart, Candlestick, Linechart
    "intuitives" drag und zoom per Mouse
    handeln "direkt" aus dem Chart (Klick überträgt Pricelevel direkt in die Ordermaske)
    offene Orders werden im Chart angezeigt
    ...

     
    Und extra für Ronner: Der Matrixstyle wurde auf den Chart ausgeweitet ;)
    Intern wurde auch die Barverwaltung und das Nachladen verbessert wodurch jetzt beliebig in die Vergangenheit gescrollt werden kann.
     
    Hier gleich ein paar Screenshots, ein kleines Video ist unterwegs ;)



    (größere Versionen wie immer in der Galerie)
    lg mythos
     
    EDIT: hier noch das versprochene Video: (is mein erster Screencapture und scheinbar denkt der Cropper das er meine Handlungen beschleunigen muss, jetzt schauts aus als wär ich hyperaktiv, naja ich hoffe es wird trotzdem ein bissl ersichtlich was das Ding kann ;)
    http://vimeo.com/21603513
  10. Mythos
    Es gibt so Dinge die setzen sich einem im Unterbewusstsein fest und irgendwann brechen sie durch und man kann an nix anderes mehr denken bis man es erledigt hat. So ein Ding is das Chartmodul ;)
     
    Das bisherige Chartmodul bei der TEFEx ist ja schön und gut, vor allem da es eine Library ist mit wenig eigenem Aufwand verbunden gewesen, aber richtig toll is es nicht. Man kann sich nicht wirklich intuitiv im Chart bewegen, zoomen etc. Und von aus dem Chart traden kann gar keine Rede sein...
    Und da es eine lib is, is natürlich das customizen eher sinnfrei, vor allem weils eine sehr komplexe lib is;)
     
    Also: Neuschreiben. Mit einem fixen Bild was es können soll im Kopf (aufschreiben hab ich mir abgewöhnt, die Anforderungen ändern sich eh ständig ;) neues Package erstellt und los gehts.
    Inzwischen steht das Chartpanel inkl. sämtlicher derzeit gewünscht Mousemovements (Drag im Chart, skalierung über die achsen und mouserad etc.). Wenn ich schon mal ein Bildschirmvideo gemacht hätte würd ich euch ja eine kleine Demo online stellen...
    Was noch fehlt sind die Labels der Achsen. Je nach Motivation kommt in der ersten Version dann auch ein traden aus dem Chart und das anzeigen offener Orders... aber ich glaub das Tradingschnickschnack kommt erst in Version 2, soll ja Verbesserungsmöglichkeiten geben ;)
     
    und ja, im neuen Chart ist das Crosshair automatisch dabei ;)
     
    so, ich bau mal weiter ;)
     
    no worries
    mythos
  11. Mythos
    Hi there,
     
    ich hab ja schon gesagt das ich einige der Grundmechanismen vor diesem Projekt nicht kannte bzw. nicht 100% verstanden hab. Und das obwohl ich damals schon seit 5 Jahren an Handelssystemen gebastelt hab. Ich hatte auch ne Ahnung von Level2 Info, aber das wars dann auch schon.
     
    so Dinge wie "Was genau passiert mit einer Order wenn sie an die Börse kommt?", "Wie genau entsteht der aktuelle Kurs und was bedeutet er?" waren nicht 100% klar. Für mich war ein Kurs eine Linie in der Zeit, er kommt in ticks rein und du kannst zu ihm kaufen und verkaufen. Bei diesen Möglichkeiten kann es passieren das du Slipage hast aber warum genau wusst ich nicht. Limit und Stoporders waren mir bekannt und das Stop meist Market-if-touched heisst wusste ich auch, aber welche Auswirkung die Dinger WIRKLICH haben war noch nicht ganz verinnerlicht.
    Da ich vermute das es auch anderen so geht, man aber einerseits sich nicht traut solche Anfängerfragen zu stellen, andererseits teils nicht weiss das man es nicht weiss, fang ich hier einfach mal einen kleinen Monolog zu dem Thema an. Wenn Fragen auftauchen einfach kommentieren.
    Nochwas: Ich bin kein Profi! Alles was ich weiß und schreibe ist aufgrund eigener Erfahrung, was ich mir selber zusammengereimt oder gelesen hab. Es kann durchaus sein das ich falsch liege, dann bitte ich euch mich einfach zu korrigieren.
    alsdann rein ins geschehen.
     
    Die Orderarten (die es bei der Exchange derzeit gibt)
    Lt. meines Wissen gibts im wesentlichen 3 Orderarten, die jedoch teils dann noch kombiniert werden. Derzeit sind genau die 3 "Grundarten" eingebaut die da wären:
     
    MarketOrder
    Vermutlich die Order die die meisten "kleinen" Trader verwenden. Jedesmal wenn man einfach nur auf KAUFEN oder VERKAUFEN drückt sendet man eine Marketorder. Der Name an sich ist hier auch Programm, man geht auf den "Markt" und sagt (zB) "Ich will 3 Stück kaufen, für den besten Preis den ich bekomme!". Man merkt hier schon das "besten Preis" nicht sehr spezifisch ist. Es kann ja passieren das gerade sehr wenige Leute etwas anbieten (wenn überhaupt). Dadurch kann es bei dieser Orderart auch zu sehr hoher Slipage führen. Wenn zB der letzte Preis bei 1000 stand, man will 3 kaufen, aber es werden nur 1 für 1050 und 2 erst bei 1100 angeboten. Dann kriegt man mit der MarketBuy genau diese "besten" 3 Stück, obwohl man die Order bei 1000 abgesetzt hat. Ich hab schon öfter erlebt das sich die Leute bei Kiwee geärgert haben das sie nicht verkaufen konnten bevor der Kurs gefallen ist, ohne zu merken das ihre Marketorder selbst den Kurs nach unten gerissen hat.
     
    LimitOrder
    Vermutlich die meistverwendete von den Pros, zumindest wie ich das verstanden hab.
    Hier geht man auf den Markt und sagt "Ich will 3 Stück kaufen für maximal 1000 Euro" bzw. im verkaufsfall eben "mindestens x Euro". Also ein sehr natürliches Verhalten, man hat einen Bedarf und ein Limit wieviel man zahlen will.
    Wenn man jetzt eine solche Order in den Markt stellt, kann es passieren das es passende Angebote gibt die den eigenen Wünschen entsprechen (also im Fall einer LimitBuy entsprechende Verkaufsangebote unter meinem Limit) oder auch nicht.
    Wenn es bereits Angebote gibt, kann es sein das man einen besseren Preis bekommt als sein Limit war. Kann die Order aber nicht sofort ausgeführt werden, so wird sie ins Orderbuch gehängt und wird Teil der Level2 Info. Ab dem Zeitpunkt wird man sicher nur zum Limitpreis ausgeführt, denn jede neue Verkaufsorder, bekommt den eigenen Limitpreis als bestmöglichen Preis.
     
    StopOrder
    beim Stop geht es darum zu sagen "Wenn der Preis über 1000 Euro steigt, will ich kaufen". Das geht natürlich weder mit einer Limit (die würde sofort ausgeführt solange der Preis unter dem Limit ist) noch mit der Market, weil die wird sofort ausgeführt.
    Bei der Exchange sind Stoporders eigentlich Market-if-touched Orders. Sprich wenn der Stoppreis (trigger) erreicht wird (also bei Stopbuy Preis >= trigger, bei Stopsell Preis
     
    soda, ich glaub das reicht mal fürs Erste. Zur Sicherheit: Ich beschreib hier wies bei der Exchange umgesetzt ist, reale Börsen können gewisse Details anders machen.
     
    so long
    mythos
  12. Mythos
    Schon wieder ein Eintrag, lange nix und dann alles auf einmal. Naja wenn man endlich mal was baut was der User auch sieht muss man es ja schnell allen erzählen ;)
     
    Für die Betatester: Die Sprachauswahl is online ;)
    Weiters hab ich den Ladevorgang "optisch optimiert". Nicht mit schönen eigenen Bildern oder so, soweit bin i no nit. Aber jetzt wird alles schon während dem Verbindungsprozess angezeigt (mit dem Status "verbinden") damit man als User nicht so lange vor einem weißen App sitzt und sich fragt ob da noch was kommt ;)
     
    Langsam merk ich wie mir die Ideen zur optischen Verbesserung ausgehen. Es wird glaub ich Zeit das Ding öffentlich zu machen und auf Feedback zu hoffen ;)
     
    no worries
    mythos
  13. Mythos
    Nach Style kommt jetzt Sprache ;)
     
    Um das Deutsch-Englisch Gemisch aufzuräumen hab ich mich entschieden im Stil der Farbestile auch eine Sprachauswahl einzubauen. DE und EN gibts schon. Ab sofort werden Ideen für weitere Sprachen entgegengenommen ;) (Wenns jemand auf Klingon übersetzen will: feel free ;)
     
    lg
    mythos
  14. Mythos
    manchmal is es so einfach und doch so seltsam.
     
    Da die Grundfunktionalität der TEFEx steht und von den Betatestern auch keinerlei Bugreports kommen, war natürlich die nächste Frage wie die Einbindung neuer Trader in Zukunft passieren soll.
    Einen Useraccount an der TEFEx bekommt man nur wenn man bereits in einer PartnerCommunity Mitglied ist (zB bei Tom-Next). Aber wie das realisieren? Und zwar so das es möglichst einfach für den User und trotzdem sicher ist?
    Vermutlich wird es so laufen das man hier auf einen Link klickt der einen dann zur Registrierungsseite der TEFEx bringt. Das funktioniert natürlich pro User pro Partner nur einmal, aber damit hat jeder User bei der TEFEx wieder die freie Wahl von Username, Password Email etc.
    Keine Angst, die Email wird derzeit nur zur Verifikation/Botschutz verwendet.
     
    Aber zum Titel: Ich hab bei der registrierung ein nettes kleines Captcha eingebaut. Natürlich mit der Funktion, das man per Click drauf ein neues erzeugt falls man eines mal nicht lesen kann. In Opera läufts auch wunderbar. Aber Firefox ignoriert es konsequent das er das Bild (das natürlich von php erzeugt wird) neu laden soll obwohl es die gleiche Adresse hat. no-cache und must-revalidate is natürlich gesetzt, is ihm wurscht.
    Aber mei, zum glück kann man auch einfach bei jedem klick ein kleines random als GET-Parameter dazuhängen. Is dem captchascript natürlich wurscht aber der FireFox denkt zumindest das er das Bild noch nicht kennt...
     
    Hauptsache es läuft ;)
  15. Mythos
    oder zumindest einen zweiten Style.
     
    Es ist endlich auch wiedermal etwas weitergegangen was man auch sehen kann! Der Client ist jetzt vorbereitet auf umstellbare Styles. Derzeit gibt es zwar erst den Default und einen etwas experimentellen Matrix-Style (Bild siehe Galerie) aber falls es Wünsche/Anregungen bzgl. eines zusätzlichen Styles gibt kann ich den jetzt jederzeit einbauen. Vorerst beschränkt sich der Style auf die Änderung fast aller vorkommenden Farben, aber ein Ausbau ist geplant.
     

     
    Weiters kann man nun beim einloggen angeben das man eingeloggt bleiben möchte, dann muss man nicht jedesmal die Zugangsdaten eintippseln. Funktioniert wie üblich über Cookies. Es wird natürlich weder Username noch Passwort im Cookie gespeichert. Es hält 1 Monat und aktualisiert sich bei jedem Besuch. Aus Sicherheitsgründe wird beim neuen Einloggen (auf anderem Browser oder anderem Rechner) alle anderen Sessions dieses Users gelöscht. Man bleibt also nur auf einem Rechner eingeloggt.
     
    In diesem Sinne happy trading und
    no worries
    mythos
  16. Mythos
    Hallo zusammen,
     
    es ist endlich soweit! Endlich wurde ein Namen gefunden.
     
    Ab sofort arbeite ich nicht mehr an der "Exchange" sondern an der Entwicklung der
     

    Technical Exotic Fruits Exchange


     
    oder kurz TEFEx.
     
    Die TShirts und Autoaufkleber bestellt ich dann... später ;)
     
    no worries
    mythos
  17. Mythos
    ...schreibt man halt das Handbuch.
     
    Und wenn man nit weiß was man Schreiben soll, macht man zumindest ein paar erklärende Bildlein.
    In diesem Sinne hab ich mal ein paar "Erklärungsbilder" gemacht. Eigentlich hab ich gehofft das Userinterface sei selbsterklärend, aber ich befürchte dem ist nicht ganz so.
     
    Für alle Interessierten sind die Bilder in der Exchange-Galerie zu besichtigen.
     
    Bzgl. Betatest muss ich sagen ich bin begeistert. 2 Tage Betatest und noch keine einzige Bugmeldung/Beschwerde. Und der Server schnurrt auch wie ein Kätzchen...
     
    so long
    no worries
    mythos
  18. Mythos
    Soda,
     
    der Server ist endlich soweit stabil das man in dauerhaft laufen lassen kann. Und da ich als Entwickler schon ein bissl betriebsblind bin was das GUI angeht, und leider nicht die Zeit hab alles selber zu testen, such ich Betatester.
     
    der offizielle Start des Betatests wird irgendwann kommende Woche sein.
     
    Wer kann Betatester werden?
    Einfache Antwort: Jeder (der das lesen kann).
     
    Die Exchange ist schon voll funktionsfähig (sollte es zumindest sein ;) und die Betatester haben die exklusive Chance sich bereits einen Kapitalbuffer zu erstellen und zu üben, bevor die "Masse" darauf losgelassen wird.
     
    Was muss ein Betatester tun?
    Müssen eigentlich nix. Ihr bekommt einen Exchange Account und könnt ganz normal traden. Meine einzige Bitte ist, das jedes unerwartete Verhalten an mich gemeldet wird.
     
    Also nit zögern und mir eine PM schicken oder per Kommentar "anmelden" ;)
    Wer Wünsche bzgl. Username oder Passwort hat gleich dazusagen, sonst übernehm ich den TomNext Username.
     
    no worries
    mythos
  19. Mythos
    Hi there,
     
    es gibt sie doch! Egal was man euch in der Schule erzählt hat, man kann in Java Speicherlöcher erzeugen! GC hin oder her.
    Im konkreten Fall durch Verwendung des JConnectors für MySQL. Wie? ganz einfach: hol dir eine Connection, lass ein stmt erzeugen (für die übereifrigen auch ein rs) und verwirf die referenz drauf ohne es zu schließen.
    Vor allem ein gemeiner Fehler wenn man an sich jeden Datenbankzugriff in einer schönen Methode kapselt und bei diesen Methoden der Body immer mit einem try-catch ummantelt ist, in dessen finally result, statement und connection geschlossen werden.
    Weil wenn man dann in der Entwicklung mal eine Abfrage hat, die aus mehr als einer Abfrage besteht (zB für die Accountinfo die Userinfo aus der einen Tabelle und die Positioninfo aus der anderen) und sich denkt das es eigentlich Sinn macht das in einer Methdoe zusammen zu lassen (weils ja eigentlich von außen eine Abfrage is), dann darf man halt auch nicht vergessen zwischendrin das result und statement zu schließen bevor man es neu zuweist... weil das merkt weder der Compiler noch gibt es unerwartetes Verhalten. Auch im Profiler fällts nicht direkt auf wenn man nicht weiss wonach man sucht (es werden soviele andere Objekte erzeugt etc...) Nur wenn man das Ding ein paar Stunden laufen lässt und regelmäßig diese Methode aufgerufen wird (so alle paar Sekunden) bläst sich schön gemütlich der RAM auf...
     
    Wenn das ganze dann auch noch in einer Server Applikation steckt die sowieso schon soviele Punkte enthält die man noch nit 100% versteht, macht die Fehlersuche noch mehr Spass ;)
     
    So, genug ausgeschimpft.
    Ne doch nicht: für alle die sich auch mal so ein Client/Server ding bauen wollen: Es gibt deutlich unterschiedliches Verhalten zwischen lokal und übers Netz. So krieg ich am VPS am Ende immer ein EndOfStream (wie erwartet), lokal hab ichs nie gekriegt (nur ein Timeout im versuch Daten zu lesen...).
     
    Zusammenfassend: Der Alphatest am Server läuft. Mal sehen wie langs bis zum Betatest dauert. Ich lern täglich Unmengen über Serververhalten dazu und weiß inzwischen warum solche Projekte normal keiner allein macht... Aber mei, Hauptsache Spass an der Freude ;)
     
    no worries
    mythos
  20. Mythos
    (Eigentlich mehr TechDiary, aber da mir grad die Themen für Background ausgehen is es auch da drin ;)
    Hi there,
     
    wie angekündigt ist nun auch der MarketMaker unter die Java-Räder gekommen ;)
    Ich hab mir gedacht ich nutz die Gelegenheit gleich um ein bissl was über seine Funktionsweise zu schreiben.
     
    Wie schonmal erwähnt macht die xchange nur Spass/Sinn wenn es genug aktive User gibt. Und bis wirklich soviele aktiv beteiligt sind, simuliert der MarketMaker die fehlenden User einfach dazu.
     
    Konkret ist der MarketMaker ein "spezieller" Trader der (und nur er) mit sich selber traden darf und das natürlich auch fleissig tut. Je nach Parametereinstellung, produziert er zufällige Limit und Stoporders die in einem gewissen Bereich um den aktuellen Kurs herum zufällig platziert werden.
    Damit er aber nicht nur am Fleck tickt, gibt es im Hintergrund zufällige längere Trends die das Buy/Sell Verhältnis verschieben, gewürzt mit einem kurzfristigen Trend der den langfristigen Trend noch abschwächt/verstärkt.
    Wenn der MM also in einem Trend ist, geht er nicht her und versucht den Kurs zu einem bestimmten Preis zu ziehen/drücken, sondern verändert nur das Verhältniss von Kauf und Verkaufsorder wodurch sich der Kurs dann bewegt.
    Da der MM noch sehr dumm ist, checkt er natürlich nicht wenn der Kurs plötzlich einen großen Sprung macht sondern platziert eben rund um den neuen Kurs weiter seine Orders. Ein weiterer Grund warum man leicht Gewinne machen kann wenn man nur gegen den MM traded (und selber ein bissl Kapital hat).
     
    Implementiert ist der MM als eigene Java-App die sich Parameter aus der DB holt (wodurch sie einfach per webinterface verändert werden können). Derzeit schwank ich noch ob ich den MM intelligenter machen sollen oder darauf vertrauen das er schnell unnötig wird und die Zeit besser in andere Bereiche investieren soll. Naja mal sehen.
     
    Das Scriptproblem ist übrigens behoben, ein klassischer Lf vs CrLf hat mich ein bissl verar***, aber gestern flogen schon die ersten ExchangeOrders durchs Netz. Das ganze Ding ist nur noch nicht "save" genug das ich es ohne Aufsicht laufen lasse. Muss noch die unnötigen Debugoutputs raushauen, und überhaupt mal überwachen welche Probleme im Livebetrieb auftauchen. Es schaut nämlich ganz anders aus wenn der Server plötzlich von überall erreichbar ist als wenn nur ich mit dem Client zugreife... Also der Server wird definitiv noch ein paar Refactoriterationen durchlaufen ... Aber funktionell läufts mal!
  21. Mythos
    Hi there,
     
    zugegeben, ich dachte es gibt mehr "Hintergrundwissen" das ich euch hier erzählen kann. Aber mit dem heutigen Eintrag gehen mir schon die Themen aus ;) Also wenn jemand Themenvorschläge hat oder Fragen: immer her damit ;)
     
    Zum heutigen Thema: Time & Sales (ich glaub man nennts so)
    Im Prinzip eine ewiglange Liste mit 3 Spalten: Zeitstempel, Preis, Volumen.
    Beinhaltet im wesentlich alle Ausführungen die passiert sind. Also in gewisser Weise eine History für den letzten Preis.
    Sprich wenn ich 3 LimitSells im Orderbuch habe, bei 1000, 1001 und 1005. Und dann kommt ein MarketBuy 5, dann kommt in die Time & Sales Tabelle 3 neue Einträge:
    2011.02.08 22:10:10.000;1000;1
    2011.02.08 22:10:10.030;1001;1
    2011.02.08 22:10:10.060;1005;1
     
    (wenn man annimmt das es zu der Zeit passiert ist und die Ausführung 30 ms pro Contract gedauert hat)
     
    hmmm das war dann mal wieder ein kurzer Beitrag ;)
    hoffe es hat irgendwem trotzdem geholfen
     
    no worries
    Mythos
  22. Mythos
    Da is er ja! ;)
     
    Aktivierungscode is endlich gekommen und nachdem ich mich ein bissl durch die Menüs geangelt hab (ich hoff ich hab nicht unabsichtlich was kostenpflichtiges aktiviert ;) is alles laufbereit. DB ist endlich korrekt drauf (Die Sch*** haben MySQL 5.0 und irgendeinen uralt phpmyadmin, jetzt musste ich über die shell die DB einrichten *grrr*). Und wenn ich den Server über die Shell manuell starte läuft auch schon alles korrekt. Bleibt nur noch das Server und Clearing automatisch (sprich per Dienst) gestartet werden. Weiß zwar das man dafür ein script in init.d erzeugen muss, aber noch keine Ahnung was ich da genau reinschreiben muss.
    Ja ich gebs zu, bin ein Linuxneuling...
     
    Also falls mir jemand sagen kann wie ich ein .jar am besten als Dienst einricht: ich freu mich ;) (er kriegt auch 50000 Credits extra gutgeschrieben ;)
     
    no worries
    mythos
  23. Mythos
    Hi there,
     
    nicht das hier ein falscher Eindruck entsteht: Nur weil ich nicht jeden Tag blogge heisst das nicht das ich nicht jeden Tag code ;)
     
    Was is weitergegangen? Kurz gesagt: viel ;)
    Das clearing besteht mal die ersten Tests (Wenn man schon einen Client zum testen hat is es viel praktischer ;). Zuerst war ich ein bissl geschockt von der Ausführungszeit, aber nachdem ich gemerkt hab das ich di Connection zur MySQL vor jeder Abfrage neustarte (bzw. nach jeder Abfrage schließe) hat sich die Zeit gezehntelt. Jetzt ist eine Ausführung (also eine Order wos wenig passende andere gibt) in unter 100 ms fertig. Wenn nichts auszuführen ist gehts in unter 20 ms. Mal sehen wie die Performance dann am VPS aussieht. Auf alle Fälle scheint Java nicht wirklich hinten nach zu sein ;)
     
    Zum Thema PHP: Das ist ja noch einfacher zu lernen als ich dachte. Habs mir heute mal angeschaut und das Ding is im Prinzip fertig. Es ist zwar leider schon zulange her das ich html gemacht hab dadurch sind noch keine Spielereien drin, aber das war auch nicht geplant.
     
    Jetzt muss ich nur noch warten bis die Post endlich meinen Verifikationscode liefert, dann dauerts nur mehr ein paar Stunden und Version Alpha is online ;)
     
    Muss nur noch den MarketMaker nochmal checken, der ist doch schon etwas älter, ich glaub den schreib ich auch noch auf Java um, besser alles einheitlich ;)
     
    Muss sagen ich freu mich schon wahnsinnig! Das Ding macht einfach nur Spass zum testen (vor allem wenns funktioniert ;)
     
    no worries
    Mythos
  24. Mythos
    Vor etwas längerer Zeit (weiss gar nicht mehr genau wann) ist im Rahmen eines der vielen Gespräche in meiner alten Studenten WG von meinem WG Kollegen plötzlich die "blöde Idee" gekommen so eine Börse selber zu schreiben und User im kleinen Kreis gegeneinander traden zu lassen. (Genaugenommen wars als Gegenaktion zu den LAN Parties meines anderen WG Kollegen geplant ;)
    Die Idee hat uns beide so fasziniert das wir das Projekt gleich angingen. Von Anfang an wars klar das es ein größeres Ding ist aber wir hatten ja Zeit.
    Schnell war klar das mit wenigen Usern das ganze sehr fad werden würde und wir eine Art "simulierte kritische Masse" brauchen die im Hintergrund zufällig mit sich selbst handelt und dadurch einen Kursverlauf erzeugt bis genug User aktiv sind. Wir nannten das Ding MarketMaker und es war ein toller Moment als wir das erste mal einen zuckenden Kurs unserer eigenen Börse auf dem Schirm hatten.
     
    Aber mit ein paar Freunden in der WG kommt man nie auf eine kritische Masse. Also entstand der Wunsch das Ding webbasiert zu machen. Da es sowieso schon fürs Netzwerk ausgelegt und DB-basiert war, war der Schritt an sich nicht weit... Nur das keiner von uns sich mit web-programmierung auskannte. Tjo blöd. Nach ein paar Versuchen und einem sehr primitiven, ersten, typo3 basierten Interface das nicht wirklich unseren Vorstellungen entsprach, versuchten wir einen neuen WG Kollegen ins Boot zu holen der Ahnung davon hatte. Leider war er von dem Projekt nicht ganz so Feuer und Flamme...
    Dann kam die Idee das ganze in TradeScout zu integrieren (die Plattform die ich damals gerade mit ein paar Freunden startete) einerseits weil hier schon die Plattform vorhanden war, es gut ins Konzept passte und unser super Admin schorsch über das nötige Know How verfügte! An dieser Stelle nochmals ein grosses Danke an ihn für die Mithilfe.
     
    Hier war die Begeisterung und Motivation größer und bald ging die erste Version online. Nach einigen Weiterentwicklungen wurde aber bald klar das ein HTML basiertes Interface eine solche App nicht aushält da der Apache schon bei "wenigen" Usern in die Knie geht, und das ohne realtime sondern mit bis zu 3 Sek Verzögerung (also Intervall der Requests, nicht Wartezeit auf die Replys). Zusätzlich entstand bei mir der Wunsch mehr als ein Symbol handeln zu können um Abwechslung zu schaffen und sowohl erfahrenen Tradern wie auch Neulingen Interessantes zu bieten.
    Also mussten wieder Alternativen her.
     
    Schließlich entschied ich mich ein bissl Java zu lernen und zu versuchen einmal das ganze HTML Zeug in ein Applet zu packen das dann nur mehr einen Request pro Aktualisierung schickt. Aber natürlich ist auch das nicht ausreichend, denn Realtime bedeutet auch keine 1s Verzögerung, und jeder webadmin wird mit Beipflichten (hoff ich zumindest) das selbst konstante 10 Request pro sekunde einen normalen Webserver deutlich beanspruchen.
    Selbst bei rocketscience Tom Next brauchen die Replys schnell mal 0.3 Sekunden...
     
    Tjo also wieder rein in die Java Bücher und Tutorials, und tata: das einzige was bleibt ist eine ausgewachsene Client/Server App. Leider nicht die einfachen im Lehrbuch wo der Client einen Request stellt und der Server antwortet (AFAIK nennen sie das synchron) sondern der Client muss Request schicken können die beantwortet werden (zB neue Orders, oder Chart/Level2 Abfragen) und unabhängig davon muss der Server jedem Client Updates schicken sobald sich was geändert hat (also asynchron). Sonst hat man wieder Unmengen Request ohne Sinn. Es ging also immer tiefer in die Materie. Ich hab viel gelernt und der Source ist gewachsen und gewachsen und gewachsen. Inzwischen schrecken mich begriffe wie Multithreading, Threadpools, DBPools, asynchrone Kommunikation etc. weit weniger als noch vor 2 Jahren ;)
     
    Dann kam die erste Version die lokal toll funkte aber über einen realen Server irgendwie nicht so ganz rund lief. Also wieder ran und debuggen. Als es dann endlich "rund" lief, stand Australien vor der Tür und es war erstmal Pause angesagt.
    "Leider" hatte ich in Oz viel Zeit zum Nachdenken und ich bin mit einer ganzen Liste an Verbesserungsmöglichkeiten nach Hause gekommen, die jetzt alle eingebaut werden wollen. Dafür wird das ganze Projekt jetzt immer "runder" und schöner.
     
    Tja und da wären wir beim aktuellen Stand angelangt.
     
    thx for reading
    Mythos
  25. Mythos
    Hi zusammen,
     
    also die Grundstruktur von ClientGUI steht ja mal. Der Source ist von den alten Teilen zwar noch nicht schön, und auch das Design der Oberfläche ist noch verbesserungswürdig, aber funktionell steht mal die Version 1.0 .
     
    Da ich ja das Orderclearing wieder aus der DB rausziehen will hab ich heute angefangen das ganze in java zu bringen. Inzwischen bin ich auf dem Stand das ichs in java bau und nur die Vergleichsvariante in C++ mach wenn java deutliche Performanceschwierigkeiten zeigt. Man muss ja nicht übertreiben ;)
     
    Programmiertechnisch ist das Ding jetzt nicht die Herausforderung aber der kleine Teil zur Berechnung des Matchingpreises hats in sich. Bin mir immer noch nicht sicher welcher Preis jetzt in gewissen Spezialfällen genommen werden soll.
    zB wenn LimitBuy >= lastPrice >= LimitSell ...
    Und dann diese ganzen Berechnungen wie sich die Equity, Balance und Margin jetzt ändert wenn eine Order ausgeführt wird...
    naja, wenn das Ding fertig ist, muss ichs einfach testen ;)
     
    Parallel dazu hab ich heut den VPS bestellt, sobald da die Daten sind sollt ich den einrichten und ein bissl PHP lernen damit das funkt (hab mich entschieden den Webteil doch per PHP und nicht Servlets zu machen... in gewisser Weise aus Faulheit und Stabilitäts/Performancegründen).
     
    Und als Hintergrundmusik spielt mein Neffe lautstark hinter mir... is es nicht schön? ;)
     
    Naja auf jeden Fall gehts vorran, wenns so weitergeht läuft spätestens am Wochenende die erste Version am Server. Angesichts der Anzahl an Leser start gleich mal den Aufruf für Betatester: Ich such User die Spass haben am Versuch ein JavaApplet abstürzen zu lassen ;) Man muss nix können, ein bissl Börsenerfahrung is hilfreich (da es noch kein Manual gibt) aber nit notwendig. Vorteil an der Sache: Ich werd die Daten nach dem Betatest nicht zurücksetzen, sprich man kann sich einen Performancevorsprung holen während noch nicht soviel Konkurenz ist (Thema "Melk den MarketMaker" ;). Einfach ne PM an mich oder kommentar, ich meld mich dann sobalds losgeht.
     
    In diesem Sinne
    no worries
    mythos
×
×
  • Create New...