-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
277 lines (214 loc) · 12.5 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
####################
# Tasks to resolve #
####################
Sum order :
- si spot : sum base (au moins sum pour EUR et USD), pour eviter le rejet de l'API si qty insuffisante
- attention à l'arrondit pour que ça ne bloque pas un autre order
- le faire sur le watcher, lors d'order event, générer le asset update signal, locked/free
- le faire sur le trader lors du __fetch_assets
- si pas de leverage, ok ok est bien spot, sinon ignorer
- si buy :
- base free - volume executé en quote
- quote -free +lock mais oter le volume executé
- asset update signal
- si sell :
- base -free +lock mais oter le volume executé
- quote free + volume executé en quote
- asset update signal
- option --spec=profile-for-account:\<account-id\> pour nettoyer les data de strategy
- dans le cadre du reduce :
position/ind/margin paper trader : doit ajuster le prix de sortie moyen en case de reduce mais aussi de close apres reduce
- dailyfx est fusionné directement dans IG et le endpoint n'est plus présent
- un scrapper HTML pourrait faire le job mais on aura moins d'informations et la zone EURO ZONE n'explique plus
- trouver si il y a un endpoint JSON
- ils ont un lightstreamer avec un user id genérique, à quoi leur sert t'il
- ils font des update json a interval régulier mais ça n'apporte que les update, et il faut un cookie
- ça demanderait un agent avec un chrome headless pour contourner
#######
# WIP #
#######
- mettre à jour ATRSR et TD9 avec l'ajout de num_last_bars (plus simple pour calculer le delta et compatible non-temporals bars)
- IG exception cause : {"errorCode":"error.security.client-token-invalid"}
- implique de refaire la connexion car le token est expiré
- Voir pour créer un mixin qui contient des implémentation classique de process, process_entry, process_exit
de strategy trader qui sont quasi tjs pareil
- DailyLimitHandler ajouter :
- timezone offset
- ajouter timezone sur la commande
- cancel/close win/loss
- ajouter cancel/close win/loss sur la commande
- Ajouter une option pour creer un spread sur certain tick streamer quand le bid/ask n'est pas présent (cas bitmex par exemple)
- kraken watcher et trader :
- bug de reco perte d'information WS parfois (trade execution, order update...)
- revoir que si besoin ownTrade pour signal ORDER_TRADED peut être aiderait
- fetch des positions pour margin
- fetch des trades history et calcule des prix d'entré moyen par asset mais c'est lourd
- parfois certains messages sont pas garantie dans le WS donc on rate une sortie ou une entrée
- les check automatique sont pertinent mais faut éviter de saturer l'API si beaucoup de trade distinct.
- peut etre qu'il faut considérer que kraken c'est plutôt de l'invest que du trading et donc ajuster les stratégies
- comment savoir si trade maker ou taker ?
- WebTrader
- HTTP :
- POST/GET reinvest-gain handler
- POST/GET DCA handler
- WS :
- notify/wt-read strategy-trader context data changes (max-trades, mode...)
- notify/wt-read strategy-trader regions hit
- display dialog detail with :
- read/modify affinity
- read/modify strategy-trader and per context max-trade
- read/modify strategy-trader and per context quantity
- charting :
- recevoir stream du bid/ask (level 1)
- recevoir stream market depth (level x)
- session expiry message to renew
- toggle audio et alt sound alerts (et save conf)
- listes :
- trier par (% pnl+-, market+-, date+-, upnl+-)
- paginer si list > 100 élements
- menu + modal pour créer une alerte price-cross
- menu + modal pour créer une range region
- menu + modal pour créer une trend region
- calculer r:r sur open trade, calcule % et montant risqué selon stop-loss
########
# Bugs #
########
- signal d'order perdu : on a ce bug de temps en temps avec kraken, quasi jamais vu avec les autres
- supposition :
- peut-etre une deco succinte du WS qui n'entraine pas une reconnection total du watcher et donc
pas de signal de watcher CONNECTED, par conséquence les stratégies ne se remettent pas en "check" WAITING
donc il n'a pas de vérifications des ordres des trades en cours
- potentiellement ça pourrait arriver avec les autres watchers
- il faut revoir la gestion de perte du flux WS order/position, les processus de reconnection internent doivent
emettre un état qui doit être repris par Watcher et qui alors devra avertir les autres services qu'il s'est
deco et reco
- WebTrader : on ne peu pas faire des reduce de quantity < à 1 (avec TradePosition)
- Supprimer le client chart une fois la version web réalisée, donc ce bug ne devrait plus être
- Problème sur le comptage de la quantité de sortie, et du prix moyen de sortie d'un trade
- En effet si la sortie est effectué par plusieurs ordres dans le cas du filled et exec-price, pas de problème,
tout s'ajoute, mais si on a que cumulative-filled et avg-price alors remplacer les valeurs comme sur
le trade d'entré va écraser les valeurs liées au trades de sorties précédents.
- Exemple un take-profit limit, mais mettons la quantité n'est pas fully-filled, et finalement intervient
pour une raison (stop-loss, timeout) un ordre de sortie au market (qui va devoir cancel le premier ordre)
- Donc gérer peut être 2 compteurs pour la sortie, un temporaire lié au trade de sortie actif, et le normal
- TD9 countdown a debug et tester
##########
# Urgent #
##########
- ajouter dans le rebuilder une option pour générer les volumes profiles en même temps que les bars
- voir si decide de stocker en DB les VP et autre au fur et à mesure à partir des analyser :
- analyser::storage method
- parser le block de configuration 'handlers' (et aussi dans merge_parameters)
- ajouter une configuration pour le DailyLimitHandler
- ajouter une configuration pour le ReinvestGainHandler
- ajouter une configuration pour le DCAHandler
- transaction/rollback sur strategy trader save (on save tout ou rien sinon c'est inconsistant)
- on pourrait aussi avoir une transaction en DB à chaque trade notify (open, update, exit)
- def update_exit_qty(order_exec): fixer le avg exit price car peut être sur plusieurs ordres de sortie
- paper-trader : base exchange rate parfois peut être calcule si le market necessaire est disponnible
- Verification des trades par la method check :
- implementer order_info pour le trader bitmex et verifier
- implementer order_info pour le trader ig et verifier
- verifier order_info pour le trader binance
- verifier order_info pour le trader kraken car des bug etrangent se produisent parfois
- verifier order_info pour le trader binancefutures (plus possible pour l'instant)
- Dans les trades context (exits) utiliser le param num_bars si définie mais comment on fait le comptage relatif,
il faut nécessaire un analyser pour savoir si last_closed est vrai
- On pourrait afficher un chart et ou tableau account samples (par jour) comme ça on voir la perf par journée
##################
# Uniformization #
##################
- Finalement le rebuilder pourrait stocker la range-bar current et l'analyser la prendre au chargement
- Une fois plus aucune stratégie utilisant les BarStrategyTrader supprimer le model
- Une fois plus aucune stratégie utilisant les TimeframeStrategyTrader supprimer le model
- Move from siis.py for the resting command part to command_handler
- Finir les conversion des tools avec le model Tool (binarizer, fetcher, optimizer)
- close_position and modify_position must return Order REASON code in place of boolean
- Uniformiser l'order book (bitmex, binance, binancefutures, kraken)
- avoir un object OrderBook facile à mettre à jour et à exploiter
- utiliser DepthCacheManager pour binance et binancefutures
- Gérer la partie locked sur le paper trader en mode asset
- ne pas tout gérer en free, peu important car ça n'empêche pas de fonctionner
#########
# Bonus #
#########
- rajouter les lookback manquant sur les indicateurs
- rajouter les commpute_minimalist / compute_last manquant sur les indicateurs
- sur stats longest flat period, comment décompter les weekend et jours offs ?
- on pourrait peut être mesurer les gaps de flux et ne pas compter ces periodes (mais pas si évident que ça en pratique)
- de même sur la version C++
- peut être avoir une option pour changer la période (monthly) en daily des ratio (sortino, sharpe, ulcer)
- simple mais demande un petit refactoring
- les 2 pourraient au final être intéressants
- de même sur la version C++
- avoir une registry pour les commandes, surtout pour les command Trader et Strategy.
- il y en a beaucoup
- ça pourrait être plus souple et dynamique (ajout de custom command, même en dynamique)
- réduire la taille du trader.py et strategy.py au passage
- c'est un must to have car au final l'essentiel est là, c'est surtout en terme de design et taille des fichiers
- Ne pas utiliser l'api-key/auth en paper-mode sur : kraken, bitmex, binance, binancefutures
- Ajouter TradeOp : TriggerEntry et TriggerLimitEntry, ainsi avoir le trigger coté bot,
et ne pas bloquer les fonds coté broker
- non-temporal bars :
- ajouter tick bar (t)
- ajouter volume bar (v)
- ajouter renko bar (voir https://tradewithpython.com/constructing-renko-charts-using-python exemple avec ATR) et %
- ajouter unirenko bar (x,y,z)
- volumes indicators :
- market profile indicator (+session offset/duration)
- ancienne tickbar => footprint et completer
- update to latest IG API
- emergency assets commands :
- tool withdraw (ou command) simple avec pin code (2AF) paire et addresse
- peut utiliser un alias d'adresse ou l'adresse enregistré par défaut (wallets.json)
- montant de la transaction
- tool withdraw emergency (ou command) qui annule tout les buy pending ou incomplet,
et qui transfert sur les hard wallets (ou soft wallet)
- tool withdraw emergency (ou command) comme précédente mais qui va revendre toutes les paires
sur une seule de reference et ensuite transferer sur le le wallet de reference
- la même mais avec un découpe en % sur N asset, et N wallet (hard ou soft)
############
## Divers ##
############
Server
------
- recup et intégration d'un int +1 ou -1 pour dire direction du trade (-bid, +ask)
- propagation de la dite info au stratégie
- stockage dans les fichiers trades avec en ASCII 1 ask 0 bid et en binaire un octet 1 ask 0 bid
- creation d'un tick bar avec nombre de tick par barre
- mesure des hedge zone sur tick bar
- mesure des balance bid ask par tick
- mesure des balance bid ask par tick bar
- mesure des volume imbalance par tick bar
- mesure des volume delta
- mesure en mode croisé bid x ask ou ask x bid
- parametrage des volume
- detection auto selon volume des précédentes tick bar pour ajuster les parametre des tick bar et autres seuils des indicateurs de mesure
Web Client
----------
- outil de mesure (avec shift + click par exemple)
- volume profile => horizontal bar
- on stream comment
- cela dit on a le cas du volume ancré
- et le cas du profile lié à une temporalité ou X bars
- bar imbalance => rectangle (border, transparance)
- utiliser des annotations ou un plugin dédiée
- on stream comment, historique, et nouvelles
- active(s) trade(s)
- sl/tp drag & drop
- ajout initial des trades (pas vraiment utile car il reçoit les update)
- historical trades entry/exit scatters (en options)
- shared screen configurator
- avoir un meilleur système que la liste de combinaisons
- pouvoir choisir ou placer le chart trader (6 positions left mid right, top center bottom)
- plus un mode compact (toggle)
- ajouter price cross alert depuis le graphique
- on garde ou pas une ligne dessus éventuellement (voir drag n drop pour la modifier)
#################
## Data source ##
#################
- PyEX (mais c'est payant) => rapidapi-morningstar mais pas de WS
- polygon.io (99$ à 399$ / mois) => selon 1m ou tick, REST ou WS
- rapidapi-yahoo-finance pour récupérer stock, indices, forex quotes, mappinng à un autre broker (ig.com...) pour le prefetch
- rapidapi-morningstar pour récupérer les actions et indices intraday, D, W, M, mappinng à un autre broker (ig.com...) pour le prefetch
- RAPI(TM)