Jump to content
Tom Next - Daytrading Community

Markttechnisches Handelssystem programmieren


Eddy

Recommended Posts

Ohne Mustererkennung ist da nicht viel zu machen, da du immer einen zeitlichen Nachlauf haben wirst. Denn sonst würde ich den Ninja PriceAction

nehmen und gut ist.

 

Aber den zeitlichen Nachlauf hast du doch bei jeglicher Form von Mustererkennung, oder etwa nicht?

 

Ich würde und das habe ich schon mal geschrieben mich mit Pattern beschäftigen (in diesem Zusammenhang)

Neurale Netze. Die Literatur und APIs sind recht gut (Encog, Aforge). Üben kannst Du mit Matlab oder auch R /

Python und dann in C# / C umsetzen. Ich denke für einen alleine ist das schon eine mächtige Aufgabe, da nicht nur

progammiertechnisch sondern auch mathematisch sehr ansprechend. Da würde ich mir erstmal eine kleine Armee von

Thais organisieren (Wissenschaftler und Informatiker).

 

Würde ich grundsätzlich auch machen. Leider habe ich nicht so viel Zeit und auch keine Kenntnisse über Neuronale Netze, Matlab, R.

 

Ich würde mich nicht an Voigt festhalten,

vielleicht hat Voigt ja auch ein bisl von Ross geklaut. Wer weiß ...

 

Schauen nicht Alle voneinander ab? Das ist doch grundsätzlich nicht schlecht. Machen wir doch in den Foren auch.

Für mich als "Frischling" in Markttechnik / Technische Analyse ist die Markttechnik noch am verständlichsten.

 

Hast den ein Konzept oder wollt Ihr nur bunte Bilder programmieren ... Vielleicht mal ne Spec. schreiben und nen SVN aufmachen

und die Sache als Open Source vermarkten und sich ein paar Programmierer suchen.

 

