From b2e4a8b46a35958fdff9e13ce4a48b13c688ddb0 Mon Sep 17 00:00:00 2001 From: IvanGizer Date: Fri, 22 May 2026 12:27:27 +0200 Subject: [PATCH] initial release: GizerBridge v1.0 --- README.de.md | 118 +++ README.md | 157 ++++ __pycache__/config.cpython-314.pyc | Bin 0 -> 3084 bytes __pycache__/cookie_reader.cpython-314.pyc | Bin 0 -> 4233 bytes __pycache__/debug_cookies.cpython-314.pyc | Bin 0 -> 5635 bytes __pycache__/dtc_client.cpython-314.pyc | Bin 0 -> 23686 bytes __pycache__/main.cpython-314.pyc | Bin 0 -> 698 bytes __pycache__/test_dtc_diag.cpython-314.pyc | Bin 0 -> 16241 bytes __pycache__/trade_parser.cpython-314.pyc | Bin 0 -> 17892 bytes __pycache__/tralgo_api.cpython-314.pyc | Bin 0 -> 2543 bytes __pycache__/tray_app.cpython-314.pyc | Bin 0 -> 62948 bytes config.py | 51 ++ cookie_reader.py | 84 +++ debug_cookies.py | 123 ++++ dtc_client.py | 520 +++++++++++++ icon.png | Bin 0 -> 227830 bytes install.sh | 61 ++ main.py | 17 + requirements.txt | 3 + test_dtc_diag.py | 284 ++++++++ trade_parser.py | 456 ++++++++++++ tralgo_api.py | 57 ++ tray_app.py | 842 ++++++++++++++++++++++ 23 files changed, 2773 insertions(+) create mode 100644 README.de.md create mode 100644 README.md create mode 100644 __pycache__/config.cpython-314.pyc create mode 100644 __pycache__/cookie_reader.cpython-314.pyc create mode 100644 __pycache__/debug_cookies.cpython-314.pyc create mode 100644 __pycache__/dtc_client.cpython-314.pyc create mode 100644 __pycache__/main.cpython-314.pyc create mode 100644 __pycache__/test_dtc_diag.cpython-314.pyc create mode 100644 __pycache__/trade_parser.cpython-314.pyc create mode 100644 __pycache__/tralgo_api.cpython-314.pyc create mode 100644 __pycache__/tray_app.cpython-314.pyc create mode 100644 config.py create mode 100644 cookie_reader.py create mode 100644 debug_cookies.py create mode 100644 dtc_client.py create mode 100644 icon.png create mode 100644 install.sh create mode 100644 main.py create mode 100644 requirements.txt create mode 100644 test_dtc_diag.py create mode 100644 trade_parser.py create mode 100644 tralgo_api.py create mode 100644 tray_app.py diff --git a/README.de.md b/README.de.md new file mode 100644 index 0000000..f513bcb --- /dev/null +++ b/README.de.md @@ -0,0 +1,118 @@ +# GizerBridge – Sierra Chart → Tralgo Analytics + +Überträgt abgeschlossene Trades automatisch von Sierra Chart (Wine/Bottles/Lutris) +an Tralgo Analytics. + +--- + +## Installation + +### Schritt 1 – Terminal öffnen + +Rechtsklick auf den Desktop → **"Terminal öffnen"** +(oder im App-Menü nach "Terminal" suchen) + +### Schritt 2 – In den App-Ordner wechseln + +``` +cd ~/Downloads/gizerbridge +``` + +### Schritt 3 – Installations-Script ausführen + +``` +bash install.sh +``` + +Das Script installiert alle benötigten Komponenten automatisch. + +### Schritt 4 – App starten + +Im App-Menü (z. B. Activities) nach **"GizerBridge"** suchen und starten. + +--- + +## Erster Start – Einrichtung + +Beim ersten Start öffnet sich automatisch das **Einstellungs-Fenster**: + +| Feld | Was hier einzutragen ist | +|------|--------------------------| +| **API Key** | Der `transfer_token` aus deinem Tralgo-Konto | +| **Tralgo E-Mail** | Deine Login-E-Mail (nur zur Anzeige) | +| **SC DTC Host** | Normalerweise `localhost` | +| **SC DTC Port** | Normalerweise `11099` | +| **Konten** | Kontonamen genau wie in Sierra Chart (z. B. `4PRO-RQTPUT`, `Sim1.simulated`) | +| **Instrumente** | Gewünschte Instrumente aktivieren, Tick-Werte prüfen | + +Nach dem Speichern startet die App sofort mit der Überwachung. + +--- + +## Tralgo-Login (einmalig pro 30 Tage) + +Damit die App Zugriff auf dein Konto hat, muss Firefox bei tralgo.app eingeloggt sein: + +1. **Firefox öffnen** und `tralgo.app` aufrufen +2. Mit **E-Mail und Passwort** einloggen +3. Den **2FA-Code** aus der E-Mail eingeben +4. **"Für 30 Tage merken" aktivieren** ← Das ist wichtig! + +Die App liest den Login-Cookie aus Firefox – dein Passwort wird nirgends gespeichert oder übertragen. + +--- + +## System-Tray Icon + +Nach dem Start erscheint ein farbiger Status-Dot auf dem Tray-Icon: + +- **Grün** – App läuft, wartet auf neue Trades +- **Gelb** – Initialisierung +- **Rot** – Fehler (Cookie abgelaufen, Verbindungsproblem, o.ä.) + +Rechtsklick auf das Icon → Öffnen · Manueller Import · Einstellungen · Log · Beenden + +### Kein Tray-Icon sichtbar? (GNOME) + +GNOME zeigt Tray-Icons nur mit der **AppIndicator Extension**: + +1. Im Browser `extensions.gnome.org` öffnen +2. Nach **"AppIndicator and KStatusNotifierItem Support"** suchen +3. Extension installieren und aktivieren +4. GizerBridge neu starten + +--- + +## Was passiert im Hintergrund? + +- Die App verbindet sich via DTC-Protokoll direkt mit Sierra Chart (localhost:11099) +- Beim **ersten Start** werden bereits vorhandene Trades als "bekannt" markiert + und **nicht** übertragen (verhindert Duplikate) +- Nur **neue** Trades nach dem Start werden an Tralgo gesendet +- Bereits gesendete Trade-IDs werden in `~/.gizerbridge_sent.json` gespeichert +- Die Konfiguration liegt in `~/.gizerbridge_config.json` (nur für dich lesbar) + +--- + +## Sicherheit + +- **Kein Passwort** wird gespeichert oder übertragen +- Die Firefox-Cookie-Datenbank wird nur als temporäre Kopie gelesen (nie verändert) +- Die Config-Datei mit dem API Key hat Zugriffsrechte `600` (nur dein Benutzer) + +--- + +## Fehlerbehebung + +| Problem | Lösung | +|---------|--------| +| "Cookie fehlt" Popup | In Firefox bei tralgo.app neu einloggen, "Für 30 Tage merken" aktivieren | +| Rotes Icon, Übertragungsfehler | Internetverbindung prüfen; Status-Fenster für Details öffnen | +| Keine Trades erkannt | Kontonamen in den Einstellungen mit SC-Kontonamen abgleichen | +| DTC-Verbindungsfehler | Sierra Chart öffnen, DTC-Server auf Port 11099 aktivieren | + +Log der letzten 50 Aktionen: Rechtsklick auf Tray-Icon → **"Log"** + +--- + +*Ein Projekt von [GizerLabs](https://gizerlabs.com)* diff --git a/README.md b/README.md new file mode 100644 index 0000000..960308a --- /dev/null +++ b/README.md @@ -0,0 +1,157 @@ +# GizerBridge – Sierra Chart → Tralgo Analytics + +**Automatically transfers completed trades from Sierra Chart to Tralgo Analytics — on Linux.** + +Sierra Chart runs on Linux via Wine/Bottles/Lutris. Tralgo Analytics has no official importer for this setup. GizerBridge fills that gap. + +> Built and used daily in live ES/NQ futures trading. + +--- + +## How it works + +GizerBridge connects directly to Sierra Chart via the **DTC Protocol** (TCP on `localhost:11099`). +No log file polling. No manual export. Trades are detected and transferred in real time as they close. + +``` +Sierra Chart (DTC Server) + │ + │ TCP · localhost:11099 + ▼ + GizerBridge + │ + │ HTTPS · Tralgo Analytics API + ▼ + Tralgo Analytics +``` + +- Already-sent trade IDs are stored locally → no duplicate uploads +- Manual import available for historical trades +- Runs as a system tray app (AppImage, no installation required) + +--- + +## Requirements + +- Linux (any distribution) +- Sierra Chart running via Wine / Bottles / Lutris +- DTC Protocol Server enabled in Sierra Chart +- Active Tralgo Analytics account +- Firefox (for session authentication) + +### Enable DTC in Sierra Chart + +`Global Settings → Data/Trade Service Settings → DTC Protocol Server` +→ Enable, Port: `11099` + +--- + +## Installation + +**Option A – AppImage (recommended, no install needed)** + +1. Download the latest `GizerBridge.AppImage` from [Releases](../../releases) +2. Make it executable: + ```bash + chmod +x GizerBridge.AppImage + ``` +3. Run it: + ```bash + ./GizerBridge.AppImage + ``` + +**Option B – From source** + +```bash +git clone https://github.com/gizerlabs/gizerbridge.git +cd gizerbridge +bash install.sh +``` + +--- + +## First Start – Setup + +On first launch, the settings window opens automatically: + +| Field | What to enter | +|---|---| +| **API Key** | Your `transfer_token` from Tralgo Analytics | +| **Tralgo E-Mail** | Your login e-mail (display only) | +| **SC DTC Host** | `localhost` (default) | +| **SC DTC Port** | `11099` (default) | +| **Accounts** | Account names exactly as shown in Sierra Chart | +| **Instruments** | Enable instruments, verify tick sizes and values | + +Save → the app connects immediately and starts monitoring. + +--- + +## Tralgo Login (once every 30 days) + +The app reads the session cookie from Firefox — your password is never stored or transmitted. + +1. Open Firefox and go to `tralgo.app` +2. Log in with your e-mail and password +3. Enter the 2FA code from your e-mail +4. **Enable "Remember for 30 days"** ← required + +--- + +## System Tray + +After start, a colored status dot appears on the tray icon: + +| Color | Status | +|---|---| +| 🟢 Green | Running, monitoring for new trades | +| 🟡 Yellow | Initializing | +| 🔴 Red | Error (session expired, connection issue) | + +Right-click the tray icon → Open · Manual Import · Settings · Log · Quit + +**No tray icon on GNOME?** +Install the [AppIndicator Extension](https://extensions.gnome.org/extension/615/appindicator-support/) and restart the app. + +--- + +## Security + +- No password is stored or transmitted +- Firefox cookie database is read as a temporary copy — never modified +- Config file (`~/.gizerbridge_config.json`) is stored with permissions `600` +- API key is stored locally, never logged or shared + +--- + +## Troubleshooting + +| Problem | Solution | +|---|---| +| "Cookie missing" popup | Log in to tralgo.app in Firefox, enable "Remember for 30 days" | +| Red icon / transfer error | Check internet connection; open Status window for details | +| No trades detected | Verify account names in settings match Sierra Chart exactly | +| DTC connection failed | Confirm DTC Protocol Server is enabled in Sierra Chart on port 11099 | + +Last 50 events: Right-click tray icon → **Log** + +--- + +## Built with + +- Python 3.11 +- [DTC Protocol](https://www.sierrachart.com/index.php?page=doc/DTCProtocol.html) (Sierra Chart) +- [Tralgo Analytics API](https://tralgo.app) +- `requests`, `Pillow`, `pystray` + +--- + +## Status + +Active development. Used daily in live trading on ES/NQ futures. +Feedback and issues welcome → open a [GitHub Issue](../../issues). + +--- + +*Not affiliated with Sierra Chart or Tralgo Analytics.* +*A [GizerLabs](https://gizerlabs.com) project.* diff --git a/__pycache__/config.cpython-314.pyc b/__pycache__/config.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5db1800b2318b685ca5e65509394f7e12f2ff84 GIT binary patch literal 3084 zcmcIlOKcNI7@mDOyIFe^@`NPhfzwcv5I0T0rR5b0fwbV7Nhp=-VlDQ@+2YvN?iwiS zBkH9IASG&%nyN_65u{4Zp@&|2pog9VX)qdcKx!|&rGSLQssHT5HWZasYRBGx|HnN3 zo%#N6dX+#mf>yhw_Wd6Pgnp%l*8;BcfMpPxMyC*FMv>*b8H=%P)?(jdVm@z3`5lwW zx~E}w2xg+q68^;~t~APrc`RTbuEHXgaCMl&vTOUn4uGw=c8zP-y7mUg4)azOuEX`X z0iH(Ogq!h3ys01ImiMZ{K1;-{&B&5)8^~(B8KjKcLHaQhM4^t~Y3k7nEgy&b)A|L? zIBn>uw3bNbvJ-l`|9vx;y|D4An5ktgJ3_c)(c?t2^yHa@34_ygE`*l%k!ss_R?QSV z=e>QTO3SLJGg@k#u+igg--i7oggrFoTA}?gWyyL7L)5&UIHP?)5D~N~RnHJHWhE1n zInyFiCYMw*wrV@`Im6Q5?L~-)YBHHCWG$1(de*dz!W3j|CY|gYSp_c+o(D5F4&tR) zj4i1pB?c&Zy2VTQ@J@28+a+C#P#cPuuoAb?NP}L_Ac}i9MCExfU@_vZ{u+~D3T%N( zpdokGJc=u>iej+B)2$1=U7A17V3z)d=odokK=C?9LnzkhY2~-KMlBlYLFgRhUn>O`3ajd37=Q3N#fJa>n1(j*WZecj2=$JhR2T( zKBXruq8vOlGJN9bc)|%0K9|?Bgr_(rd?u%+NWIr%G&(kpPaHcG9UmitZfR2{sWvq$ zrA?@Xj1}SuGeNlIM4IqfbxH%^IRVq;A)iiYWNUabH>HL3vuZXxoSjg!>2O62h20v; ze?VlqvRhLI-G@!^n4f@{Mr(3lE;1XL+dI4WYHv~Qxh40k)zn{!uG9pV#o(G0xO`^u za8c@8mHL*LHKlG&zo;)TmohWlBMwz>f9ON4{l%8Sn=OO4TXxJUGyEMOL(`HvP) zuZW?dICN7SS{lDC9{htttvm0@%JdtLWEcr^J~sW3!;QM;0|UZO1M=&Plyu1q-1PL^ zBI$IBq!f$05I~567PAo-XwQHx6Q|o{w`Wmm7dpwDVljvLh}*9N0lmSm0=!~rhEgec z9)!A3Ih#2B9J|Fz#o~Dos)#{Ct_M-9sg&)cnY59VCo2jT!4%mY$ zvjyg!dmzxmyKsyUq+WR{g0t;|)NSv5A82rOz=Z=9Ez-?~9k>2kf|6Z=_F?RTA+!ih z3RI^6^@aMyb44k83e#BRFnFF_dox1_LJXkEiT;f7BhZk9p; zCl^W)Mn4r4HKbZQpI5V~f~gq}o7h=*(0D5q^ro@dz=nrG)4GlxfJ6>!h`WJn3K?y$ zu?Kwg^vs_@taA**+(q(TB!RrA)Xt@6(?zB8rqa3GwP!`yJ1yVwD|3fu4;TIIH~sC) z9lKWiuTD$rJ|tAnyt&Y@@Zq)brO_X(W%=M8UaasGmgPfb&k5+`c%-NLtV=>OyNv4B zYmuPL*WKY|DwO$FDjKN(bHj3d&w8M$j-6KSH;7El{U(ly-1qZL*F%M6UNCmUr~C=0 CCO2&W literal 0 HcmV?d00001 diff --git a/__pycache__/cookie_reader.cpython-314.pyc b/__pycache__/cookie_reader.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d1ba84d02cb07927497da9eabc20c5612a9565d GIT binary patch literal 4233 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 ZB#_23m&p;8cQl5V{IDf7Ra`eH`X6TM-RuAW literal 0 HcmV?d00001 diff --git a/__pycache__/dtc_client.cpython-314.pyc b/__pycache__/dtc_client.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..39828f68b38382e3f98f5fb8e7112695c1db7ce5 GIT binary patch literal 23686 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 literal 0 HcmV?d00001 diff --git a/__pycache__/main.cpython-314.pyc b/__pycache__/main.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..17487df2f573a3e709960da3a8604c124a5553c4 GIT binary patch literal 698 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 literal 0 HcmV?d00001 diff --git a/__pycache__/tray_app.cpython-314.pyc b/__pycache__/tray_app.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48a2f95914dbb8bf6cd91fe8638ccecd8b92dae9 GIT binary patch literal 62948 zcmd443s@Z2oiEr=sD_4aprH}Z<{=Q0KnRe~TS5W>dLUF_kYy}_ph0c%a&==##7T7L zi9DVWIL-(;&I)Cm2+erL_)cal&-J~QR$EtUhZ?iZ6wIGqT)S}uGQI+?aOXi;aky?W7FP-#}0J%wzhS2@{b*CYU}I}lZVIp273F) zMh87ZqJ_P9-J?D++1vMwTM1_`6pm7?gPu`JF?Q19_Es20OJnDrJ;NSKWE=Dh4|{uk zW4%71Z@}#p?IUBO9^aVIE4cfHBQ;AoKH(W2==Gw0p0QCe3E2)v@sXLibp(|bE$pXJ z=sP7Qvd7MooqH!a59(PpK04Gdb-d)8A}{y8iibYT>?d_TJ+H$|F7z3*bYr?FO+~sV z&F$9cMACDSt}YTNkE$<`*E@ASjyJ%!@J9Gaya|3XZ-#H>6X2)tiSSc-4!#X@)83`? zrSVB6x{74cx`%aTH~MJoRKHv|DutenIvscK1-AZrA|>l|?U8w;1mK}a*QJ;1)TJ9$ zVsz=+qw|a;X_wb_R2IB4Qww#=q_RXsk38~vUN6thWz!`uO(*wbp|0CCig_%#?&?vc zX6sOkQBMBC8}O!-kNRcGU({bU&t>ZGRO8A|ym6Vh*>Vi^S8XS6z}T54^6{<7GwSuZ zhleLdhuovCpP&7@tJyQ@7Iq7sfg$(aHqqXFu(z@4KvQQ^Z+B~3rlxI{l`#ip3%wxgr^-T61$0Ii+^c}~n_lb$}vf_HjMtf;#iAlXwZ0|FD zf>%tIo(F}#5x1Do%T|lXjSFMGvHr1PF%j#^Cybq`Fo`Cwdw5Vx81EBk@g+nSabhG> zFHMv(II&{giLnv)I?pqGqw5+*2m3~c)(ugkj)!oU+ys-6!t+USrGs>n+&vT2M^*ncuJD++k)$iOG;_4#-VJ;`Y z<;-rFTN&b3DPb!D+=>vFyXee+-ny7w_OWs zI>WdDag;Tt#sgG0bm`m8YKZ*A8+nsFe`*bw+lJkGldeNIijpO_Y>wt-a!gnzM`gV) zn`7cKIdZ&3vyMu8dK8%0o+{T{{VhU!+U@GQ{3OGrabuUU9eo_{&}$p`q^P_d@iBC| zb$Y4C3UyKOvX;gJ95nLD#~i$sPpOaeM0>{4cu~1%taLuLJ~BgM%F9`rPm!*Npa65r z^s0@w%e^Z11fM47j~QT-(?`|GC5NfM)H3vMff^z|9pm`)`p7)`!rHoA-)8U*ej}gx zIr_Gq&#I5CotWO$EKz$#@lK5ICO-QiYoRfpu#z|PE972_smEuT*`_Yj1A1P&4mp}V zK|nLkVf0PMOvkFD=16H=6uk1ea*tqMDYG7ZShh6o1M2&LRk6%m&#ThObKS1nTdC8H zo0loQVrh+{+O~S>*DkZ1bD?hkI-SmIGsZ=k=jfTWOH(|cMh_U5W%5LS#XG*BOINGs3!S=QPVL#KF{qAD!LZB(-i0!1 zmVV=l+c?+7eTMQ({FY_blxF{TalGl6kze`QXWXNVHcBhQe(~GD zD3)to`LX1G)ACmRmdbm;YymXPlV>wl^d|XP{eASg#8=3;70#pDxcKUI$}Tl->Delm zCIgi5B-CY_9IF0eN85)TEg4^Ts-f~z_nTUHe^+wPE;)wQNgVq_vRWG%4$Hr2K~no3 zIlcPZl`O9}?1cxUy|ByDu0e;A+l0CUb36sSOL(jM?=}Ow9RkLfr`w;RBdlGkJ#VSC z*zbC{{Wb~?q;#b``q%-(Nq8hUkixG~Vci4Dd%(^awez91@ebpZax5`sA1{&Pp#S#D z&+6}IsLj@8c0p|@k;1S2H*9-COxqRQ6K!u%+bln|YhZVv+E%JFYMFEj&MN1mi^lP^ zMsV9B_F2`xTc53z+l00Qj>Nl1pD(~ewNFyoSW^nW?iigQ0WabmUoD>-K0_^*!`(Dt zKg$0!3PEaDs#XoK`>t1^delnQZfPoCbIgj8+Tz=Z6Vm5tDfdYIoyym;T4=Plz5R== zSu{4o*MT;U;;$HIs50N8AseSfkS+*!)c2@PzxSL9|jb5HdYP^%ORv zVw5#6H|q6q}kGgplQ zVG*KXa7Z)_j*a@R8U)(Pg(`THiTe@a9^FzQ#S*sA7lPeLwn2_1&|#^+c_%81;E8^z7p#w~crECWO%)F*HV^cMxp5M}Tvi{;aM; z-yThaL?}6Vw=O{s5rf9s+cz-K8z}-z8hx)oP{d2wm7Ns`%8J~!;l7dM1ARNhm9Z39 zMhLFj#s<#20}oO(TK-;Io1dK3E!2f;8w0hCq1wFy9YrUI7TV$&otzka_bt$~(Rr*l z6Z^+TM*2nvL`&1CZ_q7_x<@Cit)M^)6C)rcySH4`vxw+5iZ69jLdThr<72}UR)lnV z`cGCi3-A8zyO-RP$?UD$jd3kSLh5)indsS4Zr({tx7*{xpnA7V06mFGyk*ixX&hs0q(wZDWP zfw~n_gM|~XK{TQM0~Ll3lkoB(`)c@*h>B87!-qt4`;fR7$YFrOhv>ONAR?WZ+B@8L z95ZF07hNQr5sgEj2_%3?uO@ zxZZZYsiO%D!xT1$8M{IlJ0(zWiAGFo(Tp)3@uDjI6JFogNbe}|FVf^UA7)H1cp+{v zJtl~O4bjdrjU=SJMKfcJ2(-Q`Y;2W?#(n?+BjBKDM9HFs+BG(TiG}j}`vD5Ew&;U7 z5_n=j5IOg0bP9S@OXZGww)!Q8>T)W`6ae zb;WG$rTUBYb6e)W9L(MNkx^gJs9)T0qi0b>ouH zbI)-BuK2~{7Y1eq{9N&D|4pv=4wppX(;2hd7Yx^GL)^|V*BIa$e^mVA@*kG_xyBI3 z-^nk$)bmo$_lygB-e`Wk`P#l4=3rf0u=-FaznvARWHMJ5F4+($*>LT!c1Chx{@k`j zN6wt{zEN*k{r>8ztEJ!DO<7+rn=cKmZv90hp5sFHO!k~*p=2>@B}FZNzkJPQ-}lnr zaJ=rgw)=YboG(;<@Qx$vLdy#+vz?cYTs#tVlucO{xin%%y}bKUx==q; zKf7g4xSg?jYR{t89=7HOtodPUX~0_g3V)^Ra@TyvZR`4vj5@~}^gY;Pt6o?&TX$*G z#ZAHV(y7En&UW5<&iZokrP7O~bNqbYlr_Xv-^t0lwCbf*bM*_wp_~nDkiqe?owJ3x zya1Q?O7WHQ%NT$>RGwI2%7@vbp^CjBu9-UB@|R@24(! zKehMm=@(L7NSPhDbmHQPc|K&Xo-!|TDd&^UCB1C8WV&dYtC??@N(ymRzeu&SIXUr1 zW0C22j+5r%T-tor6h~bm&yU%f`KLqN`Y^XKz-@eM_uI{HVl=>7Y*b@xnisB>gt#4H zZcl*Q^P}`1JAdf(b9+MEVKvT5#v@)8BO@xaslW%A+Cc6N^^I z`2*(;%sOsc3qCUIGK=pf=yFRgRb8yQowNGfKICM}xNR$0v^&D~;()z)uI{$I3K4VH z+~;)ZST8SR&#wG>;Z(vRmr88Zm(wpfE;{BKFb2sO1G(8*vnMgF!rZz5x9)rV8{MyW z`?+-?Zab}#mX})Qx)#=l@-Qa}K4~qDg)+7{HmmuKA@?v>8{lf+N`Kq=CWZpAq~T6c z$(8JHXU~^i(}#+-P<{n0KU!pAZe@U5IoCIzg^`a6EeUWXucp7|yy{$d#?R3ZtEG&F zxXLhB6X0szGQ6GmW}=^~!SLQGF1@nq+pFd`UP}uVZ>3TSS$>59t}x7%2Ds8!i(f0h zT7FIM=SoA|7RrxSPT8z?zG$H{ykTEpgVt&oaI*z5D9_wDXnKyDK2Fnig`8i>?0!t9 zy0^Eyxh2Hy4RiYg+a?c2vK&abfesCEE-F`z2@ZlM1gPXG^k6o0mtG|nkDH?M)|{YS zhIT?x;~Z~5Z)k{NP;bZtI(5-t8L0iD!773Pgd$e8OnC$-wCZ8v6_&1CuH2hZqF%8j&9qx{6E^65|(=Kuya@SMzUd%z6P5Fp_#GQh#;t390;R}5ZJ(s~fW zlK5l=7=HSEd-&4myc*|F+QwrR-YU<{M{gO(lPPk)#I#MjwE8cyG>BoDc~e&cpU{=K zjzs+8T1T&4`ZD;m@+(r?1fpV#iSALNLJcsOD_WE@C>`tJ{5!=Y7RC;tkwCy$NYVm; zN(3whvQ-Gq;C3_8R@em>exiUk9hRejH-TTl15ZraJvKJ%?iz_L{1; zj^4erbz@6lCtPV$_#K3ZIkB4poulRR{qN$t_bENW+{I+ug`G1yL&?QIv8F26(+DeCb0?=VoU{IB&iaMYYldLX)+yVa6}gx4U&^2FeC^29BMYAEjvwd$ zFh9`H6|C$ItvE83OyBcf%6oOsg6R$Jb?#d3^{<7Sj|Q5L`kxr|dq#rIqrvL2;M(!f zil?Vi;v?s&k%#=A;b8MfuzEDOb}Y1Fd@7YTpVa44r@fk6kFqt*2@AkCH-@>b0dDKx zr_*WN&uzu2N{ImsliM2Rb_KXye}DYFp?8M-osapsT_LXPA)&757cXm!q3E?To^ ztL`S6ijt;Gbh4W@1-X1_^Fx;_j=%!8HSXR&0HB;DX8x0(gZN3%6gX~c@Ms1mE9=Tc}Sy=-aU@g22n?o0tg7^eMN;JLzMacnyhgFaDpAM6dyFC15*6ndUDAwo!D?KSdO8x&&`+8DX0% zU~`3Sr2$)M&{h_67K8?boSh`K8e_O4Q5NmowTfJU)Wh0a8`z$>jTd9L1%3+t!`>}`! zSrvBH1e`TNXI(ID!_@A(oX(OGk>;+OtC;Ux*m~V?{Q$_6{-VbK`l3h#t^ntnO9TCE z?`6=a)UzN)IpW&A;*9)1jC#*8=&R7!i+7Yiz*!QsH;v^W3? zX`hdCT7U$LTLGF{M`L+$lPJdkSZa9$=C$%B4oaN+^qiqc62U{6LPuO$dey?_AGW># z(R#4A42*@+R>28$ie$@9_$zukO`ftygfsN|J$T@-5bKMfHxmCVvPc+LV#U%$65&r= zK_V|5k%5rdGR}YP+}Fak;()CO3HCa?)tfhzM^YA27eD|3z#6gdj0Fp>Y-6{lwfEj_LldQvAHw z?vLdV{Uu^}2_t4Kk8o;XAhj@@x;BuyHkev9Wqdz5HLiQ-I_A^9({FB zCdh9LA=Q}M?J}OPW~7KOpuU*xKo0Hl$0+3R!K=xHwrP|Yy_$d=q68T^j4P>UjHL`F7kelyw}O2X(pT`Zy26v zB1wVxt(m40_HVW;vkI{qP~mKo7WK~ve?u>S3s0gXL^$OVa(fQJVtVYxLAs4p9q&&i zj5a+hoL&-0FA1lY2hz)f=@sGhb%FGC!SwZ0iSOI8Vlco~Ki?JRj|TXox2#Vvq}2o* z(U~(_7tXB=+U%~Op)dsCcuGIM6v&pz?39a1jA+;zds>S==%-1DuS;oPb~ZdEY1I+(eB+Hf~X zmzFczH)r|QaJZlts9v<^&K_U1=gl6clY8pa{-8DgBbzRJ-Q8^9$LCYdr7Yrr zU%zP00PlC_MK#B8?#4jw#$fKIMQhgbtqAAt^XKln_GOAhF<-8mGcAM31alim4q)ru zltgFJeO;m@`L3O+04+?3LwTFa`Q-k3O$2+NzoR?c@kF5GiCfkl8OQ$D`*xk90N6PC z$(|Fom)^9O&K>cuKX9Y-#$G?);a}J3f3h$9q&x7W`<8w1r}iwM<|)qKcxlqS<6PgI zqWk{p23?E6@Loz)^G@S?JM{2x7;0KJn{RB=!>>q{5JW;tq!~>|Ug@m%2lPY-FE&Y~ z$;{?#5rw(PWAm8ids{_1>8g?>2Xs}FdV3+gH8D)j*52NyC;EmXUu?a-gC4=_8^#(P z9qa8CzE9Z@BoR#zoAXKpxz!X%Kvg(F-tUk{hc$taQGrk*flcqs-d?Y-4@9-zJ|B*h zpxe2mBg)`}(0f+}jI*xRj_sB*OyG?UGgs?b`x*)Ee(Tc%S^C?yT-7 zwhX_cJnUF|)3G+_s0!NFoo)Hplw{te|2TWU-uxx~$43nb=8TW+Y38Jl%WUSFkBd#_ z)gN1p=E`3s6`FJJ>fkZ#ie=u9d=*Efle_l}yciw%+menvulJdFgU`&{eF=OTwBXaB z15euT7N-54#I)a&nfAMtX}_m1?e|pP!gS!1;M@6R_-SMZ!I#dbz|Y`QeGcfxXYw`> zWi!O|gMFhIn${7LXOcAJCkUbX`Rq*Oce+23su^(v;uvDMkAaUU{+&UNqW(gn``<}p zUfo)O1X7*jTzhg{0A6_mZ;&_Y<#pz}cc~il-R-KreD{||mF=wx2gOmP1k^wSNs`e* zY0HDAy9-sI!N6pN)TJ~a@yhOE;->oQ(;I54JKHK!q$3<9g!b3>29hoFX@?iU; zm>iYbOVfmO+u@`|MN3%BT{^)O&Giou!Rv+h0L}HykPM(xAOoVLb3R)U;!2eerpsP8 z=Lm6Si+RP+UC(nppR|})0!4MnD`&!71rX#(qC^nB_>+{SXC4bG!lw2eoEpwXv(2@q zw&ui=Cmx+~v`j!mEf|INfN~=ayr-=(yh{0lChkPb3zOC;bATRDo>j?Ac~DvLn1<#m zeUHLJ#H3X)OC`EaOK_Y|P!&?;)~{8Q=s@IE-r60?qw;`O7-)i#8^996nHvUgqE99V z^+d*%d3e!Ft0!AZ2YQLdSp)nvdwZ4~L;XemS-gc$sy9nvpP}EjfkPOX6~Ka(thF#) zHcHknYLueN((Fr|VxoIWIsZnbQwZ8hwTbU(*E(H6Wi3@cU;i8QlI`EBmwH@s+uMuf zC-qk~LDNn!FwVi$KxFHV>FEqP+C%g-0o6G7Tk7dmamC=3&BrvXZvxM8PBn6XRi>;Q z#Eo9iku;xSJ}81e54C0zc^E>FXCLaLP)tytsOZMY<|#UeZxA&haabB|$|zN0xiQ2&u4@j=^ybv&hKj z@_8~8grv-aXQZ(5o@DtC=hiq1W% zty`An187>UrQFIFqRl&&#z$Q>LU|X|{pnN$huQC95A> z(pPS3LH}F$GI^~-HJFd625a|O$I`s`a()#Qs1@vCnfhy`Tn$y+wS46RTcDM;ieL8` zOReVDf96ta_}Ygk^)ZcJszbkYEe%%>Xv_55r^6IY$j5I`MYN2%&Xjo=9T&@oFsKe1Owhq{V9%V;P!nq(8 zM^Nwr)J+{qrIL@{E61$M)M&Y0*@TjhDFrGIYGvBLqy#Dt{APLI1*Bgu2P3EB^0WH; zfHr9CnlY!mEg<{s7W$E&&;oBVf%G-Uwg|KanJ~0yY9I>4etM^>NP>D$)#@7<8y$v? zJ7G6M#RMjx=auvjAOq#mJMz>5R)l}DPtgK#-KPFf`Y1-}aZut$j^6|=* zBb6(m@zyaxYJvjbr%u=d5BzG{lZ7UD6SRN){P*5;b;5Ec@*WxYx&}Og`=rm+H{o?b zfA$$qAJbO-`Pmm;&^HA6elKKDhAWSfTH|QdWMauC<^;kMP-i7;VJ{UzyLRVQlcX4# z;66PL=@zEHDrq!wP<#bRv2Pf1hY4c>Go+aWU0cs2I;(FORiz3_sksyA8ECV4p~N;e z>V{EIsB#WZjEo|H1XRS-Gv0n-Yi7I1Jq&8D2#$EFx^PQnas7j6@LW`h@-yFgYnb^g;^~ z#B`k zI)t;7wHX#&-EN7PXFel+KFxlNlO&4O+tSE)paR{kjh!uch|Fs;VoB3kO!4&%Ma*PQ z2yWq7%F{yh!+vn%PO=J<&USC#@Gx2?$u{)TlAuq34-;Nie|v=97>NP0BiGp4(XjhK zQzO~gWVA?XbVV|wK#Hb*pD@h85hR1r09n8E8Sin?c!E6CPnbb%*ji@`0=lDPJ}*&V zCBa(86_bdP#Z>JTT0}{v%>94kv-ek^7@yVs0-BnqpF2Hky2M@Ng0`Y56A=$B=PWM@ z7ko3mx#IcyDNBf}Rh05(q2;$S%&mq(#`g?wB)$$EsMR5E6VxfEH@!SCS9fLGo-516I>M#(fztYGLWtWP=9&Xs^N;u+cmJ^4|HN@W z*Bs*dADFXL|5s1H_UxZO`xjpguiG0~xA*#Fa2+4Y>xeW&(q%;puJQ4ze~&{2 z3)+8uq}jLmrOk7l3*7b6_tw6%Hk8Y{f{c&Gsrc1ju4gKKYkmPlFa6N6x7UK5&A~o&&$a5pJ`{pM@sav32qr5*G zO5GMMk$qz3#4E?I3|t;yGTBTEn5kWQW;{{hzsStK(DOnMxQG9I!#mV`) z*S1{Uvfz8;+1H=Fo!fYB|J0u8zQw#ke@SB~uW_d1M#sfb=x|D){(dkoK^&chb@|yH_t;7jMO~M=#M$B4x z+|Rk7j!f%H4bEJ6{KjVX;j!2cPVM-Pg(q%E8Fk0TM@CZqA4vJrc=@x}K*;^r)ng%U zTO@Y$Fwzj#EUTogXvL<_m(!rt(83^f#S(vBC29IL2kNn2TEg7H0CzCd@mRRyXrSY$ zzYi<$V2C?G3ywvfZ6;0M=Dm@!Mk)BETprAP#0M|i&mRI zs~Q@vVMj&4Q30jw+}Cq4z4I_nkVQmhG)7%^)8$Rb;x@N-DO-dCM8xLB-Fp>Ku}{~R z(3jZ9^;!Co`jTN|LtB!XHsv_SEa}CC(d(xP{S@g)e-ULw$RN?lwUlLK+?Smg)lW9{%h{UWe8l-y7bVdl^M5oJA%aNb7(mhfe z2>pt4TGI0|eVG@R0I%)DDUWkEa4IIOHkDd+bfo~Np7=U_n7f9(}Z!IZo;s) zC?Ysm2jZVbzY}{*CXAFvvW(cCL+tLl$JdSmr>?qfsTo(ND~D4DS``X z{h~_d&1<47fF+_ckl;Fr>`N3Td@Cb0WVMkhvaY6VF{PEEhS45Vd1RIzP_ z(8ltm9I=o%G&Pt9AxoD!16jwd$ znA5m;SHt@abRn{Hrdk)X^QKzw8Z0R#cUHhC%e*7FqG~!}(Vlf7btW}rchQq|#`01YMdlY%dDf zi$eC2UvWD73Rr%*z|C-!?d;RHiuZ-=`+ovy%mf{3(el&Gf@%GtGyB5C%*5=`uyfT- z=c+|V-i1RmhvphWj|KCO54${=k{sRBrr1 zxf#zeADG~S84DO3OBm>bU9!=(ifq9_WBffDV=KP&_MgD@K``begel0}50aoDlu#Uk zkrI)um|m^qxyVZ}&=aG={T`KJ@tq)w zG+7Z#=wy!~5upWNg;iQ>$q~{ik(r=uGdLt$Q}c@Ylft`{Wea7=w*5wWY9enhc|h=V zLNlJcwBiQY#N5T41cj3DNz7S(MsBC1{{`Ovi#aHtZCBic+*;&lUK7Zz3Fg+_|7mit`0j%=`iT54m&pnoEwAAO)%oMBth6&7l1~h zb0aKjLCX8tnP(*(^!cQP-9cylly$MZW??W?zHR2&>sznG3e#dmH=)CNhOIys%yR_lrhPf5QHb&^UYc+_Pa@VZc^6mo&dWXxjuzU0i5W&{i{L`jyFLY1ZGDWlP8JkDvA0d*-LTG0rPRaZlzf|!)#fGwL!aLXG| zLp{*0{|DO-Oo+rPBB4bZXK3O>09i9D$PZed2YW;$qzBZ^#BT!NRK8I_im4SPm6m`kACl@R%b+qEa_7RwXHU(D*<;%D7V2dfd?SI@lFc~?tZb$ zT&tkX5O^>i)31%9fs7mX|IY{lN@B#!@mWrq%Nixv73CuZO-|}ELb=CTW2n-PCwC<& z;|BB{-QV$gVNSc`z}Ihn>|cv?vv-rS|ywU6CWK#e|>Ch#dZKftYuY>8)>Z zZE5?EczA8>1lT5W3^nWZ3 zlQQHeiHvkeHdcZCfMeNDSQi-tfk<}mxZvr>#bU&siacAur0Qins>yU&*p@3!?^mF=!+!Q>YWtRnQS31YoKk)1TIz#nqAf zaRQ*T9_gfRFnaW`zDjwwNye{?qM@o=0{~-~AXK zABB3$X}*p^7^?9hYU|IezdU)ddA4Ep>F*uB(Dy>$pH2RnX)ygxN`d~xqyqh9x(mjW z2i&W?6|N!oAUK&Yh?}8UBv3nPg1B!?P#zdE!zvV9W4)fTFML3+`lt&p z!ee+v+y?Kt>|uL<_4~;VBFi5-cPMNv4p@u*tG8eC+%W#h#4GZqSv0m4QsvBlAXD7au zH#ZQ-UUU7KspiG{ZOAfQ-xjKGo1XCJSKe|~&3kVSr=B%td`Wv7VYUT z?!K^hX72}NcyZ<+aNk7-(Zs9No)$nkMPdd`wMDA*1AP&+VtT+-uGP7 zN0qv)y!+L91yfv3Yj0 zzqH=JVpGVvIR*`zYrb;e@_~iSAii=1x4BL1sMa4%|4zg_!z$wL4I}hX@C1-zOh_B& zWVi{^k1965k-=MS41~&$bI4f(;x1EOq%FL(lS{ij0Eaeq09@j=h`?UmxVgKA?fxvy ze$d%_l)VS3px5p8OKdx*9${b>nAejlks6WNs(Jd`p~f}m|; z2CP;O!VuPpXdb?#MFhc&XJ`i$SOVx6^#U#mBUGVL3Nk^K$Q#igVqj4^X64hjJS~tY z3mtqDF}(i`HDY!T&OdeTsc`DbK>BBRLLW$~GiUJHESdg{nxddS?n9k{YH$};2r z$0Iao-KW!_rK@4pS=}a_M&G~;Cs7{+nxN7){}qG^UnTEr@UEH}VSr6ShTgEbC;SdR zc?pGJ8?rR<3J@k1XidC`R0~LBuTr`mq{GxJEV(rK^5nTgV4F8DKWDOXE)35MPc=@b zookM;&1sLG-LtT1>d+mVbL#=? z46(3o|G+~|2b^Rp%+hpFk#_=jZOhCF0$glP2)|FG7&rQb2wM&lV**Yj)AZMrupjk* zl;Izl8POR2w})Qed!yc8+ex$Fv4@%kCKQb2%-vgsYLMo^ztDfoh;*2hjN#w`?Mi3nm4i>P(g5h8e_;C-Np8_t37fkhybK2lW zuE791`G2|*rGvJp??kAJb4yNx=9nWCjXFC*J&%WNdgTxW0tX$U#`T3@uXPwT@e~D= zszrh`tkC{raTDaB(SA}Th#beZ#vaEar@l7aw?TWepnx$*feugrZKDzdTZ!^zgJuy9 z$sj(8o3&uq((PH}koKRD+=~k7KA}_EU7ax}>1X-nGnQ%N^x;|kU5NBB{8|EBbJ;=b z>iPAztd$FnH}YQ3yKUY6)BN&ZGc(7(+n{eS={s@h336-$E@JE(JtINrIKuD=Y7S9{ zWj0ANVuGX$E1d2D#w!_&oRJ8Oi)9bjw!cGM2A{#{c|U8#*Zc2NTRzAyx^(oVqxZ~s zzR-W6|AnQ&_jE>Q(o}Mclnjw#-`EObtmoUFzu*1d{&)7{q;;EXU%D|{&~ejuida7h>O7O5qOn3^@*$SSrVJ?p{bPp5j1!PzfE>Yg zbyq-q4eFkjbO~m*a<6vW%+@rpL|AtOf^32GL3*vB&9Hx`G{+|(eK2kq*N>Sy6bfR* z1eDqn8u&DN!pxJD#l!W42ClEgQdTW1wr9)zs{ZncDzy|P6R#r9eeOK-;xfdmR-Qbk z8YSv5%a9dxG)s*UYRs7F-e(}250I@e^|)9tJZ&Xc&>!i(%}Bp%sk+uhG61z0 zGmObrM8*%&6{&5Lb|%p6QmJbbZAc*nvTLKTANueak5+D7MhOr-7vKjclw*?D#o1rh^EC}OU^@6^G10r=2 zO9ovel*CALBx-G@UB-??tz|50vq2OrQFGe^7933omIs&yG>%|PIcO|%EqwWyuDhhx z(3J=TfJs~oN7)?QKN8t;Aa#Lhlu%2)dKP(4B|QPad-v)<_BK z$4BZd)IT-0t;DFIe^}sBkQ_*H?4i8JO`ZC<8KQrbzU?$v zm`FCHNx%P(VJ?L|N6ClSBwdWh0ghq_V1)dz^+l&cb}^elOL(GNnV%8S5a_XRy(3UR z=^Z95aAb5wYqM4FZG?&8&8LJburAN zZIatdib_LUT$9PF8jWw#u+}x1=#otI_M^s%Q>wlVK}=9bn-E8JiE|x5aOJHA2QEEh zoB(BG+{S_89?X3#^|I*Qq+g*rsF2oy0wRe@y3G7$vAPw|oA+IZAO%{w+i#60olYqbcd zV(UAttW|AGQAOndGS6D296*{?Buzaguf~p~9FEr0+Q)8U`T`CoCaoPS>TuE;dpHsP z2(1;Khle9Kokm2nz^Hk|Fp?-LtfQ!LL{W)8l{9{yMJjWV{x9lnbdhpE$xHoN1-Jq$ zr<-Pna6ZY*doej|@9^6@=1in9am9AowqRa34J)(P({8!;T=%{A>^si}Tpb~M$4@J2 zf9)kK_;)iK()AZN!|U9uy)RRt4I@nc~xci;2);121gAOXw5^9u9I`5tQ9P!<>75->tIxkOTTxS+hmoXrA6pcYd|Zv|MPLX`5RQK2=%!ZO7q{l68e;chhw% zissViOmq98IRWOEEq&4MoaN_?vlDa8{@k^<>}#hJiD(xkRkc54JrENVDrf^^?f=Zq z{iYFz&AikPAmozs=Q%iR=A~XTUNXM4G#H1?6{%CLOXbHx#r$o1$45rUm3?wQSC?G` z3xH_yqQg16{u?dR)XwO(yk)%B@ShTHmvx05-9bn9zrqF}VoQ=;f6}nBDaG)El;piR z<{xBl+?#3shfFh`I|Z`gR*@mi3xct#?MmsO9!q`@7AQ*G;hjl!F@QA zaF{%v3XrZxikd_WRM4Cdz5|a@3kKPIk!DK~0>zStm@V&8>RfmrUnS}6&M5ot z{xy4V_C!t__xu5UeTZCzWlw~g;RgMZK3MA)xYu}fOL}an1#^6hcBl)19uw48GDXUeI-MMFaJJcaY0C#K`y}4 z@1uaFBs79nQInC;|7r3QOJ16QFVY0mv|AU!M(@+aYeE{>t+QoJH(uB`vyVw~?wQXH zI%Eg#nzG&I>Ltt|8sk!ig)oCJa#*y* z!ambrm}3Y~M1oIXr}PQx%b$Pic@nT8am_YmRA?&!)*Cx27$$WdKNxN)YMG~}>Pn;C#f?GEeqZXc^OlZLgI`Z`78OSrj z6B8tbY3$s<^?+kFLVbD!3iM>FLFl3&jwchyps6tRa?#WTp`uB1`{)5zsc7ybt#_DM zU|QG6A>mws4Juk=)rCH#P%|AD;s$h$!vW2Q0g zNd~3KCT|6Kq{br@lSh0hfrMEEV&4kHN)w2qBJo=YwhOer1R7J}A1TE@k@q8b4A0pm zt-&8tAbHfqUaC4X$hv5AoCSNZY^JADfcRSs&*d(3>ki z{*qyXdF#ic`V#ZzkK6P%bIHfWW_YO)@38*k^mT}ETyHXO`W5W8ZU(8_yqPUUR%{Fw zD1*X#-$gy5O|`;At1(MA2GgN1t!iS%S#c*8o)h?Nrir14+13QSbId@ig&Al~B5H^) znP?h5>ys%&uaF6CzEoza)y7P<+KCbXAW3&2A>As!KcH|e(bbAm2-F-PPBi043*f7k@L-oj?gawcv_9jU7G+Cr z7p#dXR4e5a^DR2XfU2gDp|wOfarYglQIe~Rw4)u&p?C-8OXTY~geE}tHcS{8$$Jx6 zIffpE7NjNE2)349OH{GDxYiI=yX^Qf)w}%UvO(zH5+QUOAfTfgjTU&(>N5=jFcJN$ z=(Yob9C7ZDenWz!6x&lIf0Fwcr78W=Lok)OsINqWVGcL9=|&yO8#e1v2y99YH@Zbx z{$qx0o$|MyYWb-;%^Yps}`opux>BC**QHOl!f>%+*lpI7uCxE;#HU=TUQyw2~JMV-2m)`c)1HBDh z4Xp>r%7s9qB$~#ca09y@t$Pl&^|m*_q6g{qkl7i5#z{vU<@`rEbPNDJ(`W_d%p=_thIy`Q||k9Lq!Pv)KM{7XqMCB3pGm|Ydl-WbTf%^ILOkeL^Dl-+cc%}rc+_VTj}{6foH?zczY90`^mxa~OjlY+XBDE74J z#Z(*+(lRetW-MWQ$xVC7T%+H<1+tMluI>ogx4=9=cFEVjf@&q-ak{?#WmZ3DE`F?w z`724qK4&q1y`-(5Ur4_z?&OzUI`-1BV16ZHrP5pPOTEGTD!e7#$uGY2#7j?nlP;4_ zhA7FD={A@5>yL|2l~3*`MRayDe`0r#vQFl2yrt;TcMO$HwYqoK?P#hpeZR6A&p)U# zlV6*>S8x0WogRJ+)Hfp$;5~#8(YLgNfuV(YDoh{VKmukiI|iqq5uufS?aBTo~(jd%Y2;L6(ku6XUQ>)OSV#T^{6%Xp99Y zgA`cwCu>@upL<4oaYNhySyG~x;jyuCwf2JyeH4wPGng2ueF4?=S*flOKq4K$W;?_A z)q(tKTs^7iOJVhX06M^z&wZKE0nUVN6*p}aMCWNe*D8rUKtHK?=P#j2w@ZIF0Rj=Y z+$~@&3|WiVai6raLYylGVqrx~r@ZKKr8ULY4`;$lUE4gS{JyonkUK0b@eIYua ztVt!jRKlo$J7}!OXjA-JJj79&k<5|ssQiz;Gn(s!IMUup-{svCDuQHNs_zWMJcJ+( zapH+SFI~qV{3E^DF=!{D{D~Nl4aJTo5b+X1q}aOHt|fC0%xrIBe1nJ$d2A_kvns`e z=_%T{GT3$z8@PrBnBW=cK>5WO!8^(6({;1XaB|VjQs8U`)weEG`Qd*9VI0 zubG3zJElz}rTM2esB@NY2qYJM0=OC#^F=*~_Q} z1wq0|R??VMd|OMf8Mv~dx-)J*RxqBx8;%*e64olSN2gn>VD!*A;iBIjC9d#?(4SXu zR;9tZ?$cd~OG;Ef!^*&?eXSxjH|sGYpHLrJKj5+(0H;$Xb|aIT4IAIR0MA9b)h;_$P|{Bl7-N@_tO7pF9G?0-c;hQzId= ziNK6K<6bwQ`AYh9ACaKqGBN~Z^D!s^)B1#VZ9m8y6kRWfhSSxe;Y_uc4xNg|i*&&M zm=ZhKVvd6j8&E^`=O=G?TK5hbnVJtF>mEvTI&>Q^48-v#RDg7N=_W7?q_tn|{psg5$ zI&12belg84{q$_wH@x3iF?;wM`E$m(zIpw3`oCkDZ}?8i)NTUi)^pbBIBGuJQXMhiqdFb#A;QBI7&NmQCIsx?Wh6eemSgU-6hraP{W zDo-I^Nc~DaM!<>@P!8+r7d}Pa6hNre*G0y$L#N&{gLDchLrte8GZux0V$MKXOH6LY zAyU{acm{^toe-`_jNDiL8$0n@qOYClSF>jGRYFwT5X!_i9{T8j+A4EV%~EcoEaqVp z?l3?yKH-BB37w09FVLk#5k(Rexr?w9X{Q&9WIP~(IjYhfvaOE;1V@Ny^9dvkI$nl9K-Qyjus(}C##Dc5YXkcN0| z%eHE7V8hYBR0|H8$xFsZ`RV`dE?mY$3iO`rDi1VhUHnP zCjI+0#f(#m$G3blI+kn3(btcLR_>CTkvv38?>Jj}5-N}^ruVi#-qFc7JRU_FV(4<> z_!;Pq_MH(;2i>C+B1e8J^sPWGVkk5-Ds1U!YH#2hIuG%psg>|(+D|3C+KRJJ?*L3` zK!kcgMy*XF$c16nvM}|3r$uLrTSZOO8c`aQ_iaV6diq+yUlf3odB>J@{@LfAy<^P? zTk~#O^Jbr%Z+z|0)kD{DL+?I>lA5HXZK_1^=dZhy-*yjFi+24llytp!@|!8FH7e|} zJNb6uv>pG(`ttq!}~e9tbEBX<_et6!q%dIwP*L^q@d+Tw@nUePim1QaI4grwiK=&qd8KHd*xVv}`KEj^i8-ZbrGr%ce_?ON3Y6bnJOGoqBZFx(J!Hd9+$_ zEEN|LnB_|*n6WwyTqP=R4U7cGD~vcfuzqL+nN#}yyAq+|)8+4h$tr9Fd3Cju#8aH( z6Xma@6Rl|cD(Xt&r%*E#cfyiGplW4shb7HU|f_NDyvh4qSNjc_GUwOo?=%iH-hT-p)A zl2J#JjAagW1eq`1eTF*bFEdjfY3y(fh6)itLU}+v9sm*e475((rlOh%MFHGR+OEMU z#FtEb0W&w=;Y$|2C@e$ud#$0?1O<-m5e1H}s8zB}jU_)}l{Ou-!Azu69*qaIQEOEe zMEA9<^VG9LE<=HTn2F4qlh(eoOOCDn9)!(Qtro&^k|qS#x*&?r?n;#5oP?u*w7XU= z18h-+wA*AjP$83cD+)oq9R&G{u8D|n5Zi=g)VtI33LyMdgL-R*(2d*}`3r|jvqb1^ zMi91q8aIKkD|W*OB(!MxNn%?U&Wo0zv0>o&!q|Y&NO5TVJtvSm5Eqt`23JfvCG?F$ zyl@D-#S~OPNGC6oylnE0Qc_ytDDPcDH^{>?zUhQ7QMi!_(|kxo7~wbt7^DE&M_~hp zD3~m^oM?!`i-nIUGseDHMdgsGPIkGfn26grh%p;=iNq*<93ziV`3KO~X#WuY8S#MG zgH_xsv2n*K^l9?8(x())`$1$ALX>SK)x%DngFGjBIplqXlI79U4=G*=UghhDdb zU$G{fy!K}DT1oto?n?-BxdARW#N|hLB8>TxLbtWbTwVG;+c;Mm;>wjUcF$|ctQQvQ zq7Aa2nK?5jEEqzmwb8cp2WFTR{oDv&I01ZNXWoU$7bag>9duTPof`tq4GV)o=k{q6 z8L0d6%$Mi3ygKpPSFV1Ah21Hx2p8AgEUsJV3>I$z2iSJUo_>LQft$^^a_I7*ki9N! z-yE=SeoJ`!)SIVnbouR@L-tNo%aVMadybpVnBBgZRYvzRta^Xd+N-AT6~9sbdilI5 zw2HXJsrK_no;w076tL_+cRZ9*F=beUCHTa1i7)aOI%hhk5{YGzUwG-rOGoC8&re*- zU0hp-%nCL#W-{X{(H*y8j+q4HuXJDTW>TP)cU;9+xNmdw>EW8)ftuZm>+7y(AYsv7 zJ*CWNDf0tdewZr`aK*10UQ4{1xG?DFz$4kdq+;_zD5XZLY9FK&&N;$Gn*&9g{njmu zDS7l(6DX?jTWc3n(s2eTxLn}3RxhSx;W_7Wj^DZ#2e6!^bFEX2_aSg=JKy?T>-6#Y zn#F=5R4=9E{gU#_b+7WTbzkkiwsEfRcFFFKY>5A>bY0aheXw%pwC@7OIqa;s>8!Zk z`QFiYj>3eXJXxqK{JE9$&)(*?eR6;EQl<^9t9R3Pm$s$p{y8nV&1L-OLOuMLvjQ!4 zBc1u)!ozZQ6tvjk^0o!6E3#{Y&YFNs;vB=Sxwt^Q@;D#Lco6n`st0p`gUZe%S z8+8P84MV{0X^0rByi>R;T)6IL;kv~PXE+g$0= zqc?$GHVm`yp)QSU1s+8~6ma*O8iY^lUSEp5)oMeA4=b(mY`K#q3AJ621k zO(!2zB=d_s$^lLu(o^VbC`TuCsHXI~KBYG14j9v``RsLqWFoXGG4AA;oQCum<7+Jf zm~qzu@sbGhN_x^#j56`0^ehP2iE@_9i~`47WaI=!7qmwTx3wy9jLXEaMj7ijVT3de z866h6#pC8>MmeR+0Ik?mX57$LqbOYCAdcH6(Qe3MLcv;MPCz0P&xt+CVX(WTyQzy* z)g5x1)n9~afP}6@904NXFlEUN$}><+s61(o1~EJ!4H`F=%5g_Ytm7SW+oc(}O#3rq zV^w7Jt64-b1n5i~A!bG9Ky)-!BC~|l=ZFD{pI_of1wGLO{SpRxqJh;?($hBy7THk> zk)BLpS6#qWw{Rrn+QA?T6SA2AzORFvG>GUELLcEXP%D21*ROef@4hlR;2DCcz!zP| znHqWw<=^%0-wqCrLgV}kXzZ`4m5r#ZW>W>Cvd-cEp4^niaOtK%>85L$q0)%N%%n}y zjjxoHIJdYyZ>@x8s?Mj^>AMuAg*-YK#FR)o98K|i`{0q{Xb*lRr$s{oj|(8QL$AgE zQB6J(opgexX(zK1z>GLXOahRZP9M|#2ii^>t(Z)7?^AsO(>o({9BBG)@PYB787Wa# zH*2R*>f~76V%R4jmbldm^Ve&1RxaV z1^9%xFq~OqZ3L4Y3xp-b#lx95*3vKHr64TE3NONJH7U4n#;heysERzX-k>pwb8#^= zXd+r$2&`=ArA;8J{h<2eM6FOhaH7T%fr`F?PwQOTGwGe!VrpPbL%ZgkQC52qL!;(# zF&?t!omBILr4Y-%?J=Y1CL;yC4IBpB9+IFowv`V_2VS*&+ zmA(NhIbvwowQAB>@!N;qhf%p7XjSmB(5gKQ!a>?+5ml5lfk`4<_+9d7lt2~$rxpy! zh#`JS!iinLq3~@aIlTnQXyZ%N!5>k|M1VsU@j1$DB|N6i$uz&E&0V@8lJ%)r`Y=8J zJ!%Fi5CLdI(`WkVEt_ku@k;CE){w1|E>tk2rZnmA*mEFly6xh&`OF35LhIk)CWoC7 zDbx!oGbyv~xqY_^)`jfVckC-*rm^B;MaW*dxB{}@^F6o9xA@DpUR!_dvFlrJZ9nAS z)_zx~Kdg5xx>nAO+;Y|V3pXqry>7lfd}~*Se`hB?J|=y1f5$re)%mW4rfX|%)$R4y zHeWvlMceFlJv5SW9|V&apDlSY6%`5F%LDfEd1J`Fma3IJlT7v?L$0RV_Pw9n$;i8} zGoclWdFvNeUbEh+Y4We%d%gcg(Txm$&OvAzN91YCL-t}dvqUr}CbK0d?}xb-Xc+bFIQXSQSJ&AmAV-NDzQQ1%V_RRK~5)iC5gt zV}n^wCdWDNm>00azrLe|xHteFzo zEM#>>zWTFTLe^G#*?(?7$zzA|8ba3H2nbtCV87L0df>M8pak+vA}7OhF^Tk6dYK(s zF#+JNcW{(_WwrR+1N;!kb(p$SL9Qo=$c?_QRE=l3203T za%K{AwhNnQHY4DEazc92RKi`m&YJ$*j;NZ4@~Hg?ke5TxZR?XCNGr>qwf45PlC6!H z-GFEhK()Age~t%642?idyef{@MO|Eo*zr!LVM!(j<1Q}5eFQ|3jCW+-P^Rh7oFx}A z9SGf$?(~?83t=`eqSePt2*L!NQJROBkg5}>K@Wa~--Cw_|6g&}9^2G)#{IhXb>bvW z;sg>W*m)Qd9KfNFmPcq4heu0DTN6~;vZMh5q&$+|gsss15w-mT*dzi)N+L}HBqUO4 zQ&VYLgIW~|n})Wjvl}l?4HMPcuB$X{scDx!rggvXocpr5gl?L&lj!)~bIv5N4hXC!~R&@;U9)XI?(?7xMz&@sy|8Zw`@;VInHxPw3)oWZYd(q-H1Cv=Y=y4wgEI^x@|zKg&~Ev!+Hz^~5NNAd>yL6}=wL7hc}tZX+OM(%fTZMt zCX(0AIehFK^A)m5jGpujT@e`#;`XqL)+=>EVD+e@DiqpzUnnGnFmrNfim}5B3cl;T%rJRAhi7jz@ekkur}&qpGQINuMAM z3yg4m0Measc>xz(B>%r>Z~8K$j50$ZP2uZ9)Ytzf6o-9Ti_Mu2OBpg&n{Y3TxfjOW zHB;`zU*62~kQNq+)91hMazp#kng8`iX)MO+;_{If#@3Ion%H;U6)oBZ$7e`6BBx|W zi`tnhG%g*OaMi?IHPb~UiK0NPC@@`EGQ9fK>XF@v1)tSU40!2fGG zp3)y7{A;Y`COEjUCCyJC6$6`A2ezyZY&~lEp1%!zajHvl&=eObN>KC%iW(`ph$w08 z>+O>#yTnetqyWyRxneDbFs!7=pb5~*+cdeqkBWiH6cnD>G~9Z+^_8}SCm8bt#~zvV z+#fA`V8SwS-$Wqle(0Dm4RgvJCp&)B!2mY-EJ?VkV=g!vjJtw2;ksZ&qOdwvSUs5+ zz*#ac$PR<#bTHu##N2^%U05u$4pVL!)pDZaYc}C7H{~~%3Rg?Bn}g0YT{ZNLgBjXK z(=`rBu|(Q}WNaL?{sB&Dg|nCLr*g7F9ybbH#@GGJ-Ozm~0}gqKu$FR>HJ{O2gE$0r5~_8)gcJXAFW7{KCBh@Js|mBY0-j zt;;N}4&@4*UKl97i)x)AeA5_N#J&S+WI*4;n;Sqz&8IRX0CVP&RO;|R;!pLQ3~sg3 zT|?N+WE72{YhJ`Xm(*Z~rvrY`G`M@ORxnceJBU=q0^ZR8aw=b!#s(IO3;vV#QR952 zcJ22r`<($KR`DD#@7PXdkS9{6r&PmlL1CXQ;-No{_Wm8lp=i5}y&U{Y@N22cRb>8LGb*wmQleo!5f9P3=h}Z; zUy^rUpY#jtC>x{wg z{E%-~4^ToqRYzl}l49YojGKS%ha0i}u7d-hS`&gKb8XJF9W83@9ykiKO#as1y-UCn zB;xk!Ea+mYH8NBx>3H@q2p@Znd_jA_R-Dp%y04vu*xFOn@Y9F@DC+U^DFJ;&z>E|) zrEW_77D4(Kt`zaI7tq(*d@ejzLfM#%nJQi;^-&r-(=asb5Z%(&%pemd=4v48IeN;( zzp8Ns!)R>xrrDdc%Zi!y16@12;UU;|psRnNpQhA8oX!1QVP4ig;-ufCo9*vRhli(p zi@x^1h{hr11#zbRC-!rqD)chB7#765hHB!XcUsIonR7g6sC#4^1h=LON=DX<31f%H z_rZ2u{+45QN_pViwy{m)`=Sp$9?g#&v)_a)6c?guKezDW;`58g+7nA2j4gTaO2K4h zOSEEr)VpEYQ%XkGMg|hT`k1eNykXL_nk23Si?ikvlDHbLoVcIlt-@+;32!jw4Nh3& z;@X7R6cd}SNYTe0kBUukF`{OQmalrNYGU{0o=ZJ%E{(2wIO=@_O+kjmS$3<;KiUFu ztmj5r;$`(3psoug>KgGMt!q@E^SQ`WVa=75$698s0L33E?-MP*Z@gu^A?jT{4UfAU ze%}1X#@9De-Ho>zn=Z9ef1a3Vk2h|o?l@04hpI+e$1M}#%bPE4j*FWT;+B}WCA#&g zsJLZHe0tW&z&r=>zih18=ofzN&)yhvrkx}S`U0|ww@(9Z{y*WXvWwpv@@PCbCcke0 z3w8UW5lpmnh#ex#(cz6Lq_ybgY5G_%#eX-IcwLJIP*L|3a3V8AY=-dA0MY^KRvE!7 zUHwMzCs+5pEVFe;mxs# z?8XQZYsRWjhKSY~A(9sXey+@?J^^?c{xn#NzJOSi8FcShllcr|tkPD(@{B5Q%dmlL-~!6QQkMnV z8gxEFFq%Ofc3__X2NZxmi}%C@CS_c}eV70oAT1+r!{Ij|uYYC8&*1L03$S+OXjmS4 zenlwME`5ZY(x-?3i~mN~A5gRbQPM`j;L<ZFN88qO zqcug8i2>xR^q3ta_fgsrx;;wKekx+^@9x$?YS}t2gVe$vsp}xw$=V5zqR$V2y9#6k z)OVGqDnn}~@tw@kfHV%C`S@D>#AKfXLPrah#l;YTXfkH-WL)&AV$QGR;4muYka*`$ zEN2~~jxpPK{Y3q-EJzC9gaGf36FWu%lR199eDL;D+b=X6a7$DDDoS_QQ? zi^1bfcV^|jz^$!H1nvWi{{DQA`sH=Jq!Z+O+{D$wk` zOXA{E`4KXEN4=CeKq(}DZ5g(ovi~?w4}h!Q2)-VSi|Z0%I3|X#=SRixl(=~|M+bd> zRZz02LAc(K{jfb9`Vvybpf9aYKwo?g9@#J zZC3Pu`9gSk12T~DkQkAnNRV3DW>Jce?u@WP9!5IggRE+0LM#kLCx++mk(;C3jOaN{ zx5OS}D0kAUN`lD72o8|#qP|}6P<6JllN@m#T z?w~&{Co&^b51*6ZTMH=(S6$3i_m3QhQ?@6fpGT;gf1W+8ehdSCGlLP&K*PBJBWTvL zU|e2hEA^`7 z%jYO>fD3mBke|fcQeb^Epqnafs1u*o30eFgujMd4M8r=v>4`GNnZAQ`Malt55l*dP z_7bKj30z5}79fA!q~lQc4?1^&&QEhtAqajAIrqqlKXjUD~oR+K}L2^qQT9W5-B8UW0p6nDd&7dNwIy`f%THq zE8PL}N@t|qb388?ti z3boViAVu>iA~b~SC=v*eXqVtRioc;2e@oHt5b14xzfE~4BBRy)FXJh*`JJ-N6RJ}U z*+O}$)Gic#?#UGjQ~qM1G8Hllo6V`Lr9xwBHw<|PQm%*0!qOQCx!Vgqvsi@SZ7Z&3 z=qlyP6_%&`f>4{vH4DB}mRs0iPE{8Ot>#pXS!gk*?4ppB@>tM{XcrdDx?Mv4j0q9j zTv)eiYm%1Ue#SZFMsghk`#~;*2qaBU&Q79@Mq9pw2b$0dja6ukg;7KbC3v(S)B2qBJ z!QA4a>;aE2mU0?@QVLDl`nsSz%T6JV-96GFI&3()cH(q2un)erI`{M(=-+8P0&j0`b literal 0 HcmV?d00001 diff --git a/config.py b/config.py new file mode 100644 index 0000000..1b5b335 --- /dev/null +++ b/config.py @@ -0,0 +1,51 @@ +import json +import os +import stat + +CONFIG_PATH = os.path.expanduser("~/.gizerbridge_config.json") +SENT_PATH = os.path.expanduser("~/.gizerbridge_sent.json") + +DEFAULT_INSTRUMENTS = { + "MNQ": {"tick_size": 0.25, "tick_value": 0.50, "enabled": True}, + "NQ": {"tick_size": 0.25, "tick_value": 5.00, "enabled": False}, + "ES": {"tick_size": 0.25, "tick_value": 12.50, "enabled": False}, + "MES": {"tick_size": 0.25, "tick_value": 1.25, "enabled": False}, +} + +DEFAULT_CONFIG = { + "api_key": "", + "email": "", + "dtc_host": "localhost", + "dtc_port": 11099, + "accounts": [], + "instruments": DEFAULT_INSTRUMENTS, +} + + +def load_config(): + if not os.path.exists(CONFIG_PATH): + return dict(DEFAULT_CONFIG) + with open(CONFIG_PATH, encoding="utf-8") as f: + cfg = json.load(f) + # Merge missing instrument defaults + for name, defaults in DEFAULT_INSTRUMENTS.items(): + cfg.setdefault("instruments", {}).setdefault(name, defaults) + return cfg + + +def save_config(cfg): + with open(CONFIG_PATH, "w", encoding="utf-8") as f: + json.dump(cfg, f, indent=2, ensure_ascii=False) + os.chmod(CONFIG_PATH, stat.S_IRUSR | stat.S_IWUSR) + + +def load_sent(): + if not os.path.exists(SENT_PATH): + return set() + with open(SENT_PATH, encoding="utf-8") as f: + return set(json.load(f)) + + +def save_sent(sent_set): + with open(SENT_PATH, "w", encoding="utf-8") as f: + json.dump(list(sent_set), f) diff --git a/cookie_reader.py b/cookie_reader.py new file mode 100644 index 0000000..ba00d6b --- /dev/null +++ b/cookie_reader.py @@ -0,0 +1,84 @@ +import glob +import os +import shutil +import sqlite3 +import tempfile +import time + +FIREFOX_COOKIE_PATHS = [ + "~/.mozilla/firefox/*/cookies.sqlite", + "~/snap/firefox/common/.mozilla/firefox/*/cookies.sqlite", + "~/.var/app/org.mozilla.firefox/.mozilla/firefox/*/cookies.sqlite", + "~/.var/app/org.mozilla.firefox/config/mozilla/firefox/*/cookies.sqlite", +] + +NO_COOKIE_MSG = ( + "Bitte in Firefox bei tralgo.app einloggen und " + "'Für 30 Tage merken' aktivieren." +) +EXPIRED_MSG = ( + "Deine tralgo.app Sitzung ist abgelaufen. " + "Bitte erneut in Firefox einloggen und 'Für 30 Tage merken' aktivieren." +) + + +def find_cookies(): + """Return (dict of cookie name→value, error_str). + On success error_str is None; on failure dict is None.""" + all_dbs = [] + for pattern in FIREFOX_COOKIE_PATHS: + all_dbs.extend(glob.glob(os.path.expanduser(pattern))) + + if not all_dbs: + return None, NO_COOKIE_MSG + + best_expiry = -1 + best_cookies = None + + for db_path in all_dbs: + tmp = None + try: + tmp = tempfile.mktemp(suffix="_tralgo_cookies.sqlite") + shutil.copy2(db_path, tmp) + cookies = _read_tralgo_cookies(tmp) + if not cookies: + continue + max_expiry = max(v["expiry"] for v in cookies.values()) + if max_expiry > best_expiry: + best_expiry = max_expiry + best_cookies = cookies + except Exception: + pass + finally: + if tmp and os.path.exists(tmp): + try: + os.unlink(tmp) + except OSError: + pass + + if best_cookies is None: + return None, NO_COOKIE_MSG + + now = int(time.time()) + if best_expiry < now: + return None, EXPIRED_MSG + + return {name: data["value"] for name, data in best_cookies.items()}, None + + +def _read_tralgo_cookies(db_path): + conn = sqlite3.connect(f"file:{db_path}?mode=ro", uri=True) + try: + cur = conn.cursor() + cur.execute( + "SELECT name, value, expiry FROM moz_cookies " + "WHERE host LIKE '%tralgo.app%' " + "AND (name LIKE 'wordpress_logged_in%' OR name LIKE 'wp2fa_device%')" + ) + rows = cur.fetchall() + finally: + conn.close() + + if not rows: + return {} + return {row[0]: {"value": row[1], "expiry": row[2]} for row in rows} diff --git a/debug_cookies.py b/debug_cookies.py new file mode 100644 index 0000000..2283c35 --- /dev/null +++ b/debug_cookies.py @@ -0,0 +1,123 @@ +"""Cookie debug tool — run with: python3 debug_cookies.py""" + +import glob +import os +import shutil +import sqlite3 +import tempfile +import time + +FIREFOX_COOKIE_PATHS = [ + "~/.mozilla/firefox/*/cookies.sqlite", + "~/snap/firefox/common/.mozilla/firefox/*/cookies.sqlite", + "~/.var/app/org.mozilla.firefox/.mozilla/firefox/*/cookies.sqlite", + "~/.var/app/org.mozilla.firefox/config/mozilla/firefox/*/cookies.sqlite", +] + +SEPARATOR = "-" * 70 + + +def main(): + print(SEPARATOR) + print("Firefox Cookie Debug") + print(SEPARATOR) + + # ── 1. Find all DB files ────────────────────────────────────────────────── + all_dbs = [] + for pattern in FIREFOX_COOKIE_PATHS: + expanded = os.path.expanduser(pattern) + matches = glob.glob(expanded) + print(f"\nPattern: {pattern}") + if matches: + for m in matches: + print(f" FOUND: {m}") + all_dbs.append(m) + else: + print(f" (keine Treffer)") + + print(f"\n{SEPARATOR}") + print(f"Gesamt: {len(all_dbs)} cookies.sqlite Datei(en)") + print(SEPARATOR) + + if not all_dbs: + print("\nKeine Firefox-Profile gefunden.") + print("Ist Firefox installiert? (Standard, Snap, oder Flatpak?)") + return + + # ── 2. Read tralgo.app cookies from each DB ─────────────────────────────── + now = int(time.time()) + + for db_path in all_dbs: + print(f"\nDB: {db_path}") + tmp = None + try: + tmp = tempfile.mktemp(suffix="_debug.sqlite") + shutil.copy2(db_path, tmp) + conn = sqlite3.connect(f"file:{tmp}?mode=ro", uri=True) + try: + cur = conn.cursor() + + # All tralgo.app cookies + cur.execute( + "SELECT name, value, expiry, host FROM moz_cookies " + "WHERE host LIKE '%tralgo%' ORDER BY name" + ) + all_rows = cur.fetchall() + + # Only auth cookies the app needs + cur.execute( + "SELECT name, value, expiry FROM moz_cookies " + "WHERE host LIKE '%tralgo.app%' " + "AND (name LIKE 'wordpress_logged_in%' " + " OR name LIKE 'wp2fa_device%')" + ) + auth_rows = cur.fetchall() + finally: + conn.close() + + if not all_rows: + print(" Keine tralgo.app Cookies gefunden.") + else: + print(f" Alle tralgo.app Cookies ({len(all_rows)} Stück):") + for name, value, expiry, host in all_rows: + expired = expiry < now + exp_str = (f"abgelaufen seit {now - expiry}s" + if expired else f"gültig noch {expiry - now}s") + print(f" [{exp_str:>30}] {name[:60]}") + + if auth_rows: + print(f"\n Auth-Cookies für GizerBridge ({len(auth_rows)} Stück):") + for name, value, expiry in auth_rows: + expired = expiry < now + status = "ABGELAUFEN" if expired else "OK" + print(f" [{status}] {name[:60]}") + print(f" Wert: {value[:60]}...") + else: + print("\n FEHLER: Keine Auth-Cookies (wordpress_logged_in / wp2fa_device).") + print(" Lösung: Firefox öffnen → tralgo.app → einloggen →") + print(" 'Für 30 Tage merken' aktivieren.") + + except Exception as e: + print(f" Fehler beim Lesen: {e}") + finally: + if tmp and os.path.exists(tmp): + try: + os.unlink(tmp) + except OSError: + pass + + # ── 3. Final verdict ────────────────────────────────────────────────────── + print(f"\n{SEPARATOR}") + from cookie_reader import find_cookies + cookies, err = find_cookies() + if err: + print(f"Ergebnis: FEHLER — {err}") + else: + print(f"Ergebnis: OK — {len(cookies)} Auth-Cookie(s) bereit") + for name in cookies: + print(f" {name[:60]}") + print(SEPARATOR) + + +if __name__ == "__main__": + main() diff --git a/dtc_client.py b/dtc_client.py new file mode 100644 index 0000000..e4aa041 --- /dev/null +++ b/dtc_client.py @@ -0,0 +1,520 @@ +"""DTC Binary protocol client for Sierra Chart (default: localhost:11099). + +Binary wire format (no pragma pack → default C alignment): + Every message: [uint16 Size][uint16 Type][payload...] + Size = total byte count including the header. + +Struct offsets used here match MSVC/GCC x64 default alignment: + - int64/double are 8-byte aligned (padding inserted before them when needed) + +Supported messages: + Send: LOGON_REQUEST, HEARTBEAT, HISTORICAL_ORDER_FILLS_REQUEST, + OPEN_ORDERS_REQUEST + Receive: LOGON_RESPONSE, HEARTBEAT, HISTORICAL_ORDER_FILL_RESPONSE, + ORDER_UPDATE +""" + +import re +import socket +import struct +import threading +import time +from datetime import datetime + +# ── DTC message type constants ──────────────────────────────────────────────── + +_LOGON_REQUEST = 1 +_LOGON_RESPONSE = 2 +_HEARTBEAT = 3 +_OPEN_ORDERS_REQ = 300 +_ORDER_UPDATE = 301 +_HIST_FILLS_REQ = 303 +_HIST_FILL_RESP = 304 + +_PROTOCOL_VER = 8 +_LOGON_SUCCESS = 1 +_BUY = 1 +_SELL = 2 + + +# ── Encoding helpers ────────────────────────────────────────────────────────── + +def _s(text, n): + """Return exactly n bytes: ASCII-encoded, null-padded.""" + b = (text or "").encode("ascii", errors="replace")[:n] + return b.ljust(n, b"\x00") + + +def _unpack_str(data, offset, n): + return data[offset:offset + n].rstrip(b"\x00").decode("ascii", errors="replace") + + +def _unpack_ts(data, offset): + """Read int64 Unix timestamp at offset → datetime or None.""" + raw = struct.unpack_from(" 0) + ) + + +def _build_open_orders_request(): + size = struct.calcsize(_FMT_OPEN_ORD) + return struct.pack(_FMT_OPEN_ORD, size, _OPEN_ORDERS_REQ, 1, 0) + + +# ── Message parsers ─────────────────────────────────────────────────────────── + +# HISTORICAL_ORDER_FILL_RESPONSE – empirisch ermittelte Offsets (480-Byte-Pakete): +# 0 uint16 Size +# 2 uint16 Type +# 4 int32 RequestID +# 8 int32 TotalNumberMessages +# 12 int32 MessageNumber +# 16 char[64] Symbol +# 80 char[16] Exchange +# 96 char[32] ??? (ASCII-Feld, Inhalt noch unbekannt) +# 128 uint32 BuySell (1=BUY, 2=SELL) +# 132 uint32 ??? (4 Bytes Padding/unbekannt) +# 136 double Price (136 % 8 == 0, 8-Byte-aligned) +# 144 int64 DateTime (Unix-Sekunden) +# 152 double Volume/Qty +# 160 char[32] FillIdentifier/TradeID +# 192 char[32] ??? +# 224 char[32] TradeAccount +# 256 uint8 NoOrderFills +# 257 char[96] InfoText +# 353 char[64] UniqueExecutionID +# 417 char[32] ExchangeOrderID + +def _parse_fill_resp(data): + if len(data) < 260: + return None + try: + no_fills = bool(struct.unpack_from(" 256 else False + price = struct.unpack_from("= 417 else "", + } + except struct.error: + return None + + +# ORDER_UPDATE field offsets (C struct, default alignment): +# 0 uint16 Size +# 2 uint16 Type +# 4 int32 RequestID +# 8 int32 TotalNumMessages +# 12 int32 MessageNumber +# 16 char[64] Symbol +# 80 char[16] Exchange +# 96 char[32] PreviousServerOrderID +# 128 char[32] ServerOrderID +# 160 char[32] ClientOrderID +# 192 char[32] ExchangeOrderID +# 224 uint32 OrderStatus +# 228 uint32 OrderUpdateReason +# 232 uint32 OrderType +# 236 uint32 BuySell +# 240 double Price1 (240 % 8 == 0 ✓) +# 248 double Price2 +# 256 uint32 TimeInForce +# 260 [4 bytes padding] +# 264 int64 GoodTillDateTime (264 % 8 == 0 ✓) +# 272 double OrderQuantity +# 280 double FilledQuantity +# 288 double RemainingQuantity +# 296 double AverageFillPrice +# 304 double LastFillPrice +# 312 int64 LastFillDateTime +# 320 double LastFillQuantity +# 328 char[64] UniqueExecutionID +# 392 char[32] TradeAccount + +def _parse_order_update(data): + if len(data) < 328: + return None + try: + qty = struct.unpack_from("= 392 else "" + return { + "symbol": _unpack_str(data, 16, 64), + "buysell": struct.unpack_from("= 424 else "", + "unique_id": uid, + } + except struct.error: + return None + + +# ── DTCClient ───────────────────────────────────────────────────────────────── + +class DTCClient: + """Low-level DTC Binary protocol client (not thread-safe for concurrent sends).""" + + def __init__(self, host="localhost", port=11099): + self._host = host + self._port = port + self._sock = None + self._buf = b"" + self._lock = threading.Lock() + + def connect(self): + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(10) + sock.connect((self._host, self._port)) + sock.settimeout(None) + self._sock = sock + + def disconnect(self): + if self._sock: + try: + self._sock.close() + except OSError: + pass + self._sock = None + + def logon(self, heartbeat_secs=10): + """Send LOGON_REQUEST and block until LOGON_RESPONSE received.""" + self._send(_build_logon(heartbeat_secs)) + for msg_type, data in self._read_iter(timeout=10): + if msg_type == _LOGON_RESPONSE and len(data) >= 16: + result = struct.unpack_from(" 0 and msgno >= total): + break + # Gültige Fills: BuySell muss 1 (BUY) oder 2 (SELL) sein, Qty > 0 + if f["buysell"] in (_BUY, _SELL) and f["qty"] > 0: + fills.append(f) + return fills + + def subscribe_order_updates(self): + """Send OPEN_ORDERS_REQUEST so SC starts pushing ORDER_UPDATE messages.""" + self._send(_build_open_orders_request()) + + def send_heartbeat(self): + self._send(_build_heartbeat()) + + def read_messages(self, timeout=5): + """Non-blocking read: return all complete messages buffered within timeout.""" + self._sock.settimeout(timeout) + msgs = [] + try: + chunk = self._sock.recv(65536) + if not chunk: + raise ConnectionError("DTC-Verbindung vom Server geschlossen") + self._buf += chunk + except socket.timeout: + pass + while len(self._buf) >= 4: + size = struct.unpack_from("= 4: + size = struct.unpack_from("= 10: + try: + client.send_heartbeat() + except Exception: + pass + last_hb = time.time() + + for msg_type, data in msgs: + if msg_type == _HEARTBEAT: + try: + client.send_heartbeat() + except Exception: + pass + + elif msg_type == _ORDER_UPDATE: + f = _parse_order_update(data) + if not f: + continue + uid = f["unique_id"] + if uid and uid in seen_uids: + continue + if uid: + seen_uids.add(uid) + + base = _base_symbol(f["symbol"], instruments) + if not base or not f["account"]: + continue + + key = (f["account"], base) + rt_position.setdefault(key, 0.0) + rt_pending.setdefault(key, []) + + rt_position[key] += f["qty"] if f["buysell"] == _BUY else -f["qty"] + rt_pending[key].append(f) + + if abs(rt_position[key]) < 0.01: + group = rt_pending.pop(key) + rt_position[key] = 0.0 + t = _pending_to_trade(group, f["account"], base, instruments) + if t and t["trade_id"] not in existing_ids: + existing_ids.add(t["trade_id"]) + on_trade(t) + + client.disconnect() + return existing_ids diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2a2a967a4d210a4d1f4bd110abd4885e435993bd GIT binary patch literal 227830 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

