(Only german) Erklären/Finden von bester Lösung für thread/async Problem.

Geschlossen Veröffentlicht vor 3 Jahren Bezahlt bei Lieferung
Geschlossen Bezahlt bei Lieferung

Es geht um ein Tradingbot-system, welches ich selber in Python 3.8 schreibe. Es soll in erster Linie auf Debian 10 laufen, aber auch windows würde ich es zu testzwecken und gerne lauffähig haben.

Hier brauche ich professionelle Ratschläge mit welchen Mitteln das folgende am besten umzusetzen wäre (threads/async/was anderes?).

Ich möchte unterschiedliche Tradingstrategien entwickeln und gleichzeitg laufen lassen. Der aktuelle Aufbau sieht vor, ein eigenes Skript und Klasse je Strategie (Bot) zu verwenden und auch einen eigenen Prozess/Thread, damit sie gleichzeitig laufen können. Der Aufbau ist so gewählt, weil es von der Struktur so am einfachsten und übersichtlichsten ist, also jede Strategie bekommt eine eigene Klasse und läuft für sich. Dennoch sollen die Bots grob wissen, was der andere gemacht hat und sie sollen auch dieselbe API Verbindung zu den websiten nutzen. Daher habe ich eine sogenannte BotManager (BotMan) Klasse eingeführt. Diese wird zu Beginn des Systems aufgerufen und startet die ganzen Strategieskripte (Bots) und übergibt sich selbst. Die Bots können dann jegliche API Anfragen die sie haben an den BotMan übergeben, dieser wandelt die Anfragen vorher noch in das richtige Format um und leitet sie dann an die websiten weiter und speichert gegebenenfalls auch einige Infos selbst ab, auf die dann andere Bots Zugriff haben (zb eine Art cache um denselben Call nicht mehrfach in kurzer Zeit machen zu müssen)

Auf diese Weise können die Bots alle in einem einheitlichen Format arbeiten und brauchen sich um nicht viel weiter kümmern, da der BotMan alles (zb auch Fehlerhandling) übernimmt. Auch lassen sich problemlos neue Strategien entwickeln/testen, ohne dass man irgendwo etwas "zwischenschieben oder integrieren" muss, einfach ein neues skript und Klasse und sogut wie fertig. Ich hoffe das war einigermaßen verständlich, was das Ziel ist.

Aktuell starte ich zu Beginn für jeden Bot (=Strategie) also einen eigenen Prozess/Thread (die problematik von Prozessen lassen wir erstmal außen vor). Dabei ist es mir erstmal nicht direkt wichtig, ob diese Bots nun wirklich gleichzeitig laufen, oder ob es durch das threading-hin-und-herspringen nur den Anschein von Gleichzeitigkeit hat. Wichtig ist, dass es mit threading besser ist, als es sequentiell auszuführen (auch wenn die gesamt durchlaufzeit bei reinem code natürlich dieselbe bliebe). Die Bots sollen wie gesagt beliebige Strategien fahren können, vom high-frequency-trading bis hin zu "einmal am Tag den Kurs checken", soll dem Strategieskript überlassen sein.

Die API Calls, welche nun also jederzeit von jedem dieser Bots zu jedem Zeitpunkt und jeder Anzahl beim BotMan angefragt werden können, mache ich zurzeit ebenfalls noch in threads. Pro API call wird nun also ein weiterer Thread geöffnet. Nun soll das ganze aber stark skalieren, mit sehr vielen untersch. websiten und sehr vielen untersch. calls und strategien (die limits der websiten habe ich dabei natürlich im Blick), weshalb ich in meinen Tests auf das Maximallimit an threads gestoßen bin.

Daher habe ich nun async stattdessen probiert, aber dies auf meinen bisherigen code anzuwenden ist sehr schwierig.

Es gibt die Möglichkeit von run_coroutine_threadsafe in einem zweiten thread aufzururfen, um nur die api calls im event loop zu machen.

Und es gibt die Möglichkeit alles im event_loop zu machen, aber cpu intensiven code mit run_in _executor auszulagern.

Aber beide Ansätze haben ihre eigenen Probleme, weshalb ich nicht wirklich weiter weiß.

Daher brauche ich nun jemanden, der mir sagen kann, wie das Projekt am effizientesten aussehen würde, bzw. falls es schon eine der obigen Varianten ist, wie ich den code dennoch übersichtlich behalte.

Dazu wäre es sicherlich sinnvoll, wenn wir auch einen Voicechat machen würden.

Falls du mich mit Wissen überzeugen kannst und wir länger brauchen, kann das Budget auch noch erhöht werden.

MfG

Python

Projekt-ID: #27068851

Über das Projekt

1 Vorschlag Remote Projekt Aktiv vor 3 Jahren

1 Freelancer bietet durchschnittlich €75 für diesen Job

kevivu

Hi Sir, I have reviewed your requirements carefully and I can definitely start immediately. But I have couple of questions on requirements, please ping me on chat to discuss more on that. I am expert in EXCEL/ACCESS/ Mehr

€75 EUR in 1 Tag
(2 Bewertungen)
2.4