Ein vollständiges Konzept zur programmtechnischen Umsetztung der Markttechnik habe ich nicht. Ich habe GDBM und die Händler-Serie gelesen. Meine Strategie war am Anfang: einfach mal ein bischen rumprogrammieren. Mittlerweise ist mir klar, das es so nicht geht. Ich gehe jetzt schrittweise vor (ein allumfassendes Konzept kann man alleine in angemessener Zeit nicht erstellen). Die ersten Schritte waren / sind:

 


  •  
  • Erkennung der 123 auf Basis eines skalierbaren Regelwerks
  • Erkennen, ob ein Trend ein Untertrend eines vorherigen Trends ist (Voraussetzung für die Trendphasenbestimmung)
  • Verschmelzen von Trends (d.h. Fortsetzung des gebrochennen übergeordneten Trends
  • Charttechnische Darstellung der beteiligten Timeframes (notwendig, da ich beliebig viele Timeframes in einer Handelsstrategie verwenden kann und SEHEN will, wie jeder neu hereinkommende Tick verarbeitet wird (zum Testen unerlässlich)
  • Erstellen einer Testumgebung, um auch Offline Entwickeln und Testen zu können

 

Ein gewisses Konzept habe ich also schon. OpenSource ist ein sehr interssanter Weg. Ich habe (außer das ich sie nutzte, Eclipse, OO, ...) keine Erfahrung, wie man ein solches Projekt aufsetzt. Viele OS-Projekte starten ja vielversprechend und schlafen dann irgendwie ein.

 

Und ja, bunte Bilder erzeuge ich auch. Da ich ein visueller Mensch bin, bringen sie mir sehr viel. (Trends ein-/ausblenden, verschmolzene Trends ein-/ausblenden).

 

Ich habe mein diskretionäres Trading (was nicht wirklich erfolgreich war) vollständig eingestellt. Ich habe schon die Absicht mit Hilfe des Systems wieder zu traden. Ob Voll- oder Halbautomatisch wird die Zukunft zeigen.

  • Upvote 1
Link to comment
Share on other sites

Meine Überzeugung zur Markttechnik, ob Voigt, Ross, Gann usw. liegt darin, daß der Dreh und Angelpunkt im 1,2,3 liegt, denn technisch gesehen, kann eine Bewegung nur dort entstehen. Alle Theorien, egal von welchem Autor basieren in der Charles Dow Theorie ...

Sehe ich auch so.

 

Ich bin nicht der Initiator des Threads, sondern Eddy, deshalb möchte ich hier keine eigene Initiative ergreifen, sollte diese Studie in MT4 mal begonnen werden, biete ich mich, trotz meiner beschränkten zur Verfügung stehenden Zeit, als MT4 Mitprogrammierer an, wichtig ist daß auch andere Tester und Programmierer sich melden, sonst dauert die Sache ewig.

Da wir hier in verschiedenen Programmiersprachen entwickeln, wird der Austausch von Programmcode nicht ganz einfach.

 

Wäre es nicht sinnvoll (wh hat es oben mal angeregt, Spec), wir würden versuchen bestimmte Markttechnische Aspekte zu identifizieren (z.B. Erkennen einer Trendphase) und daraus eine Spec zu erstellen. Für die Implementierung des Spec in die einzelnen Programmiersprachen finden sich dann vielleicht doch einige zusammen.

 

Eddy

Link to comment
Share on other sites

Hi,

 

ja, du hast Recht! Das hatte ich nicht berücksichtigt!

Der Austausch wird schwierig, da ich nie ein NT Script gesehen habe, kann ich nichts dazu sagen.

Natürlich habe ich auch keine Lust zusätzlich zu easylanguage und Metatrader, noch ne Sprache zu erlernen, wie ihr wahrscheinlich auch nicht.

 

Wenn mit "Spec" eine Beschreibung gemeint ist, wäre es sowieso die Basis für jedes Vorhaben, bis dahin kann ich mitwirken, dann würde aber die gemeinsame Basis des gemeinsamen Scriptes fehlen und man kann sich nicht wirklich gegenseitig bei der Programmierung helfen.

 

Ich weiß nicht so Recht...

 

Gruß,

frlaspina

Link to comment
Share on other sites

Nach Voigt ist es wesentlich, die Marktphase zu bestimmen, damit man einen Entry mit hoher Ertragswahrscheinlichkeit findet. Ich habe einen ersten Entwurf einer Spezifikation geschrieben, mit der die Marktphasen bestimmt werden können. Was haltet ihr davon? Gibt es etwas, was ich übersehen habe bzw. was undeutlich oder falsch formuliert ist? Liege ich vielleicht komplett falsch?

 

Z.Z. fehlt noch die Beschreibung eines Verfahrens zur Abstandsmessung und Bewertung zweier Punkte. Dies ist m.M.n. wichtig zur Beantwortung der Frage:

steht man kurz vor dem Durchbruch durch einen P2 bzw. P3.

 

Aus der Spec könnte man dann einen Pseudocode entwickeln, der in eine Zielsprache überführt werden kann.

 

Eddy

Marktphasen Spec.pdf

Link to comment
Share on other sites

@Eddy nimmst Du AI (in diesem Zusammenhang ein Netzwerk /RBF oder ANFIS) kannst du Dein zeitliches Lag auf null setzten.

Tendenziell hast du aber Recht.

Hallo wh,

 

ich habe keine Ahnung von neuronalen Netzwerken und fuzzy logic. Ist das dann nicht ein fast aussichtsloses Unterfangen damit anzufangen? Wie soll man denn als Einzelkämpfer da schnell reinkommen?

 

Worin würde denn der Nutzten bestehen? Bei der Regelerstellung? Kann man dann aus den Regeln auch Code generieren?

Link to comment
Share on other sites

Hi,

 

wollte vorab mitteilen , da ich Ende der Woche in den Urlaub fahre, und somit. falls keine Reaktion meinerseits kommt, dann íst es kein Mangel an Interesse, sondern daß ich mir einfach die Sonne auf dem Bauch scheinen lasse, ab Sept. bin ich wieder aktiv, bzw. auch aus dem Urlaub wenn es Regentage gibt (hoffentlich nicht!)

 

Zum Thema könnte ich auf einige fertige Funktionen hinweisen, aber diese betreffen den MT4, er hat sogar Fractal integrierte Funktionen und ein etwas geänderter ZigZag Indikator der nicht repaintet kann dabei helfen.

 

Gruß,

frlaspina

Link to comment
Share on other sites

Zum Thema könnte ich auf einige fertige Funktionen hinweisen, aber diese betreffen den MT4, er hat sogar Fractal integrierte Funktionen und ein etwas geänderter ZigZag Indikator der nicht repaintet kann dabei helfen.

Wo findet man denn diese Funktionen?

 

Edit: Vergess die Sonnencreme nicht. Schönen und vor allem erholsamen Urlaub.

Edited by Eddy
Link to comment
Share on other sites

Wo findet man denn diese Funktionen?

Eine Möglichkeit wäre dieser ZigZag Indikator.

Parameter Length auf 1 stellen, dann hast du die höchste Empfindlichkeit der Anzeige.

Desweiteren kannst du wählen ob er auf High/Low usw. berechnen soll (Siehe Code)

 

//+------------------------------------------------------------------+

//| NonLagZigZag_v2.mq4 |

//| Copyright © 2006, TrendLaboratory |

//| http://finance.groups.yahoo.com/group/TrendLaboratory |

//| E-mail: igorad2003@yahoo.co.uk |

 

NonLagZigZag_v2.mq4

Link to comment
Share on other sites

Hallo, danke,

 

daß von Vola müßte auch funktionieren, man muß nur testen ob der Indikator nachzeichnet, wenn dies der Fall ist, dann würde die Ermittlung des letzten Hoch/Tief sich ständig ändern und zu Fehlinputs führen, durch das einfügen der FractalFunktion reagiert er anders. Durch testen kommst du dahinter mit welchem du deine Ziele erreichst.

Alle Funktionen sowie den Standard ZigZag (für diskretionär) Indikator findest du im Editor in jeder kostenlosen Demo von Metatrader als Standard integriert.

 

Hier findest du grundsätzlich alles was mit MT Programmierung zu tun hat: (Vorsicht, viele Scripte sind nur Teil- oder Beispiele und nicht als System zu benutzen!) Jedoch Ausbaubar, Hilfreich und Umfangreich!

www.mql4.com

 

Beispiele über Indikatoren, EA´s und Abhandlungen über Fractal findest du hier:

http://www.mql4.com/search?keyword=fractal

 

Hier der Indikator ZigZagFractal wovon ich das Bild eingefügt habe, zum Download:

http://codebase.mql4.com/7215

 

Die Ermittlung des Signals daß für deinen Vorhaben passen würde, wäre höchstwahrscheinlich der Schlußkurs der fertigen Kerze, also close[1] statt bid/ask.

 

Viel Erfolg!

frlaspina

  • Upvote 1
Link to comment
Share on other sites

@frlaspina

Danke auch für die Links.

 

Ich habe schon ein Verfahren, um die 123's zu finden. Basiert auf die Auswertung der High/Low und Open/Close Situation an einem Bar. Die Empfindlichkeit stelle ich nicht über eine einstellbare Abweichung her. Einserseits kann ich die Anzahl Bars einstellen, in denen eine saubere Klärung des HHHL bzw. LHLL stattfinden muss (habe ich bei Ross gesehen). Der zweite Weg ist zu erkennen, ob ein Trend angeschlagen ist, d.h. ob es einen kleineren Trend in die gleiche Richtung gibt. Wenn der kleinere Trend über/unter den letzten P2 steigt/fällt, "verschmelze" ich die Trends. Der gebrochene Trend wird dann fortgesetzt. Damit hat sich dann auch ein neues HHHL bzw. LHLL gebildet.

 

Allerdings verwende ich hierzu einige Klassen (gibt es so etwas in MT?) wie z.B. MtTrend (verwaltet Trendeigenschaften wie Trendtyp, Marktphase), MtPart (verwaltet einen Trendabschnitt (Bewegung, Korrektur).

 

Gibt es eine Möglichkeit, den Sourcecode von Indikatoren (z.B. iFractals) einzusehen?

 

Eddy

Link to comment
Share on other sites

Hi Eddy,

 

iFractal ist ne integrierte Funktion und Quellcode kann soviel ich gesehen habe, nicht gelesen werden, evtl. findest du mehr in der Abhandlung Online. Schaue auch nach Array.

 

So wie ich es verstehe geht es dir darum die QuellCodes zu haben um es in deinem System umzuschreiben nachdem das Prinzip klar ist, ich benutze fertige Funktionen, schaue in

www.mql4.com

dort findest du evtl. was du über Klassen suchst. Mich würde es wundern wenn MT4 irgendwas nicht hätte...

In den Standard Indikatoren findest du Bear- und Bull Power Indikator den man durch umprogrammierung auf eigene Bedürfnisse anpassen kann, aber es ist wahrscheinlich nicht das was du suchst.

 

Allgemeines:

Die Problematik in der Erkennung ob Trend angeschlagen ist oder nicht mit absolute Hoch/Tiefs Levels und Bewegungen zwischen 1 und 2 zu Ermitteln wird egal wie, immer bleiben!

Der Markt ist nicht so rational wie es die Buchbilder lehren. Es ähnelt einer Anleitung wie man im Idealfall ein Ikea-Schrank zusammenbaut, die Schwierigkeiten und daß man sich auf die Finger hämmern kann, steht nicht drin.

Ich denke daß eine Relative Abweichung und Tolleranz (Evtl. Volatilität wenn nicht zu kleine TF´s) dein System zum Teil vor Kurs-Abprallungen und Fehlinputs(Fehleinstiege) an diesen Levels bewahrt. Dazu kommt, daß z.B. Punkt 2 erst Punkt 2 ist wenn 3 Bestätigt wurde usw. daher die Fractale Idee. Wenn periodisch ob Bar oder/und HL vorgegangen wird und die Range der Perioden Variiert, dann ist daß Ergebnis nie wirklich korrekt.

Egal wie, die Trefferwahrscheinlichkeit wird immer xx % sein und somit entscheidet letzendlich ein Backtestergebniss und noch besser ein Livetest, was sich mehr lohnt.

 

Ich weiß ... komplizierte Sache... :-)

 

Es geht besser wenn man drüber spricht als schreibt.

 

Ciao,

 

frlaspina@yahoo.de

Link to comment
Share on other sites

double iFractals( string symbol, int timeframe, int mode, int shift)

Calculates the Fractals and returns its value.

Parameters:

symbol 	  -   	Symbol the data of which should be used to calculate indicator. NULL means the current symbol.
timeframe -    	Timeframe. It can be any of Timeframe enumeration values. 0 means the current chart timeframe.
mode 	  -   	Indicator line index. It can be any of the Indicators line identifiers enumeration value.
shift 	  -   	Index of the value taken from the indicator buffer (shift relative to the current bar the given amount of periods ago).

 

Sample:

double val=iFractals(NULL, 0, MODE_UPPER, 3);

so viel steht in der Dokumentation zu mql4 zu der Funktion iFractals

Link to comment
Share on other sites

@Eddy: Keine Ahnung, wie Dein Verständnis ist. So schwer ist AI nicht und Du mußt/bzw.

sollst auch nicht ins Detail gehen. Wichtig ist halt nur t+1 und das WARUM. Warum? Die

Märkte unterliegen zu vielen Einflußgrößen, so dass genauere Prognosen unmöglich bzw.

Raterei sind und Raten wollen wir ja nicht.

 

Eine andere Möglichkeit bieten Die Partikle Filter bzw. der Uns. Kalman Filter.

 

Finde ich ganz gut:

http://bks4.books.google.de/books?id=MLKtPwAACAAJ&printsec=frontcover&img=1&zoom=1

Link to comment
Share on other sites

Wichtig ist halt nur t+1 und das WARUM. Warum? Die

Märkte unterliegen zu vielen Einflußgrößen, so dass genauere Prognosen unmöglich bzw.

Raterei sind und Raten wollen wir ja nicht.

@wh

Ich vermute, mit t+1 meinst du, eine Prognose abzugeben, wie sich der nächste Bar entwickelt. AI kann doch auch nur prognostizieren. Sonst könnte man doch den "Heiligen Gral" bauen.

 

Auszug aus wikipedia zum Thema SMC-Methoden:

Häufig steht man vor dem Problem, dass der Zustand eines dynamischen Systems (z. B. der Ort von Objekten) für einen Beobachter nicht direkt, sondern nur über Messungen zugänglich ist. In diesem Fall spricht man von verborgenen Zuständen (engl. hidden state). Eine Messung des Zustandes ist aber prinzipiell immer fehlerbehaftet (verrauscht), d. h. im Allgemeinen gibt die Messung den wahren Zustand nicht korrekt wieder. Aufgrund der Messung ist es aber möglich, den unbekannten Zustand zu schätzen.

 

Die Aussage "...den unbekannten Zustand zu schätzen" ist doch gleichbedeutend mit: eine Prognose abzugeben, oder?

 

Das WARUM verknüpft Voigt mit der Fragestellung "Wer kauft nach mir". Mit der Beantwortung dieser Frage will er die Wahrscheinlichkeit erhöhen, einen Trade erfolgreich durchzuführen.

Edited by Eddy
Link to comment
Share on other sites

  • 3 weeks later...

So, die Erkennung der Marktphasen habe ich im wesentlichen abgeschlossen (die Phase, in der sich ein Trend im übergeordneten Timeframe befindet, bezeichne ich als Marktphase). Voraussetzung für die Phasenerkennung war, Muster zu definieren, die den einzelnen (sinnvollen) Phasen entsprechen und dann diesen Mustern eine Wertigkeit zuzuordnen.

 

Die Erkennung erfolgt in einem 3-stufigen Verfahren.


  •  
  • Erkennen, welches Muster am aktuellen Bar im Trend vorliegt (TS1 … TS6, setzt die max. 5 letzten Punkte eines Trend in Beziehung)
  • Bewerten des Abstandes des letzten Punktes im Trend zum entsprechenden Referenzpunkt (im Aufwärtstrend: Bewerten des Abstandes des letzten Punktes im Trend (P20) zum letzten bestätigten P2-Punkt (P21). Im Abwärtstrend werden P30/P31 bewertet)
  • Aus diesen Information werden die Trendphasen ermittelt und bewertet (0 … 6).

 

Die Abstandsmessung basiert auf der Volatilität (ATR). Die Abstände habe ich in 4 Kategorien eingeteilt (Zero, Small, Medium, Big). Das zugehörige ATR-Maß ist über die GUI einstellbar. Zero=0,5 bedeutet z.B.: alle Abstände,kleinergleich 0.5 ATR werden als Zero bewertet.

 

Die Entry-Erkennung erfolgt ebenfalls über eine Mustererkennung. Für den Trendhandel kombiniere ich die Marktphase (übergeordneter Timeframe) mit der Trendphase, die am letzten Bar im gehandelten Timeframe vorliegt. Der Abstand des letzten Punktes zu einem Refernzpunkt entscheidet auch hier über die Wertigkeit des Entries und über die Orderart (Market, StopBuy).

 

Unten ist mal ein Beispiel für die Trendphasenerkennung (Trend befindet sich in der Fortführung = mind. 2 Korrekturen hat es schon gegeben) sowie für die Entry-Erkennung.

 

Danke nochmals für die Anregungen, bestimmte Situationen zu erkennen. Ich habe sie in meine TODO-Liste aufgenommen. Ich möchte aber erstmal das System mit "einfachen" Erkennungsmethoden zum Rennen bringen.

post-2640-0-29543000-1313243566_thumb.png

post-2640-0-95560400-1313243579_thumb.png

  • Upvote 1
Link to comment
Share on other sites

  • 1 month later...
So, es geht weiter. Konnte die letzten Wochen leider nichts an meinem System programmieren. Und wie das manchmal ist, wenn man "alten" Code nach langer Zeit betrachtet... Man fragt sich, was hast du da eigentlich programmiert. Meine letzte Systemanalyse liegt zwar schon ein bisschen zurück (so ca 15 Jahre), ich redesigne das System jetzt aber nach dem MVC Pattern. Vorher werde ich aber noch 14 Tage Urlaub in Potsdamm machen.
Link to comment
Share on other sites

Finde ich ganz gut:

http://bks4.books.google.de/books?id=MLKtPwAACAAJ&printsec=frontcover&img=1&zoom=1

 

Ich hab vor ein paar Jahren ein FDAX-Handelssystem geschrieben, welches auf KI und Markttechnik aufbaut. Nachteil des damaligen Systems war, dass es alle 3-4 Wochen nachtrainiert werden musste, aber der Aufbau ist immer noch ähnlich. Wer fragen dazu hat, einfach fragen.

Als Systemsoftware habe ich Investox hergenommen, da es 2003 wirklich nichts besseres und ausgereifteres gab.

 

Als Basis hatte ich den Dax in % genommen und die letzten 2 FDAX Kontrakte aus 3 und 6 2004. Damals hatte ich schon den EUR/USD als Referenz mit reingenommen, da es hier für die ROC (RATE OF CHANGE) gute Divergenzen und Korrelationen gab.

19 andere Indexe + 15 Kursmuster (musste ich Pixel für Pixel per Hand zeichnen und als Schablone zum Chart Überlagerungsfähig machen) , die häufig in alles Werten gut erkennbar waren.

 

Auf Seite 7 wurde die Basis des Trainings für die KI-Prognose berechnet und fürs Training ein "Rauschen" der Kurse von 5% der Einzelwerte genommen. Das "Rauschen" verhindert das "auswendig lernen" der KI, wurde für jeden Trainings-Lauf neu berechnet

 

Edit 2: Anhang 2 aus Juli 2003 Traders Magazin "Kursmuster kompakt mit Investox"

 

Edit 3: Anhang 3: von meinem Mentor Dr. Ulrich Paasche vom NRCM (gibt es nicht mehr, wegen Rente): Basis der Handelssystementwicklung + Nichtlineare Filter + Spektralanalysen

NN_Handelssystem_FDAX.pdf

Kursmuster_kompakt.zip

handelssystementwicklung.pdf

spektralanalysen.pdf

  • Upvote 6
Link to comment
Share on other sites

Ich hab vor ein paar Jahren ein FDAX-Handelssystem geschrieben, welches auf KI und Markttechnik aufbaut. Nachteil des damaligen Systems war, dass es alle 3-4 Wochen nachtrainiert werden musste, aber der Aufbau ist immer noch ähnlich. Wer fragen dazu hat, einfach fragen.

 

Hallo cxalgo,

habe mir die PDF's mal runtergeladen und schaue sie im Urlaub mal an. Mit meinen Fragen warte ich besser bis nach meinem Urlaub.

Link to comment
Share on other sites

  • 3 weeks later...

So, Urlaub ist vorbei. Berlin, Wildpark, Spreewald... Ist schon eine Reise wert.

 

@cxalgo

Habe leider die PDF's im Urlaub nicht gelesen. Zu viel Rad gefahren. Hole ich jetzt nach.

 

Ich möchte mal mein Verfahren zum Finden von Entries kurz beschreiben (PDF).

 

Wann einsteigen?

  • Grundsätzlich sollte man dann einsteigen, wenn Bewegung im Markt entstehen könnte. Ob dann der Trend, die Bewegung oder der Ausbruch gehandelt wird, ist von der jeweiligen Situation und der gewählten Strategie abhängig.
  • Es sollte in Trendrichtung des übergeordneten Trends gehandelt werden.
  • Bewegungen durch markante Punkte (P2, P3, Tageslinien, …) erhöhen die Wahrscheinlichkeit eines erfolgreichen Trades.

 

Um Bewegung zu erkennen, führe ich eineTrendanalyse für den Timeframe, in dem gehandelt wird (TTF), den nächts höheren Timeframe (HTF) sowie den nächts tieferen Timeframe (LTF) durch. (LTF ist bisher nur für eine feinere Stoppsetzung im Trendhandel und ein ReEntry vorgesehen).

 

Ziel der Trendanalyse (EINES Timeframes) ist es,


  •  
  • die Phase, in der sich ein Trend befindet, als eine von 4 Kategorien zu beschreiben. Jede der 4 Kategorien kann in max. 8 Unterkategieren unterteilt werden. Diese geben die Wahrscheinlichkeit einer Bewegung durch die Punkt2 P2 bzw. P3 an.

 

Die Unterkategorien bekommen eine Wertigkeit von 0 … 6 zugeordnet. Wobei 6 die höchste Wahrscheinlichkeit eines erfolgreichen Entries darstellt.

Erstes Verfahren zur Bewertung von Entries

Im ersten Schritt kombiniere ich die HTF-Trendphasen mit den TTF-Trendphasen (genauer: die HTF-Unterkategorien mit den TTF-Unterkategorien).

 

Mögliche Verbesserungen durch:

Abstände zu bestimmten Tageslinien (Tagestief, Tageshoch, Eröffnungskurs, ...)

Pivot-Punkte

Fibonacci

...

 

Würde mich über Anregungen und Kritik freuen.

 

Eddy

Trendphase.pdf

  • Upvote 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...