P!93; 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 H^SA#OtK$Wk literal 0 HcmV?d00001 diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..9ca80a1 --- /dev/null +++ b/install.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +set -e + +APP_DIR="$(cd "$(dirname "$0")" && pwd)" +EXEC="python3 $APP_DIR/main.py" +ICON_DIR="$HOME/.local/share/icons" +DESKTOP_DIR="$HOME/.local/share/applications" +ICON_PATH="$ICON_DIR/gizerbridge.png" +DESKTOP_FILE="$DESKTOP_DIR/gizerbridge.desktop" + +export APP_DIR ICON_PATH + +echo "=== GizerBridge – Installation ===" +echo "" + +# ── Python dependencies ──────────────────────────────────────────────────── +echo "[1/5] Installiere Python-Abhängigkeiten..." +pip install -r "$APP_DIR/requirements.txt" --user --quiet +echo " Fertig." + +# ── App icon ─────────────────────────────────────────────────────────────── +echo "[2/5] Kopiere App-Icon..." +mkdir -p "$ICON_DIR" +cp "$APP_DIR/icon.png" "$ICON_PATH" +echo " Icon gespeichert: $ICON_PATH" + +# ── .desktop file ────────────────────────────────────────────────────────── +echo "[3/5] Erstelle Desktop-Eintrag..." +mkdir -p "$DESKTOP_DIR" +cat > "$DESKTOP_FILE" </dev/null || true +echo " Fertig." + +# ── Update desktop database ──────────────────────────────────────────────── +echo "[5/5] Aktualisiere App-Datenbank..." +if command -v update-desktop-database &>/dev/null; then + update-desktop-database "$DESKTOP_DIR" 2>/dev/null || true +fi +if command -v gtk-update-icon-cache &>/dev/null; then + gtk-update-icon-cache -f "$ICON_DIR" 2>/dev/null || true +fi + +echo "" +echo "✓ GizerBridge wurde installiert." +echo " Suche ihn im App-Menü unter 'GizerBridge'." +echo " Oder direkt starten: python3 $APP_DIR/main.py" diff --git a/main.py b/main.py new file mode 100644 index 0000000..def1b3b --- /dev/null +++ b/main.py @@ -0,0 +1,17 @@ +#!/usr/bin/env python3 +import sys +import os + +# Ensure the app directory is on the path regardless of how it's launched +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from tray_app import App + + +def main(): + app = App() + app.run() + + +if __name__ == "__main__": + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..bf43d27 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +requests>=2.28.0 +Pillow>=9.0.0 +pystray>=0.19.0 diff --git a/test_dtc_diag.py b/test_dtc_diag.py new file mode 100644 index 0000000..88efaff --- /dev/null +++ b/test_dtc_diag.py @@ -0,0 +1,284 @@ +"""Diagnose-Script für DTC HISTORICAL_ORDER_FILL_RESPONSE Paket-Struktur. + +Startet SC, verbindet via DTC, empfängt Fill-Pakete und analysiert +die Byte-Struktur um den Preis-Offset zu finden. + +Aufruf: python3 test_dtc_diag.py [account] [num_days] +""" + +import socket +import struct +import sys +import time +from datetime import datetime + +# ── DTC Konstanten ────────────────────────────────────────────────────────── +_LOGON_REQUEST = 1 +_LOGON_RESPONSE = 2 +_HEARTBEAT = 3 +_HIST_FILLS_REQ = 303 +_HIST_FILL_RESP = 304 +_PROTOCOL_VER = 8 + +def _s(text, n): + b = (text or "").encode("ascii", errors="replace")[:n] + return b.ljust(n, b"\x00") + +def _build_logon(): + fmt = "= 4: + size = struct.unpack_from("= 4 and len(buf) >= size: + msg = bytes(buf[:size]) + return msg, buf[size:] + try: + chunk = sock.recv(65536) + if not chunk: + raise ConnectionError("Verbindung geschlossen") + buf += chunk + except socket.timeout: + return None, buf + +def _unpack_str(data, offset, n): + return data[offset:offset+n].rstrip(b"\x00").decode("ascii", errors="replace") + +def _ts(raw): + try: + return datetime.fromtimestamp(raw).strftime("%Y-%m-%d %H:%M:%S") if 0 < raw < 4_102_444_800 else f"invalid({raw})" + except Exception: + return f"error({raw})" + +def hex_dump(data, label=""): + """Formatierter Hex-Dump mit ASCII-Darstellung.""" + print(f"\n{'='*60}") + if label: + print(f" {label}") + print(f" Länge: {len(data)} Bytes") + print(f"{'='*60}") + for i in range(0, len(data), 16): + chunk = data[i:i+16] + hex_part = " ".join(f"{b:02X}" for b in chunk) + ascii_part = "".join(chr(b) if 32 <= b < 127 else "." for b in chunk) + print(f" {i:4d} ({i:04X}): {hex_part:<48} |{ascii_part}|") + +def analyze_fill_packet(data, fill_num): + """Umfassende Analyse eines HIST_FILL_RESP Pakets.""" + n = len(data) + print(f"\n{'#'*60}") + print(f" FILL-PAKET #{fill_num} ({n} Bytes)") + print(f"{'#'*60}") + + # Bekannte Felder ausgeben + print("\n--- Bestätigte Felder ---") + print(f" [0] Size (uint16) = {struct.unpack_from('= 16: + print(f" [8] TotalMsg(int32) = {struct.unpack_from('= 80: + sym = _unpack_str(data, 16, 64) + print(f" [16] Symbol (ch[64]) = '{sym}'") + if n >= 96: + exch = _unpack_str(data, 80, 16) + print(f" [80] Exchange(ch[16]) = '{exch}'") + if n >= 132: + bs = struct.unpack_from("= 152: + dt_raw = struct.unpack_from("= 160: + qty = struct.unpack_from("= 192: + tid = _unpack_str(data, 160, 32) + print(f" [160] TradeID (ch[32]) = '{tid}'") + if n >= 256: + acc = _unpack_str(data, 224, 32) + print(f" [224] Account (ch[32]) = '{acc}'") + + # Unbekannte Zone 96-128 analysieren + print("\n--- Zone 96-128 (UNBEKANNT, möglicherweise Preis) ---") + for off in range(96, min(128, n-3), 4): + if off + 4 <= n: + as_uint32 = struct.unpack_from(" 1 else "" + num_days = int(sys.argv[2]) if len(sys.argv) > 2 else 30 + + print(f"DTC Diagnose-Tool") + print(f"Account: '{account}', Tage: {num_days}") + print(f"Verbinde zu localhost:11099 ...") + + try: + sock = socket.socket() + sock.settimeout(10) + sock.connect(("localhost", 11099)) + sock.settimeout(5) + print("Verbunden!") + except Exception as e: + print(f"FEHLER: {e}") + return + + buf = b"" + + # Logon + sock.sendall(_build_logon()) + for _ in range(20): + msg, buf = _recv_msg(sock, buf) + if msg is None: + continue + mtype = struct.unpack_from(" check_off: + val = struct.unpack_from(">> NoOrderFills=1 gefunden bei Offset {check_off}! (fill_count={fill_count})") + + # Letztes Paket immer anzeigen (NoOrderFills-Paket) + if fill_count == 1: + print(f"\n=== ERSTES PAKET (hex dump) ===") + hex_dump(msg) + + print(f"\n\nGesamt empfangene Fill-Pakete: {fill_count}") + + if raw_packets: + print("\n=== LETZTES PAKET (hex dump) ===") + hex_dump(raw_packets[-1], f"Paket #{fill_count}") + + if len(raw_packets) >= 2: + print("\n=== VERGLEICH: Preis-relevante Bytes in allen Paketen ===") + print(f" {'Offset':<8} ", end="") + for i in range(min(len(raw_packets), 12)): + print(f"{'Paket'+str(i+1):>12}", end="") + print() + + # Zeige uint32-Werte für Offsets 96-200 + for off in range(88, 200, 4): + row = f" [{off:3d}] " + interesting = False + vals = [] + for pkt in raw_packets[:12]: + if len(pkt) > off + 3: + v = struct.unpack_from("12}" + else: + row += f"{'N/A':>12}" + + # Interessant wenn Werte variieren (könnten Preise sein) + if vals and max(vals) != min(vals): + interesting = True + if off in (128, 144, 152, 160): + interesting = True + + if interesting: + print(row + " ← variiert!" if max(vals) != min(vals) else row) + + sock.close() + print("\nFertig.") + +if __name__ == "__main__": + main() diff --git a/trade_parser.py b/trade_parser.py new file mode 100644 index 0000000..114c0e5 --- /dev/null +++ b/trade_parser.py @@ -0,0 +1,456 @@ +"""Sierra Chart TradeActivityLog parser. + +Binary .data files are decoded field-by-field (TLV format): + [uint32 LE: field_id] [uint32 LE: length] [bytes * length] + + Field 0x66 → SCDateTime (int64 LE, microseconds since 1899-12-30) ← timestamp + Field 0x67 → symbol string + Field 0x68 → log message text + +parse_binary_log() returns [(datetime_or_None, str)] for each log entry. +All internal parsers work on this list; timestamps propagate to _make_trade. + +Sim accounts (contain 'sim'/'simulated' in account name): + - Entry: User order entry ... AOE=true (not a Flatten) + - Entry price: first 'Trade simulation fill ... Last: X' after signal + - Direction: 'Modifying Attached Order from parent fill. Parent base price: B. + New price: P' → Long if P > B + - Exit type 1 (TP/SL): next simulation fill at price ≠ entry price + - Exit type 2 (Flatten): 'Flatten&CancelAllOrders | Last: X. Current Position + quantity: N' → exit = X, lots = |N| + +Live accounts: + - Entry: Updated Internal Position Quantity to N. Previous: 0 + - Entry price: first 'Modifying Attached Order from parent fill. + Parent base price: X' after entry update + - Exit: Updated Internal Position Quantity to 0. Previous: N + - Exit price (priority order): + 1. 'Flatten&CancelAllOrders | Last: X' + 2. 'Rithmic Direct - DTC (Filled)' + 'Limit' nearby → tp_price + 3. 'Rithmic Direct - DTC (Filled)' + 'Stop' nearby → sl_price + 4. 'User order entry | Last: X | AOE=true' (Reverse entry) +""" + +import glob +import os +import re +import struct +from datetime import datetime, timedelta + +_LOG_GLOB = "TradeActivityLog_*_UTC.{account}.data" + +# SCDateTime: int64 microseconds since 1899-12-30 +_SC_EPOCH = datetime(1899, 12, 30) +_SC_TS_MIN = int((datetime(2000, 1, 1) - _SC_EPOCH).total_seconds() * 1_000_000) +_SC_TS_MAX = int((datetime(2060, 1, 1) - _SC_EPOCH).total_seconds() * 1_000_000) + +_FIELD_DATETIME = 0x66 # SCDateTime +_FIELD_MESSAGE = 0x68 # log message text + + +# ── File discovery ───────────────────────────────────────────────────────────── + +def find_sc_log_dir(): + """Return first detected SC TradeActivityLogs directory, or None.""" + patterns = [ + "~/.local/share/bottles/bottles/*/drive_c/SierraChart*/TradeActivityLogs/", + "~/Games/SierraChart*/TradeActivityLogs/", + "~/Games/sierra-chart*/TradeActivityLogs/", + "~/.wine/drive_c/SierraChart*/TradeActivityLogs/", + "~/.PlayOnLinux/wineprefix/*/drive_c/SierraChart*/TradeActivityLogs/", + ] + for pattern in patterns: + matches = glob.glob(os.path.expanduser(pattern)) + if matches: + return matches[0] + return None + + +def find_log_files(log_dir, accounts): + """Return [(filepath, account_name)] for all matching log files.""" + if not log_dir or not os.path.isdir(log_dir): + return [] + result = [] + for account in accounts: + pattern = os.path.join(log_dir, _LOG_GLOB.format(account=account)) + for path in glob.glob(pattern): + result.append((path, account)) + return result + + +# ── Binary log parser ────────────────────────────────────────────────────────── + +def parse_binary_log(filepath): + """Read binary SC .data file. + + Returns [(datetime_or_None, message_str)] — one entry per log line, + timestamped with the SCDateTime field that preceded it in the file. + """ + try: + with open(filepath, "rb") as f: + data = f.read() + except OSError: + return [] + + entries = [] + i = 0 + n = len(data) + cur_ts = None + + while i + 8 <= n: + try: + field_id, field_len = struct.unpack_from(" n: + break + + value = data[i : i + field_len] + i += field_len + + if field_id == _FIELD_DATETIME and field_len == 8: + raw, = struct.unpack(" 0: + text = value.rstrip(b"\x00").decode("ascii", errors="replace") + if text.strip(): + entries.append((cur_ts, text)) + + return entries + + +extract_strings = parse_binary_log # alias used by tray_app + + +# ── Public entry point ───────────────────────────────────────────────────────── + +def parse_trades(entries, account, instruments, trade_date=None): + """Parse all complete trades from [(datetime_or_None, str)] entry list.""" + if _is_sim(account): + return _parse_sim(entries, account, instruments, trade_date) + return _parse_live(entries, account, instruments, trade_date) + + +# ── Shared helpers ───────────────────────────────────────────────────────────── + +def _is_sim(account): + low = account.lower() + return "sim" in low or "simulated" in low + + +def _text(entry): + """Extract the string from a (ts, str) entry.""" + return entry[1] + + +def _ts(entry): + """Extract the datetime (or None) from a (ts, str) entry.""" + return entry[0] + + +def _extract_instrument(s, known): + m = re.search(r'\b([A-Z]{2,4})[A-Z]\d', s) + if m and m.group(1) in known: + return m.group(1) + return None + + +_PRICE = r"(\d+(?:\.\d+)?)" # matches 29744.25 but not a trailing bare period + + +def _ts_str(ts, trade_date=None): + """Format a datetime for the API: actual time → HH:MM:SS; fallback → 00:00:00.""" + if ts: + return ts.strftime("%Y-%m-%d %H:%M:%S") + if trade_date: + return f"{trade_date} 00:00:00" + return datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + +def _find_direction(entries, start, n, window=40): + """Long if first Modifying new_price > base, Short otherwise.""" + for j in range(start, min(start + window, n)): + s = _text(entries[j]) + if "Order modified internally" in s: + continue + m = re.search( + r"Modifying Attached Order from parent fill\." + r" Parent base price: " + _PRICE + r"\. New price: " + _PRICE, s) + if m: + return "Long" if float(m.group(2)) > float(m.group(1)) else "Short" + return None + + +def _nearby_order_type(entries, dtc_idx, n, window=4): + """After DTC (Filled) at dtc_idx, look at nearby strings for order type.""" + for k in range(dtc_idx + 1, min(dtc_idx + window, n)): + s = _text(entries[k]) + if "Market" in s: + return "Market" + if "Limit" in s: + return "Limit" + if "Stop" in s: + return "Stop" + return None + + +def _make_trade(instrument, direction, lots, entry_price, exit_price, + account, instruments, entry_ts=None, exit_ts=None, trade_date=None): + cfg = instruments[instrument] + tick_size = cfg["tick_size"] + tick_value = cfg["tick_value"] + + if direction == "Long": + pnl_ticks = round((exit_price - entry_price) / tick_size) * lots + else: + pnl_ticks = round((entry_price - exit_price) / tick_size) * lots + + pnl = round(pnl_ticks * tick_value, 2) + + entry_str = _ts_str(entry_ts, trade_date) + exit_str = _ts_str(exit_ts, trade_date) + + if direction == "Long": + exec_str = (f"Buy {lots} @ {entry_price} / {entry_str}," + f"Sell {lots} @ {exit_price} / {exit_str}") + else: + exec_str = (f"Sell {lots} @ {entry_price} / {entry_str}," + f"Buy {lots} @ {exit_price} / {exit_str}") + + return { + "trade_id": f"{account}_{instrument}_{entry_price}_{exit_price}", + "instrument": instrument, + "direction": direction, + "lots": lots, + "entry_price": entry_price, + "exit_price": exit_price, + "entry_datetime": entry_str, + "exit_datetime": exit_str, + "pnl": pnl, + "pnl_ticks": pnl_ticks, + "executions": exec_str, + "account": account, + } + + +# ── Sim parser ───────────────────────────────────────────────────────────────── + +def _parse_sim(entries, account, instruments, trade_date=None): + trades = [] + current_inst = None + i = 0 + n = len(entries) + + while i < n: + s = _text(entries[i]) + + inst = _extract_instrument(s, instruments) + if inst: + current_inst = inst + + if (re.search(r"User order entry.+AOE=true", s) + and "Flatten" not in s + and current_inst): + + entry_idx, entry_price = _sim_next_fill(entries, i + 1, n) + if entry_idx is None: + i += 1 + continue + + direction = _find_direction(entries, i + 1, n) + + exit_idx, exit_price, lots, exit_direction = _sim_find_exit( + entries, entry_idx + 1, n, entry_price) + if exit_idx is None: + i += 1 + continue + + if direction is None: + direction = exit_direction + if direction is None: + i += 1 + continue + + if lots is None: + lots = 1 + + entry_ts = _ts(entries[entry_idx]) + exit_ts = _ts(entries[exit_idx]) + + trades.append(_make_trade( + current_inst, direction, lots, + entry_price, exit_price, account, instruments, + entry_ts=entry_ts, exit_ts=exit_ts, trade_date=trade_date)) + i = exit_idx + 1 + continue + + i += 1 + return trades + + +def _sim_next_fill(entries, start, n, window=60): + """Return (idx, last_price) of next simulation fill.""" + for j in range(start, min(start + window, n)): + m = re.search( + r"simulation fill\. Bid: \S+ Ask: \S+ Last: " + _PRICE, + _text(entries[j])) + if m: + return j, float(m.group(1)) + return None, None + + +def _sim_find_exit(entries, start, n, entry_price, window=400): + """Find Sim trade exit. Returns (exit_idx, exit_price, lots, direction_or_None).""" + for j in range(start, min(start + window, n)): + s = _text(entries[j]) + + m_flat = re.search( + r"Flatten&CancelAllOrders \| Last: " + _PRICE + + r".*?Current Position quantity: (-?\d+)", s) + if m_flat: + qty = int(m_flat.group(2)) + direction = "Long" if qty > 0 else "Short" + return j, float(m_flat.group(1)), abs(qty), direction + + m_fill = re.search( + r"simulation fill\. Bid: \S+ Ask: \S+ Last: " + _PRICE, s) + if m_fill: + price = float(m_fill.group(1)) + if abs(price - entry_price) > 0.1: + fill_type = _nearby_order_type(entries, j, n) + if fill_type == "Limit": + direction = "Long" if price > entry_price else "Short" + elif fill_type == "Stop": + direction = "Long" if price < entry_price else "Short" + else: + direction = None + return j, price, None, direction + + return None, None, None, None + + +# ── Live parser ──────────────────────────────────────────────────────────────── + +def _parse_live(entries, account, instruments, trade_date=None): + trades = [] + current_inst = None + last_signal_price = None + i = 0 + n = len(entries) + + while i < n: + s = _text(entries[i]) + + inst = _extract_instrument(s, instruments) + if inst: + current_inst = inst + + m_sig = re.search( + r"User order entry \| Last: " + _PRICE + r" \| AOE=true", s) + if m_sig and "Flatten" not in s: + last_signal_price = float(m_sig.group(1)) + + m_entry = re.search( + r"Updated Internal Position Quantity to (-?\d+)\. Previous: 0", s) + if m_entry and current_inst: + new_qty = int(m_entry.group(1)) + if new_qty == 0: + i += 1 + continue + + direction = "Long" if new_qty > 0 else "Short" + lots = abs(new_qty) + entry_ts = _ts(entries[i]) + + entry_price, tp_price, sl_price = _live_bracket_prices(entries, i + 1, n) + + if entry_price is None: + entry_price = last_signal_price + if entry_price is None: + i += 1 + continue + + exit_idx = _live_exit_idx(entries, i + 1, n) + if exit_idx is None: + i += 1 + continue + + exit_price = _live_exit_price(entries, i + 1, exit_idx, tp_price, sl_price, n) + if exit_price is None: + i += 1 + continue + + exit_ts = _ts(entries[exit_idx]) + last_signal_price = None + + trades.append(_make_trade( + current_inst, direction, lots, + entry_price, exit_price, account, instruments, + entry_ts=entry_ts, exit_ts=exit_ts, trade_date=trade_date)) + i = exit_idx + 1 + continue + + i += 1 + return trades + + +def _live_bracket_prices(entries, start, n, window=40): + """Return (entry_price, tp_price, sl_price) from bracket modification strings.""" + entry_price = None + bracket_new_prices = [] + + for j in range(start, min(start + window, n)): + s = _text(entries[j]) + if "Order modified internally" in s: + continue + m = re.search( + r"Modifying Attached Order from parent fill\." + r" Parent base price: " + _PRICE + r"\. New price: " + _PRICE, s) + if m: + if entry_price is None: + entry_price = float(m.group(1)) + bracket_new_prices.append(float(m.group(2))) + if len(bracket_new_prices) >= 2: + break + + tp_price = bracket_new_prices[0] if len(bracket_new_prices) >= 1 else None + sl_price = bracket_new_prices[1] if len(bracket_new_prices) >= 2 else None + return entry_price, tp_price, sl_price + + +def _live_exit_idx(entries, start, n): + """Find index of position returning to 0.""" + for j in range(start, n): + if re.search( + r"Updated Internal Position Quantity to 0\. Previous: -?\d+", + _text(entries[j])): + return j + return None + + +def _live_exit_price(entries, start, exit_idx, tp_price, sl_price, n): + """Determine exit price from events between entry and exit position updates.""" + for j in range(start, exit_idx): + m = re.search(r"Flatten&CancelAllOrders \| Last: " + _PRICE, + _text(entries[j])) + if m: + return float(m.group(1)) + + for j in range(start, exit_idx): + if "Rithmic Direct - DTC (Filled)" in _text(entries[j]): + otype = _nearby_order_type(entries, j, exit_idx) + if otype == "Limit" and tp_price is not None: + return tp_price + if otype == "Stop" and sl_price is not None: + return sl_price + + for j in range(start, exit_idx): + s = _text(entries[j]) + m = re.search(r"User order entry \| Last: " + _PRICE + r" \| AOE=true", s) + if m and "Flatten" not in s: + return float(m.group(1)) + + return None diff --git a/tralgo_api.py b/tralgo_api.py new file mode 100644 index 0000000..fa4b5ad --- /dev/null +++ b/tralgo_api.py @@ -0,0 +1,57 @@ +import requests + +TRALGO_URL = "https://tralgo.app/wp-admin/admin-ajax.php" + +_HEADERS = { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", + "X-Requested-With": "XMLHttpRequest", + "Origin": "https://tralgo.app", + "Referer": "https://tralgo.app/analytics-logbuch/", +} + + +def build_session(cookies): + """Create a requests.Session with tralgo.app cookies set.""" + session = requests.Session() + for name, value in cookies.items(): + session.cookies.set(name, value, domain="tralgo.app") + return session + + +def send_trade(session, trade, api_key): + """POST trade to Tralgo. Raises on HTTP error. Returns parsed JSON.""" + payload = { + "action": "insert_new_trade", + "tradingaccount": trade["account"], + "instrument": trade["instrument"], + "type": trade["direction"], + "lots": trade["lots"], + "entry_price": trade["entry_price"], + "exit_price": trade["exit_price"], + "entry_datetime": trade["entry_datetime"], + "exit_datetime": trade["exit_datetime"], + "fees": 0, + "pnl": trade["pnl"], + "net_pnl": trade["pnl"], + "pnl_ticks": trade["pnl_ticks"], + "tp_price": 0, "sl_price": 0, + "tp_ticks": 0, "tp_usd": 0, + "sl_ticks": 0, "sl_usd": 0, + "setup": "", + "entry_specifications": "", + "exit_specifications": "", + "mistakes": "", + "market_conditions": "", + "path": "", + "trade_rating": 0, + "review_status": "Unreviewed", + "journal": "", + "executions": trade["executions"], + "transfer_token": api_key, + } + resp = session.post(TRALGO_URL, data=payload, headers=_HEADERS, timeout=15) + resp.raise_for_status() + try: + return resp.json() + except Exception: + return resp.text diff --git a/tray_app.py b/tray_app.py new file mode 100644 index 0000000..2eae163 --- /dev/null +++ b/tray_app.py @@ -0,0 +1,842 @@ +import os +import queue +import threading +import tkinter as tk +from datetime import datetime +from tkinter import messagebox, ttk + +from config import (DEFAULT_INSTRUMENTS, load_config, load_sent, save_config, + save_sent) +from cookie_reader import find_cookies +from dtc_client import DTCClient, fills_to_trades, monitor_realtime +from tralgo_api import build_session, send_trade + +try: + from PIL import Image, ImageDraw, ImageTk + _PIL_AVAILABLE = True +except ImportError: + _PIL_AVAILABLE = False + +try: + import pystray + _PYSTRAY_AVAILABLE = True +except ImportError: + _PYSTRAY_AVAILABLE = False + +_ICON_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "icon.png") + + +# ── Config window ───────────────────────────────────────────────────────────── + +class ConfigWindow: + _PRESETS = list(DEFAULT_INSTRUMENTS.keys()) # MNQ, NQ, ES, MES + + def __init__(self, parent, config, on_save): + self.win = tk.Toplevel(parent) + self.win.title("Einstellungen – GizerBridge") + self.win.resizable(False, False) + self.win.grab_set() + self._config = config + self._on_save = on_save + self._inst_vars = {} + self._inst_frame = None + self._build() + self.win.protocol("WM_DELETE_WINDOW", self.win.destroy) + + def _build(self): + cfg = self._config + pad = {"padx": 10, "pady": 3} + + self._api_key_var = self._labeled_entry("API Key *", cfg.get("api_key", ""), **pad) + self._email_var = self._labeled_entry("Tralgo E-Mail", cfg.get("email", ""), **pad) + self._dtc_host_var = self._labeled_entry( + "SC DTC Host", cfg.get("dtc_host", "localhost"), **pad) + + row = tk.Frame(self.win) + row.pack(fill=tk.X, **pad) + tk.Label(row, text="SC DTC Port", width=20, anchor="w").pack(side=tk.LEFT) + self._dtc_port_var = tk.StringVar(value=str(cfg.get("dtc_port", 11099))) + tk.Entry(row, textvariable=self._dtc_port_var, width=8).pack(side=tk.LEFT) + tk.Label(row, text="(Sierra Chart → DTC Protocol Server aktivieren)", + fg="gray", font=("", 8)).pack(side=tk.LEFT, padx=(8, 0)) + + tk.Label(self.win, text="Konten:", anchor="w", + font=("", 9, "bold")).pack(fill=tk.X, padx=10, pady=(10, 2)) + acc_outer = tk.Frame(self.win) + acc_outer.pack(fill=tk.X, padx=10) + self._acc_listbox = tk.Listbox(acc_outer, height=4, width=48, selectmode=tk.SINGLE) + self._acc_listbox.pack(side=tk.LEFT) + for acc in cfg.get("accounts", []): + self._acc_listbox.insert(tk.END, acc) + + add_row = tk.Frame(self.win) + add_row.pack(fill=tk.X, padx=10, pady=2) + self._acc_entry = tk.Entry(add_row, width=35) + self._acc_entry.pack(side=tk.LEFT) + self._acc_entry.bind("", lambda _: self._add_account()) + tk.Button(add_row, text="Hinzufügen", command=self._add_account).pack(side=tk.LEFT, padx=4) + tk.Button(add_row, text="Entfernen", command=self._remove_account).pack(side=tk.LEFT) + + tk.Label(self.win, text="Instrumente:", anchor="w", + font=("", 9, "bold")).pack(fill=tk.X, padx=10, pady=(10, 2)) + outer = tk.LabelFrame(self.win, text="") + outer.pack(fill=tk.X, padx=10, pady=2) + + hdr = tk.Frame(outer) + hdr.pack(fill=tk.X, padx=4, pady=(4, 0)) + tk.Label(hdr, text="", width=3).pack(side=tk.LEFT) + tk.Label(hdr, text="Symbol", width=10, anchor="w").pack(side=tk.LEFT) + tk.Label(hdr, text="Tick-Größe", width=11, anchor="w").pack(side=tk.LEFT) + tk.Label(hdr, text="Tick-Wert $",width=11, anchor="w").pack(side=tk.LEFT) + + self._inst_frame = tk.Frame(outer) + self._inst_frame.pack(fill=tk.X) + + existing = cfg.get("instruments", {}) + rendered = set() + for name in self._PRESETS: + self._add_inst_row(name, existing.get(name, DEFAULT_INSTRUMENTS.get(name, {}))) + rendered.add(name) + for name, data in existing.items(): + if name not in rendered: + self._add_inst_row(name, data) + + custom = tk.Frame(outer) + custom.pack(fill=tk.X, padx=4, pady=6) + tk.Label(custom, text="Weiteres:").pack(side=tk.LEFT) + self._custom_name = tk.Entry(custom, width=7) + self._custom_name.pack(side=tk.LEFT, padx=(3, 6)) + tk.Label(custom, text="Tick-Größe:").pack(side=tk.LEFT) + self._custom_tick_size = tk.Entry(custom, width=6) + self._custom_tick_size.insert(0, "0.25") + self._custom_tick_size.pack(side=tk.LEFT, padx=(2, 6)) + tk.Label(custom, text="Tick-Wert $:").pack(side=tk.LEFT) + self._custom_tick_value = tk.Entry(custom, width=6) + self._custom_tick_value.pack(side=tk.LEFT, padx=2) + tk.Button(custom, text="+", width=3, command=self._add_custom_inst).pack(side=tk.LEFT, padx=4) + + btn = tk.Frame(self.win) + btn.pack(pady=10) + tk.Button(btn, text="Speichern", width=12, command=self._save).pack(side=tk.LEFT, padx=8) + tk.Button(btn, text="Abbrechen", width=12, command=self.win.destroy).pack(side=tk.LEFT) + + def _labeled_entry(self, label, value, **pack_kwargs): + row = tk.Frame(self.win) + row.pack(fill=tk.X, **pack_kwargs) + tk.Label(row, text=label, width=20, anchor="w").pack(side=tk.LEFT) + var = tk.StringVar(value=value) + tk.Entry(row, textvariable=var, width=40).pack(side=tk.LEFT) + return var + + def _add_inst_row(self, name, data): + if name in self._inst_vars: + return + row = tk.Frame(self._inst_frame) + row.pack(fill=tk.X, padx=4, pady=1) + preset_defaults = DEFAULT_INSTRUMENTS.get(name, {}) + enabled_var = tk.BooleanVar(value=data.get("enabled", name in self._PRESETS)) + tick_size_var = tk.StringVar(value=str(data.get("tick_size", preset_defaults.get("tick_size", 0.25)))) + tick_value_var = tk.StringVar(value=str(data.get("tick_value", preset_defaults.get("tick_value", 0.0)))) + tk.Checkbutton(row, variable=enabled_var).pack(side=tk.LEFT) + tk.Label(row, text=name, width=10, anchor="w").pack(side=tk.LEFT) + tk.Entry(row, textvariable=tick_size_var, width=9).pack(side=tk.LEFT, padx=2) + tk.Entry(row, textvariable=tick_value_var, width=9).pack(side=tk.LEFT, padx=2) + self._inst_vars[name] = { + "enabled": enabled_var, + "tick_size": tick_size_var, + "tick_value": tick_value_var, + } + + def _add_custom_inst(self): + name = self._custom_name.get().strip().upper() + if not name: + return + if name in self._inst_vars: + messagebox.showinfo("Hinweis", f"{name} ist bereits vorhanden.", parent=self.win) + return + try: + ts = float(self._custom_tick_size.get()) + tv = float(self._custom_tick_value.get()) + except ValueError: + messagebox.showerror("Fehler", "Ungültige Zahlenwerte.", parent=self.win) + return + self._add_inst_row(name, {"enabled": True, "tick_size": ts, "tick_value": tv}) + self._custom_name.delete(0, tk.END) + self._custom_tick_value.delete(0, tk.END) + + def _add_account(self): + name = self._acc_entry.get().strip() + if name and name not in self._acc_listbox.get(0, tk.END): + self._acc_listbox.insert(tk.END, name) + self._acc_entry.delete(0, tk.END) + + def _remove_account(self): + sel = self._acc_listbox.curselection() + if sel: + self._acc_listbox.delete(sel[0]) + + def _save(self): + api_key = self._api_key_var.get().strip() + if not api_key: + messagebox.showerror("Fehler", "API Key ist ein Pflichtfeld.", parent=self.win) + return + try: + dtc_port = int(self._dtc_port_var.get().strip()) + except ValueError: + messagebox.showerror("Fehler", "DTC Port muss eine Zahl sein.", parent=self.win) + return + instruments = {} + for name, v in self._inst_vars.items(): + try: + ts = float(v["tick_size"].get()) + tv = float(v["tick_value"].get()) + except ValueError: + messagebox.showerror("Fehler", f"Ungültige Tick-Werte für {name}.", parent=self.win) + return + instruments[name] = { + "enabled": v["enabled"].get(), + "tick_size": ts, + "tick_value": tv, + } + self._on_save({ + "api_key": api_key, + "email": self._email_var.get().strip(), + "dtc_host": self._dtc_host_var.get().strip() or "localhost", + "dtc_port": dtc_port, + "accounts": list(self._acc_listbox.get(0, tk.END)), + "instruments": instruments, + }) + self.win.destroy() + + +# ── Manual import window ────────────────────────────────────────────────────── + +class ManualImportWindow: + _CHK_ON = "☑" + _CHK_OFF = "☐" + + _COLS = ("chk", "date", "account", "instrument", "direction", + "entry", "exit", "pnl", "ticks", "status") + _HDRS = ("", "Datum", "Konto", "Symbol", "Richtung", + "Entry", "Exit", "PnL $", "Ticks", "Status") + _WIDTHS = (30, 100, 140, 65, 70, 80, 80, 70, 55, 70) + + def __init__(self, parent, config, sent, session, api_key, on_imported): + self.win = tk.Toplevel(parent) + self.win.title("Manueller Import – GizerBridge") + self.win.geometry("870x520") + self.win.resizable(True, True) + self._config = config + self._sent = sent # set of trade IDs already sent + self._session = session # requests.Session or None + self._api_key = api_key + self._on_imported = on_imported # callback(trade_id) → updates App.sent + self._rows = [] # [(iid, trade_dict, is_sent)] + self._build() + + def _build(self): + # ── Filter bar ──────────────────────────────────────────────────────── + ctrl = tk.Frame(self.win) + ctrl.pack(fill=tk.X, padx=10, pady=(10, 4)) + + tk.Label(ctrl, text="Konto:").pack(side=tk.LEFT) + accounts = ["Alle"] + list(self._config.get("accounts", [])) + self._account_var = tk.StringVar(value=accounts[0] if accounts else "") + ttk.Combobox(ctrl, textvariable=self._account_var, values=accounts, + width=22, state="readonly").pack(side=tk.LEFT, padx=(4, 14)) + + tk.Label(ctrl, text="Von:").pack(side=tk.LEFT) + self._date_from_var = tk.StringVar(value="2026-01-01") + tk.Entry(ctrl, textvariable=self._date_from_var, width=11).pack(side=tk.LEFT, padx=(4, 14)) + + tk.Label(ctrl, text="Bis:").pack(side=tk.LEFT) + self._date_to_var = tk.StringVar(value=datetime.now().strftime("%Y-%m-%d")) + tk.Entry(ctrl, textvariable=self._date_to_var, width=11).pack(side=tk.LEFT, padx=(4, 14)) + + self._search_btn = tk.Button(ctrl, text="Suchen", command=self._search) + self._search_btn.pack(side=tk.LEFT) + + self._count_lbl = tk.Label(ctrl, text="", fg="gray") + self._count_lbl.pack(side=tk.LEFT, padx=10) + + tk.Label(self.win, + text="ℹ Timestamps direkt aus SC via DTC — echte Füll-Zeiten.", + fg="#888888", font=("", 8), anchor="w", + ).pack(fill=tk.X, padx=11, pady=(0, 2)) + + # ── Treeview ────────────────────────────────────────────────────────── + tree_outer = tk.Frame(self.win) + tree_outer.pack(fill=tk.BOTH, expand=True, padx=10, pady=4) + + vsb = ttk.Scrollbar(tree_outer, orient="vertical") + hsb = ttk.Scrollbar(tree_outer, orient="horizontal") + vsb.pack(side=tk.RIGHT, fill=tk.Y) + hsb.pack(side=tk.BOTTOM, fill=tk.X) + + self._tree = ttk.Treeview( + tree_outer, columns=self._COLS, show="headings", + yscrollcommand=vsb.set, xscrollcommand=hsb.set, + selectmode="none", + ) + vsb.config(command=self._tree.yview) + hsb.config(command=self._tree.xview) + + for col, hdr, w in zip(self._COLS, self._HDRS, self._WIDTHS): + anchor = "e" if col in ("entry", "exit", "pnl", "ticks") else "w" + self._tree.heading(col, text=hdr, anchor=anchor) + self._tree.column(col, width=w, minwidth=w, + stretch=(col == "account"), anchor=anchor) + + self._tree.tag_configure("sent", foreground="#aaaaaa") + self._tree.tag_configure("sel", foreground="#000000", background="#e8f4e8") + self._tree.tag_configure("desel", foreground="#333333") + self._tree.tag_configure("ok", foreground="darkgreen", background="#e8f4e8") + self._tree.tag_configure("err", foreground="#cc0000") + + self._tree.bind("", self._on_click) + self._tree.pack(fill=tk.BOTH, expand=True) + + # ── Bottom bar ──────────────────────────────────────────────────────── + bot = tk.Frame(self.win) + bot.pack(fill=tk.X, padx=10, pady=(4, 10)) + + tk.Button(bot, text="Alle auswählen", command=self._select_all).pack(side=tk.LEFT, padx=(0, 4)) + tk.Button(bot, text="Keine", command=self._select_none).pack(side=tk.LEFT, padx=4) + + self._status_lbl = tk.Label(bot, text="", fg="gray") + self._status_lbl.pack(side=tk.LEFT, padx=12) + + self._import_btn = tk.Button( + bot, text="Ausgewählte importieren", + command=self._import_selected, state=tk.DISABLED, + ) + self._import_btn.pack(side=tk.RIGHT) + + # ── Search ──────────────────────────────────────────────────────────────── + + def _search(self): + self._tree.delete(*self._tree.get_children()) + self._rows.clear() + self._import_btn.config(state=tk.DISABLED) + self._count_lbl.config(text="Verbinde mit SC DTC…") + self._status_lbl.config(text="") + self._search_btn.config(state=tk.DISABLED) + self.win.update_idletasks() + + account_sel = self._account_var.get() + date_from = self._date_from_var.get().strip() + date_to = self._date_to_var.get().strip() + cfg_accounts = self._config.get("accounts", []) + accounts = cfg_accounts if account_sel == "Alle" else [account_sel] + instruments = {k: v for k, v in self._config.get("instruments", {}).items() + if v.get("enabled", True)} + host = self._config.get("dtc_host", "localhost") + port = self._config.get("dtc_port", 11099) + + def _run(): + all_fills = [] + error_msg = None + try: + client = DTCClient(host, port) + client.connect() + client.logon() + for account in accounts: + fills = client.request_fills(account, num_days=90) + all_fills.extend(fills) + client.disconnect() + except Exception as e: + error_msg = str(e) + + if error_msg: + self.win.after(0, lambda: self._search_done([], error_msg)) + return + + # Filter by date range + filtered = [] + for f in all_fills: + if not f.get("datetime"): + filtered.append(f) + continue + d = f["datetime"].strftime("%Y-%m-%d") + if date_from and d < date_from: + continue + if date_to and d > date_to: + continue + filtered.append(f) + + trades = fills_to_trades(filtered, instruments) + self.win.after(0, lambda: self._search_done(trades, None)) + + threading.Thread(target=_run, daemon=True).start() + + def _search_done(self, trades, error_msg): + self._search_btn.config(state=tk.NORMAL) + if error_msg: + self._count_lbl.config(text=f"Verbindungsfehler: {error_msg[:60]}") + return + + total = 0 + for trade in trades: + is_sent = trade["trade_id"] in self._sent + tag = "sent" if is_sent else "desel" + pnl_fmt = f"{trade['pnl']:+.2f}" if trade["pnl"] != 0 else "0.00" + date_str = trade["entry_datetime"][:10] if trade["entry_datetime"] else "" + iid = self._tree.insert( + "", tk.END, + values=( + self._CHK_OFF, + date_str, + trade["account"], + trade["instrument"], + trade["direction"], + trade["entry_price"], + trade["exit_price"], + pnl_fmt, + trade["pnl_ticks"], + "bereits importiert" if is_sent else "", + ), + tags=(tag,), + ) + self._rows.append((iid, trade, is_sent)) + total += 1 + + already = sum(1 for _, _, s in self._rows if s) + parts = [f"{total} Trade(s) gefunden"] + if already: + parts.append(f"{already} bereits importiert") + self._count_lbl.config(text=" – ".join(parts)) + + # ── Checkbox interaction ────────────────────────────────────────────────── + + def _on_click(self, event): + iid = self._tree.identify_row(event.y) + if not iid or self._tree.identify_region(event.x, event.y) != "cell": + return + for row_iid, trade, is_sent in self._rows: + if row_iid != iid: + continue + vals = list(self._tree.item(iid, "values")) + if vals[0] == self._CHK_OFF: + vals[0] = self._CHK_ON + self._tree.item(iid, values=vals, tags=("sel",)) + else: + vals[0] = self._CHK_OFF + self._tree.item(iid, values=vals, tags=("sent" if is_sent else "desel",)) + break + self._refresh_import_btn() + + def _select_all(self): + for iid, _, is_sent in self._rows: + vals = list(self._tree.item(iid, "values")) + vals[0] = self._CHK_ON + self._tree.item(iid, values=vals, tags=("sel",)) + self._refresh_import_btn() + + def _select_none(self): + for iid, _, is_sent in self._rows: + vals = list(self._tree.item(iid, "values")) + vals[0] = self._CHK_OFF + self._tree.item(iid, values=vals, tags=("sent" if is_sent else "desel",)) + self._refresh_import_btn() + + def _refresh_import_btn(self): + any_checked = any( + self._tree.item(iid, "values")[0] == self._CHK_ON + for iid, _, _ in self._rows + ) + self._import_btn.config(state=tk.NORMAL if any_checked else tk.DISABLED) + + # ── Import ──────────────────────────────────────────────────────────────── + + def _import_selected(self): + if self._session is None: + messagebox.showerror( + "Keine Verbindung", + "Keine aktive Tralgo-Sitzung.\n" + "Bitte Firefox-Cookie prüfen und App neu starten.", + parent=self.win, + ) + return + + to_send = [ + (iid, trade) + for iid, trade, _ in self._rows + if self._tree.item(iid, "values")[0] == self._CHK_ON + ] + if not to_send: + messagebox.showinfo("Hinweis", "Keine Trades ausgewählt.", parent=self.win) + return + + self._import_btn.config(state=tk.DISABLED) + self._search_btn.config(state=tk.DISABLED) + self._status_lbl.config(text=f"Importiere {len(to_send)} Trade(s)…") + + def _run(): + ok = err = 0 + for iid, trade in to_send: + try: + send_trade(self._session, trade, self._api_key) + self._on_imported(trade["trade_id"]) + ok += 1 + self.win.after(0, lambda i=iid, t=trade: self._mark_ok(i, t)) + except Exception as e: + err += 1 + self.win.after(0, lambda i=iid, msg=str(e): self._mark_err(i, msg)) + summary = f"Fertig: {ok} importiert" + if err: + summary += f", {err} Fehler" + self.win.after(0, lambda: self._status_lbl.config(text=summary)) + self.win.after(0, lambda: self._search_btn.config(state=tk.NORMAL)) + # Re-enable import for any rows that still failed + remaining = any( + not is_sent and self._tree.item(r_iid, "values")[0] == self._CHK_ON + for r_iid, _, is_sent in self._rows + ) + if remaining: + self.win.after(0, lambda: self._import_btn.config(state=tk.NORMAL)) + + threading.Thread(target=_run, daemon=True).start() + + def _mark_ok(self, iid, trade): + vals = list(self._tree.item(iid, "values")) + vals[0] = self._CHK_ON + vals[9] = "✅" + self._tree.item(iid, values=vals, tags=("ok",)) + + def _mark_err(self, iid, msg): + vals = list(self._tree.item(iid, "values")) + vals[9] = f"❌ {msg[:30]}" + self._tree.item(iid, values=vals, tags=("err",)) + + +# ── Main App ────────────────────────────────────────────────────────────────── + +class App: + def __init__(self): + self.root = tk.Tk() + self.root.withdraw() + if _PIL_AVAILABLE: + try: + _base = Image.open(_ICON_PATH).convert("RGBA") + # multiple sizes → WM picks best for taskbar / alt-tab + self._wm_icons = [ + ImageTk.PhotoImage(_base.resize((sz, sz), Image.LANCZOS)) + for sz in (256, 128, 64, 48, 32) + ] + self.root.iconphoto(True, *self._wm_icons) + except Exception: + pass + self.config = load_config() + self.sent = load_sent() + self.session = None + self._status_color = "yellow" + self._status_msg = "Initialisierung..." + self._log_entries = [] + self._log_lock = threading.Lock() + self._stop = threading.Event() + self._queue = queue.Queue() + self._monitor_thread = None + + # ── Public entry point ──────────────────────────────────────────────────── + + def run(self): + self.root.after(200, self._process_queue) + self._setup_tray() + + if not self.config.get("api_key"): + self.root.after(100, lambda: ConfigWindow( + self.root, self.config, self._on_config_saved)) + else: + self._start_monitor() + + self._show_main_window() + self.root.mainloop() + + def _set_icon_color(self, color): + self._status_color = color + if hasattr(self, "_tray") and _PIL_AVAILABLE: + try: + self._tray.icon = self._make_tray_image(color) + except Exception: + pass + + # ── Pystray helpers ─────────────────────────────────────────────────────── + + def _make_tray_image(self, color="yellow"): + """256×256 logo with a small colored status dot in the bottom-right.""" + img = Image.open(_ICON_PATH).convert("RGBA").resize((256, 256), Image.LANCZOS) + dot_colors = { + "green": (0, 200, 0, 255), + "red": (220, 0, 0, 255), + "yellow": (230, 190, 0, 255), + } + c = dot_colors.get(color, (160, 160, 160, 255)) + draw = ImageDraw.Draw(img) + r = 30 + x0, y0 = 256 - 2*r - 8, 256 - 2*r - 8 + draw.ellipse([x0, y0, x0 + 2*r, y0 + 2*r], + fill=c, outline=(0, 0, 0, 160), width=3) + return img + + def _setup_tray(self): + if not _PYSTRAY_AVAILABLE or not _PIL_AVAILABLE: + return + menu = pystray.Menu( + pystray.MenuItem("GizerBridge", self._tray_show, default=True), + pystray.Menu.SEPARATOR, + pystray.MenuItem("Manueller Import", + lambda: self._queue.put(self._open_manual_import)), + pystray.MenuItem("Einstellungen", + lambda: self._queue.put(self._open_config)), + pystray.MenuItem("Log", + lambda: self._queue.put(self._open_log)), + pystray.Menu.SEPARATOR, + pystray.MenuItem("Beenden", + lambda: self._queue.put(self._quit)), + ) + self._tray = pystray.Icon( + "gizerbridge", + self._make_tray_image("yellow"), + "GizerBridge", + menu, + ) + self._tray.run_detached() + + def _tray_show(self, *_): + self._queue.put(lambda: (self.root.deiconify(), self.root.lift())) + + # ── Main window ─────────────────────────────────────────────────────────── + + def _show_main_window(self): + if hasattr(self, "_fallback_status"): + return + + self.root.deiconify() + self.root.title("GizerBridge") + self.root.resizable(True, True) + self.root.minsize(420, 140) + + # ── Header ── + hdr = tk.Frame(self.root, padx=14, pady=10) + hdr.pack(fill=tk.X) + if _PIL_AVAILABLE: + try: + _img = Image.open(_ICON_PATH).convert("RGBA") + _img = _img.resize((128, 128), Image.LANCZOS) + self._hdr_photo = ImageTk.PhotoImage(_img) + tk.Label(hdr, image=self._hdr_photo).pack(side=tk.LEFT, padx=(0, 8)) + except Exception: + pass + tk.Label(hdr, text="GizerBridge", + font=("", 13, "bold")).pack(side=tk.LEFT) + + # ── Status row ── + sf = tk.Frame(self.root, padx=14) + sf.pack(fill=tk.X) + self._fallback_dot = tk.Label(sf, text="●", fg="goldenrod", + font=("", 11)) + self._fallback_dot.pack(side=tk.LEFT) + self._fallback_status = tk.Label(sf, text=self._status_msg, + anchor="w", wraplength=360) + self._fallback_status.pack(side=tk.LEFT, padx=(5, 0)) + + # ── Buttons ── + bf = tk.Frame(self.root, padx=14, pady=12) + bf.pack(fill=tk.X) + for text, cmd in [ + ("Manueller Import", self._open_manual_import), + ("Einstellungen", self._open_config), + ("Log", self._open_log), + ("Beenden", self._quit), + ]: + tk.Button(bf, text=text, width=15, + command=cmd).pack(side=tk.LEFT, padx=(0, 6)) + + close_action = self.root.withdraw if _PYSTRAY_AVAILABLE else self._quit + self.root.protocol("WM_DELETE_WINDOW", close_action) + + # ── Monitor thread ──────────────────────────────────────────────────────── + + def _start_monitor(self): + self._stop.clear() + self._monitor_thread = threading.Thread( + target=self._monitor_loop, daemon=True) + self._monitor_thread.start() + + def _monitor_loop(self): + self._queue.put(lambda: self._set_icon_color("yellow")) + + cfg = self.config + if not cfg.get("api_key"): + self._log("Konfiguration unvollständig — bitte Einstellungen öffnen.") + self._queue.put(lambda: self._set_icon_color("red")) + return + + cookies, err = find_cookies() + if err: + self._log(f"Cookie-Fehler: {err}") + self._queue.put(lambda: self._set_icon_color("red")) + self._queue.put(lambda: messagebox.showwarning( + "Tralgo – Cookie fehlt", err, parent=self.root)) + return + + self.session = build_session(cookies) + + host = cfg.get("dtc_host", "localhost") + port = cfg.get("dtc_port", 11099) + accounts = cfg.get("accounts", []) + instruments = self._active_instruments(cfg) + + self._log(f"Verbinde mit Sierra Chart DTC {host}:{port}…") + + def _on_trade(trade): + if trade["trade_id"] in self.sent: + return + try: + send_trade(self.session, trade, cfg["api_key"]) + self.sent.add(trade["trade_id"]) + save_sent(self.sent) + msg = (f"Übertragen: {trade['instrument']} {trade['direction']} " + f"Entry {trade['entry_price']} → Exit {trade['exit_price']} " + f"| PnL {trade['pnl']} USD ({trade['pnl_ticks']} Ticks)") + self._log(msg) + self._update_status_msg(msg) + self._queue.put(lambda: self._set_icon_color("green")) + except Exception as e: + err_msg = f"Übertragungsfehler ({trade['instrument']}): {e}" + self._log(err_msg) + self._update_status_msg(err_msg) + self._queue.put(lambda: self._set_icon_color("red")) + + def _on_ready(existing_ids): + self.sent.update(existing_ids) + save_sent(self.sent) + self._log("Bereit. Überwache SC via DTC auf neue Trades…") + self._queue.put(lambda: self._set_icon_color("green")) + self._update_status_msg("Läuft – warte auf neue Trades (DTC)") + + result = monitor_realtime( + host, port, accounts, instruments, + on_trade=_on_trade, + stop_event=self._stop, + log_fn=self._log, + on_ready=_on_ready, + ) + + if result is None: + self._queue.put(lambda: self._set_icon_color("red")) + self._update_status_msg("DTC-Verbindung fehlgeschlagen – Sierra Chart läuft?") + else: + self._log("DTC-Monitor beendet.") + + @staticmethod + def _active_instruments(cfg): + return {k: v for k, v in cfg.get("instruments", {}).items() + if v.get("enabled", True)} + + # ── Queue / status helpers ──────────────────────────────────────────────── + + def _process_queue(self): + try: + while True: + self._queue.get_nowait()() + except queue.Empty: + pass + if hasattr(self, "_fallback_status"): + lbl_fg = {"green": "darkgreen", "red": "#cc0000", "yellow": "darkorange"} + dot_fg = {"green": "#00b300", "red": "#cc0000", "yellow": "goldenrod"} + self._fallback_status.config( + text=self._status_msg, + fg=lbl_fg.get(self._status_color, "gray")) + self._fallback_dot.config( + fg=dot_fg.get(self._status_color, "gray")) + self.root.after(300, self._process_queue) + + def _log(self, msg): + entry = f"[{datetime.now().strftime('%H:%M:%S')}] {msg}" + with self._log_lock: + self._log_entries.append(entry) + if len(self._log_entries) > 200: + self._log_entries.pop(0) + + def _update_status_msg(self, msg): + self._status_msg = msg + + # ── GUI windows ─────────────────────────────────────────────────────────── + + def _open_status(self): + win = tk.Toplevel(self.root) + win.title("Status") + win.resizable(False, False) + colors = {"green": "darkgreen", "red": "red", "yellow": "darkorange"} + labels = {"green": "Läuft", "red": "Fehler", "yellow": "Initialisierung"} + tk.Label(win, text=f"● {labels.get(self._status_color, '')}", + fg=colors.get(self._status_color, "gray"), + font=("", 12, "bold")).pack(padx=20, pady=(14, 4)) + tk.Label(win, text=self._status_msg, wraplength=380).pack(padx=20, pady=4) + tk.Label(win, text=f"Übertragene Trades gesamt: {len(self.sent)}", + fg="gray").pack(padx=20, pady=4) + with self._log_lock: + last = self._log_entries[-1] if self._log_entries else "—" + tk.Label(win, text=f"Letzter Log-Eintrag:\n{last}", + wraplength=380, fg="gray", justify=tk.LEFT).pack(padx=20, pady=(4, 14)) + tk.Button(win, text="Schließen", width=10, command=win.destroy).pack(pady=(0, 12)) + + def _open_log(self): + win = tk.Toplevel(self.root) + win.title("Log – letzte 50 Einträge") + win.geometry("620x400") + frame = tk.Frame(win) + frame.pack(fill=tk.BOTH, expand=True, padx=8, pady=8) + sb = tk.Scrollbar(frame) + sb.pack(side=tk.RIGHT, fill=tk.Y) + txt = tk.Text(frame, yscrollcommand=sb.set, state=tk.DISABLED, + font=("Monospace", 8), wrap=tk.NONE) + txt.pack(fill=tk.BOTH, expand=True) + sb.config(command=txt.yview) + with self._log_lock: + entries = list(self._log_entries[-50:]) + txt.config(state=tk.NORMAL) + txt.insert(tk.END, "\n".join(entries)) + txt.config(state=tk.DISABLED) + txt.see(tk.END) + tk.Button(win, text="Schließen", command=win.destroy).pack(pady=6) + + def _open_config(self): + ConfigWindow(self.root, self.config, self._on_config_saved) + + def _open_manual_import(self): + ManualImportWindow( + self.root, + self.config, + self.sent, + self.session, + self.config.get("api_key", ""), + self._on_trade_manually_imported, + ) + + def _on_trade_manually_imported(self, trade_id): + self.sent.add(trade_id) + save_sent(self.sent) + + def _on_config_saved(self, new_cfg): + self.config = new_cfg + save_config(new_cfg) + self._stop.set() + if self._monitor_thread and self._monitor_thread.is_alive(): + self._monitor_thread.join(timeout=5) + self._start_monitor() + + def _quit(self): + self._stop.set() + save_sent(self.sent) + if hasattr(self, "_tray"): + try: + self._tray.stop() + except Exception: + pass + try: + self.root.quit() + self.root.destroy() + except tk.TclError: + pass