Knecht
Rabbit-API
Dies ist eine Kurzdokumentation zur Steuerung des
Eine Server-Applikation kann in einer beliebigen Programmiersprache umgesetzt werden. Es gibt hierfür gut gepflegte Open-Source Libraries.
Die Angaben zur API des Rabbit-Servers sollten ausreichen, um eine einfache Implementierung durch ein LLM erstellen zu lassen.
Falls Sie eine erprobte Lösung bevorzugen, sprechen Sie uns bitte an.
Strategie
Eine Handelsstrategie wird über eine Fanout-Exchange auf dem Rabbit-MQ-Server umgesetzt. Die Knecht-Clients nehmen diese Exchange in ihre config.yml auf.
- In der
config.ymllegen die Clients ihre Kategorie fest.
Die folgenden Messages werden über die Strategie-Exchange verbreitet.
Handelsvorbereitung
- Zu jeder Handelsstrategie legen die Knecht-Clients eine Yaml-Datei
{account-id}.yamlan. Hier werden Default-Werte für Symbole eingetragen. Stimmt die Kategorie inconfig.ymlmit der derset_defaultMessage überein, kann die Default-Allokation über Rabbit-MQ zugewiesen werden. Die Clients können die Default-Werte selbst verändern.routing-key: 'set_default' payload: symbol : { kategorie: "abc", size: n } add_contract.
Einem Symbol wird über diese Message ein spezifisches Asset zugewiesen. Es handelt sich um einen qualifizierten IB-Contract. Diesem wird ein Shortcut zugewiesen.routing-key: 'add_contract' payload: { shortcut: "abc", contract: { con_id: , currency: , exchange: , expiry: , strike , ... } }preview.
Previewzeigt, welches Asset tatsächlich dem Shortcut auf der Client-Seite zugewiesen ist und übermittelt die voraussichtliche Margin-Belastung durch den Trade.routing-key: 'preview' payload: { shortcut: "abc", order: { total_amount: 0, action: B|S, ordertpe: LMT, price: } }
Der Orderprozess
- Positionseröffnung:
place.
Platzierung der Order an der Börse. Der Payload verändert sich nicht. Die Order wird nur platziert, falls keine Position erkannt wird.routing-key: 'place' payload: { shortcut: "abc", order: { total_amount: 0, action: B|S, ordertpe: LMT, price: } } - Positionsschließung:
close.
Platzierung der Order an der Börse. Der Payload verändert sich nicht. Die Order wird nur platziert, falls eine Position erkannt wird. Dasaction-Attribut des Order-Objekts wird vom Clients gesetzt.routing-key: 'close' payload: { shortcut: "abc", order: { total_amount: 0, action: B|S, ordertpe: LMT, price: } } - Order anpassen:
modify.
Der Handelspreis kann verändert werden. Das Payload behält seine Struktur. Es wird wiederum ein Order-Objekt übermittelt, die clients werten nur den Preis aus.routing-key: 'modify' payload: { shortcut: "abc", order: { total_amount: 0, action: B|S, ordertpe: LMT, price: } } - Order zurückziehen:
cancel.
Es wird weiterhin das original Payload verwendet. Die Clients werten das Order-Objekt nicht ausrouting-key: 'cancel' payload: { shortcut: "abc", order: { total_amount: 0, action: B|S, ordertpe: LMT, price: } }
Response + Error
Die Clients beantworten die Messages des Servers über die Response und die Error-Exchange, falls die Kategorie übereinstimmt.