Alle Inhalte von Mythos
-
Alarm wenn Serververbindung abbricht
Auf die Schnelle fällt mir nur ein Script ein das regelmäßig IsConnected() abprüft und im Fehlerfall einen Alarm raushaut... kenn noch kein solches Tool, aber das wär sicher einfach zu schreiben.
-
Hallo erstmal
Gleichmal ein herzliches Hallo bei TomNext. Ich bin mir sicher du findest jede Menge interessante Infos und Hilfestellungen. Bei Bedarf einfach Fragen, es gehört dazu das man am Anfang mehr fragt, damit man dann mehr Antworten kann ;) lg mythos
-
Coding 7.2.
@Verschlüsselung: angedacht ja, derzeit noch nicht gemacht. Weiss jetzt auch nicht inwieweit die aktuelle Version "unsicher" ist. Aber ihr solltet vorerst nicht euer "Generalschlüsselpasswort" verwenden ;) Die Kommunikation ist halt ein ByteStream, wer das Protokoll nicht kennt, kann damit wenig anfangen (schon erlebt als der Client plötzlich durcheinand gekommen ist weil ein byte gefehlt hat ;). Man könnte natürlich theoretisch die Bytes selber noch verschlüsseln, aber: Soweit ich das verstanden hab kannst bei java recht einfach "dekompilieren" und dann is wurscht welche verschlüsselung man reinpackt, sie muss im applet implementiert sein, und damit kanns jeder lesen. oder? @webteil: Sorry hab gedacht das hab ich schon wo geschrieben: Das ganze wird auf einem eigenen Server liegen, der als "Webserver" recht simpel auf Anfrage eine Seite zeigt die das Applet beinhaltet etc. (Die Seite soll natürlich nicht statisch sein sondern dynamisch, nona wär ja zu einfach) In weiterer Folge vielleicht auch Registrierung, Bestenliste etc. kA ;)
-
Coding 7.2.
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
-
.mql oder .ex4
Weils grad so schön passt: VORSICHT Stolperstein: MT kompiliert (AFAIK) nur die mq4s wo es kein ex4 dazu gibt. Sprich wenn man einen EA von wem kriegt als mq4, reinkopiert und MT neustartet passt alles. Macht dieser jemand jetzt ein Update und schickt einem den neuen EA und der heißt auch noch gleich, reicht reinkopieren nicht mehr, weil es ja bereits eine ex4 gibt. Deswegen in so einem Fall einfach die ex4 vorher löschen.
-
.mql oder .ex4
Ja, weil MT beim starten alle nichtkompilierten mq4s automatisch kompiliert ;) Du kompilierst also nicht selber, aber kompiliert wird schon.
-
Hintergrundwissen: Level2 (+Orderablauf)
*G* bis auf die mehrjährige Berufserfahrung (außer man zählt Tätigkeit ohne Bezahlung dazu) und die Kenntnisse von Eurex Clearing und XETRA (wie soll man was über die wissen ohne Betriebsspionage? aber soviel anders könnens wohl nit sein :D ) würd ich top ins Profil passen. Aber meine Freundin mag den Punkt "Bereitschaft zu Schicht- und Feiertagsarbeit" sicher nit so gern... Aber dann könnt ich die Exchange gleich offiziell anbinden... wär auch mal was ;) ROFL, da muss ich erstmal googlen was die Begriffe alle heißen ;) CEO und CFO sagt mir ja was (Chef und Chef vom Geld) aber was macht der Rest? Brauch i sowas überhaupt bei der Exchange? ;)
-
Thema bewerten
Ich hätts nicht besser ausdrücken können ;)
-
Thema bewerten
Das "Problem" ist das hier allgemein wenig bewertet wird. Wenn jemand sein eigenes Topic pushen will und grundlos 5 Sterne vergibt müsste nur einmal ein anderer es finden, merken und 1 Stern geben und das Topic ist auf 3 Sterne runter. Eine Bewertung zurücknehmen kannst du nicht. Macht in der Logik ja auch keinen Sinn, weil man theoretisch ja jedes Topic bewerten soll. Du kannst aber einfach die Bewertung auf 3 ändern nach dem Motto. 1 Stern ... sehr schlecht/uninformativ/nutzlos 2 Stern ... unterm Durchschnitt 3 Stern ... normales Topic, nicht besonders aber nicht schlecht 4 Stern ... besser als normal 5 Stern ... hochinformativ, sehr empfehlenswert, unbedingt lesen!
-
Hintergrundwissen: Level2 (+Orderablauf)
Hallo zusammen, im Prinzip kommt jetzt eine kleine Ergänzung zum letzten Background. Anbei ein kleines Ablaufdiagramm was das Clearing in der Exchange genau macht. Also der gesamte Ablauf vom Abschicken der Order beim Trader bis alles was durch diese eine Order angestoßen wurden abgearbeitet ist. Natürlich anstrahiert und etwas vereinfacht zur besseren Übersicht. Das Bild findet sich ab sofort auch im Exchangealbum in der Galerie. Zum heutigen Thema: Was ist Level2 Information? (wieder nur das wie ich es verstanden habe, bzw. wie es in der Exchange läuft) Wir haben ja schon gehört was das Orderbuch ist. Dort sind alle an der Exchange gespeicherten Orders, nach Limitpreis sortiert, aufgelistet. Für den Trader ist jetzt natürlich interessant zu welchem Preis es bereits wieviel Angebot/Nachfrage gibt. Aus Datenschutzrechtlichen Gründen zeigt man natürlich nicht wer genau was kaufen will, aber es würde ja reichen zu sagen "Bei 1000 werden in Summe 3 Stück nachgefragt, bei 1005 werden 5 Stück angeboten etc". Und genau diese Information steckt in der Level2 Tabelle. Zu jedem Preis gibts die Anzahl (genauer gesagt die Summer der Positionsgrößen) der noch offenen Limitorders bei diesem Preis. Achtung: In der Level2 werden nur die Limits angezeigt, nicht die Stops und auch keine Markets (die es normal eh nicht unausgeführt gibt). Man muss natürlich unterscheiden können ob die angezeigte Zahl zu LimitBuys oder LimitSells gehört (beides kann es ja nicht sein). Das passiert meist (auch bei der Exchange) durch eine Farbmarkierung. Grün bedeutet LimitBuy, Rot LimitSell. Level2 Info gibt damit einen sehr guten Überblick über die aktuelle Marktlage. bzw. die Verteilung von Angebot und Nachfrage. Vor allem sieht man sehr schön gewisse Widerstände wo sich der Kurs erst durch einen größeren Block an Orders "durchfressen" müsste um weiter zu steigen oder zu sinken. Aber nicht vergessen: Orders können auch wieder gelöscht werden und es kann sein, das ein Großer nur den Anschein erwecken will das hier ein Widerstand herrscht, aber sobald der Kurs in die Nähe kommt seine große Order einfach rauslöscht. In der Exchange gibt es noch 2 zusätzliche Spalten in denen die eigenen Limits und Stops als zusätzliche Hilfe mitangezeigt werden. Dadurch sieht man schnell wo man noch welche Orders im Markt hat.
-
Endlich die erste Preview
Hi Leute, also zuerst muss ich sagen: Es ist schön wenn endlich Ergebnisse sichtbar werden;) Hatte gestern abend einen leichten Motivationsdurchhänger (nur Code durchgehen und verbessern ist mit der Zeit öd), aber nach 3 weiteren Stunden programmieren waren dann endlich die ersten sichtbare Ergebnisse da. Inzwischen ist die Grundstruktur endlich so wie ich sie bei der ersten Version haben möchte. (Heißt nicht das sich nicht dann schnell was dran ändern kann ;) Das komplette durcharbeiten des GUI Codes hab ich erstmal verschoben und zuerst die Bereiche erledigt die notwendig waren damits als neue Version läuft. (Sprich das "Code schön machen" kommt erst jetzt dann). Als Vorwarnung gleich vorweg: Die Farben sind noch ein bissl böse und mehr prinzipiell zu verstehen. Die Fenster haben keine eigenen Icons etc. und es ist halt auch (noch) der übliche XP Look, aber kann ja alles noch werden. Ich hab jetzt mal einen kleinen Screenshot gemacht von den möglichen Fenstern/Anzeigen, wobei Level2, Chart und NewOrder es natürlich für jedes Symbol ein eigenes geben kann (wenn mans anzeigen lässt). Über die vielen tollen Features lass ich mich in einem anderen Eintrag aus, hier gibts nur mal ein "Es geht was weiter" und "In diese Richtung gehts" ;) Freu mich auf Kommentare, Fragen und Anregungen ;) lg mythos (Bild verlinkt auf das Bild in der Galerie, klick drauf für Sprung zum Album)
- Was bisher geschah
-
Evanescence
Ronner Philosophicus Theodor Arthur Heinrich Maximus von und zu Auf und Davon hinterDenBerg SCNR
-
Lot Größe begrenzen
Danke für die Erklärung. Wir sind hier ein bissl sensibel was mögliche Urheberrechtsverletzungen angeht (und dekompilierte EAs deuten meist in eine solche Richtung), deswegen die Frage. In diesem Fall riechts für mich zwar immer noch danach, aber nicht von dir, sondern dort wo Google den EA gefunden hat. Mein Tipp: Denk dir das Thema Martingale nochmal genau durch. Er hat nicht nur seine guten Ergebnisse mit hohen Orders geschlachtet: die guten Ergebnisse sind nur möglich wenn er teils so hohe Orders produziert. Sonst mach er dann eben viele kleine/mittlere Verluste wenn er nicht mehr verdoppeln kann. hth mythos
-
Grundmechanismen: das Orderbuch und Clearing
Weiter gehts. Wenn man sich also festgelegt hat bzw. weiß welche Orders es gibt, ist noch die Frage wie diese gespeichert und ausgeführt werden. Ich hab zwar schon von Fill or Kill Orders gehört, aber die machen aus einem einfachen Grund nicht global Sinn (maximal für MarketOrders): Wenn man die Order löscht sobald sie nicht sofort ausgeführt werden kann, gibt es keine gespeicherten Orders (Kauf oder Verkaufsangebote) die zur Verfügung stehen, ergo kann keine Order ausgeführt werden... blöde Börse;) Also speichern wir die Order im sogenannten Orderbuch. Zur Vereinfachung werden sie gleichmal nach Limit/Triggerpreis sortiert. Die MarketOrders die nicht ausgeführt werden können (was normal nicht vorkommen sollte, wie gesagt macht aber hier ein Fill or Kill sehrwohl Sinn) hauen wir einfach in einen Topf (hier gibt es ja keinen Limit oder Triggerpreis). Zum Glück kann es nie vorkommen das Kauf- UND Verkaufsorders gleichzeitig im Topf liegen. Was passiert aber wenn es unausgeführte MarketBuys gibt (zB) und es kommt eine MarketSell? Genaugenommen hat man als Börse hier fast alle Freiheiten, denn beide sagen "Gib mir den besten (sprich irgendeinen) Preis". Bei der Exchange wird in diesem seltenen Fall der letzte gehandelte Preis als Matchingprice festgelegt. Dadurch wird verhindert das sich der Kurs unnötig bewegt und es ist halbwegs fair gegenüber der neuesten Ordern. Trifft eine neue LimitSell auf unausgeführte MarketBuys, wird ebenfalls der letzte gehandelte Preis verwendet sofern dieser innerhalb des Limits liegt, andernfalls wird zum Limit gehandelt. Somit kann es bei dieser Konstellation dazu kommen das der Kurs durch eine Verkaufsorder nach oben gezogen wird. Sprich wenn der Markt so ausgedünnt ist, das eine Seite komplett weg ist und sich noch MarketOrders (zB ausgelöste Stopps) auf der anderen Seite befinden, sonst nicht. So wie ich den Börsenheini auf dem Tonband verstanden hab gabs eine so ähnliche Situation damals wo der Dow in 10 Minuten 1000 Punkte runtergerast is, da war irgendwas von "I got no Buyers here", aber das nur nebenbei ;) Limit und Stoporders werden also, sofern sie nicht sofort ausgeführt werden können, im Orderbuch gespeichert. Dabei gibt es automatisch zwei Seiten: Die Käufer und die Verkäufer deren Preisbereiche sich nie (ausser in sehr pathologischen Fällen, wem einer einfällt: Kommentar ;) überschneiden. Im oberen Bereich sind die LimitSells und im unteren die LimitBuys. Bei den Stops sind die Bereiche genauso getrennt aber vertauscht: über dem Preis sind die StopBuys darunter die StopSells. StopSells können sich also nicht mit StopBuys überschneiden weil beide ausgelöst werden sobald sie auf die "andere" Seite des letzten Preises fallen oder ihn berühren. Limits können sich nicht überschneiden weil dann eine Übereinstimmung vorhanden wäre und die entsprechenden Orders bereits ausgeführt wären. Was aber sehr wohl sein kann, ist das sich zB StopSells und LimitSells überschneiden (obwohl sie eigentlich auf unterschiedlichen Seiten liegen). Das passiert zB wenn es wenig LimitBuys gibt (vor allem keine knapp unter dem letzten Preis) aber die LimitSells immer tiefer wandern (also immer neue mit tieferen limits dazukommen). In dem Fall liegt dann auch der letzte Preis nicht mehr zwischen LimitBuys und LimitSells. Deswegen spricht man auch vom letzten Preis (bzw. letzten gehandelten Preis). Denn er ist genau das und nicht mehr. Es gibt keine Garantie das man zu diesem Preis wieder handeln kann, noch das man überhaupt in der Nähe davon wieder handeln kann, es ist nur ein Hinweis wo gerade was passiert ist. Anders ist es mit dem Bid und Ask. Also dem Angebot und Nachfrage. Das bezieht sich auf den höchsten vorhanden Limitpreis bei den LimitBuys und den niedrigsten vorhandenen Limitpreis bei den LimitSells. Also die zwei Werte zu denen man aktuell kaufen bzw. verkaufen kann (wohlgemerkt nur mindestens 1 Stück). Was passiert wenn ein Limit zu einem gefüllten Orderbuch kommt? Gibt es eine Überschneidung, also LimitBuy >= LimitSell, dann werden die bereits im Orderbuch stehenden Orders solange gegen die neue ausgeführt, bis nichts mehr geht oder die Order ausgeführt ist. Und zu welchem Preis? Ist der letzte gehandelte Preis unter den LimitSells und über den LimitBuys ist klar das zum Limit der gespeicherten Order gehandelt wird. Einerseits um die Bewegung minimal zu halten andererseits weil der Ersteller der neuen Order ja diesen Preis bereits als Angebot gesehen hat. Was passiert wenn der Ask unter dem zuletzt gehandelten Preis ist und eine LimitBuy über dem zuletztgehandelten Preis reinkommt? Tjo jetzt wirds schwer: Will man die Preisbewegung minimieren oder gibt man dem Ersteller der neuen Order den besten Preis den er kriegen kann? Ehrlich gesagt bin ich mir jetzt gar nicht mehr sicher wie ich es implementiert habe bzw. in der neuen Version implementieren werde, deswegen hier gleichmal ne Publikumsfrage: was wäre euch lieber? MarketOrders werden einfach zum bestmöglichen Preis ausgeführt (wandern also einfach die LimitSells von unten bzw. die LimitBuys von oben durch bis sie gefüllt sind). Hier gibt es wieder die Frage: was passiert wenn der letzte Preis innerhalb des Limit ist? Zur Ausführung von Stoporders gibts eigentlich nicht viel zu sagen, die werden nämlich gar nicht "ausgeführt". Sobald der zuletzt gehandelte Preis den Trigger auslöst, wird die Order in eine MarketOrder verwandelt und "neu auf den Markt geschmissen" also ausgeführt als wäre es eine neue MarketOrder. hmmm das ist schon wieder mehr geworden als geplant, egal. so long und ich freu mich auf Anregungen mythos
-
Lot Größe begrenzen
Hat die Begrenzung der Lotgröße funktioniert oder nicht? Bzw. was erwartest du dir gerade konkret? Das jemand sich den EA anschaut und dir einen ZauberEA draus bastelt? Wenn du ein konkretes Problem hast, dann stell bitte konkrete Fragen. "Hier ist der EA, schaut mal rein und ändert was falsch ist" gibts hier nicht. bzgl. negativ: Darauf haben sie ja schon hingewiesen. MartingalEAs basieren darauf das du immer verdoppelst. Wenn du das verbietest wird er noch schlimmer daneben hauen wie wenn du die Strategie pur fährst. EDIT: Könntest du mir auch bitte eine plausible Erklärung geben warum deine Variablen so komische Namen haben? Denn es ist mir zu Ohren gekommen das das normal ein Zeichen für einen dekompilierten EA ist. Will nur sicher gehen.
-
Coding 3.2. - Alles "neu"
Hi there, diese Kategorie (TechDiary) dient einerseits als ein bissl Tagebuch bei der Entwicklung für mich um später manche Dinge nachblättern zu können, andererseits soll es euch ein bissl einen Einblick geben was hinter so einer Entwicklung steckt, das ihr seht das was weitergeht ;) und falls es ein paar Java-Cracks gibt die mitlesen freu ich mich hier auch über Anregungen. Seit ich aus Oz zurück bin, bin ich eigentlich hauptsächlich damit beschäftigt den bestehenden Code durchzuarbeiten und auf "Level" zu bringen. Da das Projekt im Grunde meinen Lernprozess in Java widerspiegelt, sieht der ältere Teil vom Code aus heutiger Sicht noch sehr Anfängermäßig aus :( Sprich ich arbeit gerade das gesamte Design durch, brings nach bestem Wissen und Gewissen auf schöne OO und leicht wartbare Classes. Da ich beim Server angefangen hab, (ist aufgrund "fehlender" GUI deutlich weniger Code) hab ich mit dem Durchwälzen der ConnectionHandler auch gleich das Protokoll überarbeitet. Noch ist das Ganze "klein" genug das ich während der Arbeit alle Bereiche im Kopf hab und dadurch on the fly Änderungen im Protokoll machen kann ohne lang überlegen zu müssen was ich jetzt eigentlich für Daten schicke oder brauche. Mal sehen wie langs noch so bleibt oder wie oft ich das Protokoll noch anpassen muss (inzwischen geht das zumindest sehr einfach). Der Server ist auf alle Fälle mal durchgeackert. Da es noch keine Unittests gibt (ja ich weiss, die sollte man am Anfang schreiben, aber mein Prof. schaut ja gsd nicht zu ;), weiss ich leider erst ob er tut was er soll, wenn ich den ConnectionHandler des Clients durch hab und den in einen kleinen "ClientDummy" integriere. Sprich eine Art Testapp die Verbindungstechnisch einen Client simuliert, aber einfach die Daten direkt ausgibt. Da sieht man dann gleich ob die Verbindung funkt ohne das einen Bugs in GUI und Datenverarbeitung dazwischenfunken. Also wieder ran an den Speck, ich hoff ja schon das ich bis Wochenende den ersten Screenshot hier reinstellen kann, aber mal sehen... so long mythos btw. falls hier wirklich interessierte Coder mitlesen: Einfach melden ich kann auch gern tiefer ins Detail gehen (soweit ichs halt weiß ;)
-
Best of Oz
Galerie muss ich mir mal ansehen. Machts Sinn das ich es nachträglich umstelle (Also jetzt ein Oz-Ablum erstelle?) EDIT:Kann es sein das man einzelne Bilder aus dem Album nur schwer mit dem Blog verknüpfen kann? Dann wär das beste das Album parallel erstellen und dann die Bilder per link verknüpfen oder? Muss auch einmal sagen das es mich sehr gefreut hat immer so positive Rückmeldungen zu kriegen. Es tut gut wenn man am anderen Ende der Welt ist und merkt das es Leute gibt die sich auch dafür interessieren ;)
-
Grundmechanismen die Erste: Orderarten
Freut mich wenns "ankommt".
- beruf-trader.com - Patrick Hahn (ex XTB) SPAM
-
Grundmechanismen die Erste: Orderarten
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
-
Ein paar technische Details
Legen wir gleich mal mit ein paar technischen Details los. Usprünglich lief die Exchange in der Datenbank am TradeScout Server. Da das Um und Auf einer aktiven Börse aber eine Vielzahl an Usern ist, und TradeScout sicher nicht so schnell wächst, hab ich mich entschieden die Exchange rauszulösen und unabhängig zu machen. Sprich die neue Exchange wird auf einem eigenen Server laufen und unterschiedliche Foren können sich als "Partner" anmelden wodurch der Einstieg in die Börse direkt über die Plattform läuft. Damit teilen sich dann viele User aus unterschiedlichen Communitys einen Börsenplatz. Ein bissl wie an der realen Börse mit den Brokern. Eine weitere Neuerung ist das ich das Clearing wieder aus der DB herauslösen werde. Ok dazu muss ich ein bissl ausholen. Ganz ursprünglich wurde das Clearing (also der Versuch 2 Orders zu matchen) in einem externen C++ Prog erledigt das sich regelmäßig die neuen Orders aus der DB holte und abarbeitete. Aus vermeintlichen Performance und Timinggründen hab ich das ganze dann jedoch in die DB per procedures und functions verlagert und eine Order wurde nicht mehr in eine Tabelle eingefügt, sondern es wurde eine "newOrder" Procedure aufgerufen wodurch die Order sofort abgearbeitet wurde. Hat aber den Nachteil, das große Orders die DB belasten, denn beim Clearing sind zwar auch einige DB Aufrufe beteiligt, aber es gibt auch viel DB-unabhängige Berechnungen. Deshalb inzwischen das Umdenken. Um das Timing zu lösen (derzeit muss die Clearing alle paar millisekunden auf neue Orders checken) wird der Exchange Server in Zukunft neue Orders nicht in die DB einfügen sondern direkt ans Clearing senden wodurch auch das Problem gelöst wäre. Bedeutet nur eine weitere Client/Server Verbindung, diesmal zwar einfacher aber ich mach erstmal die aktuelle Geschichte fertig. Man soll ja immer noch Möglichkeiten zur Verbesserung haben ;) Einzige Frage derzeit ist noch ob das Clearing besser Java oder C++ basiert ist. Speedtechnisch auf jeden fall C++, wobei hier vermutlich nicht so ein großer Unterschied ist. Aus programmiertechnischer Sicht ist es sicher einfacher alles auf der gleichen Sprache zu haben, vor allem in Hinblick auf die Erweiterung weil ich (noch) keine Ahnung hab wie man Server in C++ implementiert. Wenn ich die zeit finde werd ichs in beiden schreiben und den Speed testen. Tendiere derzeit aber deutlich mehr zu java. Noch ein kurzes Wort zum Applet: Es basiert auf Swing, im Applet selbst wird es die AccountInfo und den aktuellen Ticker geben. Per Menü wird man dann zu jedem Symbol Chart und Level2 Fenster öffnen können bzw. ein Fenster mit der Übersicht über die eigenen Orders. so weit fürs erste, damit seid ihr Überblickstechnisch glaub ich auf dem aktuellen Stand. mythos
-
Ich bau mir meine eigene Börse... Idee, Motivation, Plan
Lol, ja so weit weg is es eh nit ;) btw. du bist aber fix mit dem lesen und kommentar.
-
Was bisher geschah
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
-
Ich bau mir meine eigene Börse... Idee, Motivation, Plan
Hallo zusammen, für alle die einen Tradingblog erwarten: Sorry, is nich. Das hier wird einerseits eine Dokumenation der Entwicklung einer Java-App, andererseits Sprachrohr für Neuigkeiten etc. Warum der Blog dann hier bei TomNext steht kommt später (immer die Leute neugierig halten ;), jetzt mal erst eine kurze Erklärung um was es geht. Die Grundidee der Exchange ist das "Experiment" einen Börsenplatz zu erzeugen wo fiktive Assets ohne jeden Bezug zur Realität aber nach den realen Regeln der Börse gehandelt werden können. Sprich es ist kein Börsenspiel im klassischen Sinn wo jeder Teilnehmer reale Aktien kaufen kann und dann das theoretische Portfolio aufgrund der realen Kurse läuft. Sondern der Kurs bewegt sich, wenn es Kauf und Verkauforders gibt die ein matching erlauben. Der Kurs wird also von den aktiven Usern produziert und nur von den Usern. Die Motivation für die Exchange: Im wesentlichen gibt es 3 wichtige Motivationen für die Entwicklung: Das Thema Börse ist derzeit viel in den Medien und im Blickpunkt der Öffentlichkeit. Die einen verteufeln sie, die anderen wollen Millionen verdienen aber die meisten wissen nicht wie sie funktioniert. Selbst "Börsenteilnehmer" wissen teils nicht wie der Kurs wirklich entsteht. Die Exchange soll hier zur Aufklärung mithilfen. Denn hier kann man als User völlig frei die Mechanismen selbstständig erforschen, direkt erfahren welchen Einfluss die eigenen Orders haben, was die Ordertypen wirklich bedeuten und damit wie der Kurs eigentlich entsteht. Als "Anhänger" der technischen Analyse finde ich die Frage spannend "Was passiert mit einem Kurs der frei von realen Einflüssen ist?". Welche Faktoren spielen eine Rolle? Gibt es ähnliches Verhalten wie an der realen Börse oder komplett neue Muster? Bewegt sich der Kurs überhaupt? Es ist ein spannendes Spiel und für Börsensüchtige ein top Ersatz fürs Wochenende, denn die Exchange wird 24/7 laufen. Das waren zumindest die Hauptmotivationen als das Projekt gestartet ist, inzwischen is es zusätzlich noch ein gutes Programmierübungsprojekt. Der weitere Plan (damit ihr wisst ob ihr wiederkommen sollt ;) Ich bin kurz vor der Fertigstellung der "2." Version der Exchange und habe vor hier ein bissl über den Fortschritt zu berichten. Parallel werd ich auch ein bissl über die implementierten Grundmechanismen, die zumindest ich vor start des Projekts nicht 100% gekannt habe, erzählen um dem "Bildungsauftrag" nachzukommen ;) Im weiteren Verlauf seht ihr hier dann auch Previews vom Interface und ihr könnt mit Feedback/Wünschen/Anregungen mich bei der Entwicklung unterstützen. Ganz "zum Schluss" such ich dann hier auch gleich die ersten Beta-Tester, aber dazu kommen wir dann wenns soweit ist. Ich muss noch dazu sagen das das ganze im Prinzip ein privates Hobby von mir is. Also Nullbudget und das ganze Projekt is inzwischen so groß und technologisch anspruchsvoll, das ich den Code regelmäßig überarbeite weil ich ständig dazulerne/draufkomm wies wirklich geht ;) Aus beiden Gründen bitte nit böse sein wenns manchmal ein bissl länger dauert, ich bemüh mich.