DebugTrading nennt eine wartende Order nicht mehr "abgelehnt"
Direkte Folge des Fixes aus #488: Kommt eine Order als PENDING zurueck, ist sie angenommen und wartet auf die Boersenoeffnung. Das Modul meldete sie weiterhin als Ablehnung - im Log stand das Gegenteil dessen, was passiert war. Beim Schliessen ebenso: Die Zeile bleibt offen, aber der Grund heisst jetzt richtig. Eine Position, die wir fuer geschlossen halten, obwohl sie es nicht ist, waere schlimmer als ein zweiter Versuch - das bleibt. Nicht behoben und als #491 gemeldet: Das Modul sieht seine eigene wartende Order nicht und setzt beim naechsten Lauf eine weitere ab. Gebremst wird das heute allein vom Cap des Buchs, weil jede wartende Order ihr Kapital bindet. Das ist eine Sicherung, die greift, aber kein Entwurf. Die Stelle steht im Code. 473 Tests gruen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -135,6 +135,21 @@ public class DebugTradingWorker : WorkerBase
|
|||||||
};
|
};
|
||||||
|
|
||||||
var result = await _execution.ExecuteAsync(signal, ct);
|
var result = await _execution.ExecuteAsync(signal, ct);
|
||||||
|
|
||||||
|
if (result.IsPending)
|
||||||
|
{
|
||||||
|
// Die Order liegt beim Broker und wartet auf die Börseneröffnung (#488). Sie "abgelehnt"
|
||||||
|
// zu nennen, wäre schlicht falsch - und war es bis zum 2026-09-06 auch.
|
||||||
|
//
|
||||||
|
// Es wird KEINE Zeile in dbg_position geschrieben: Wir halten nichts. Bis die
|
||||||
|
// Order-Verfolgung steht (#294), sieht das Modul seine eigene wartende Order nicht und
|
||||||
|
// setzt beim nächsten Lauf eine weitere ab. Gebremst wird das allein vom Cap des Buchs
|
||||||
|
// DBG, weil jede wartende Order ihr Kapital bindet - eine Sicherung, kein Entwurf.
|
||||||
|
Logger.Warn(Module,
|
||||||
|
$"Eröffnung liegt beim Broker ({action.Instrument.Key}), Ausgang offen: {result.Reason}");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!result.Executed)
|
if (!result.Executed)
|
||||||
{
|
{
|
||||||
// Eine Ablehnung ist hier kein Fehler, sondern der halbe Zweck des Moduls: Sie zeigt,
|
// Eine Ablehnung ist hier kein Fehler, sondern der halbe Zweck des Moduls: Sie zeigt,
|
||||||
@@ -184,10 +199,12 @@ public class DebugTradingWorker : WorkerBase
|
|||||||
var result = await _execution.ExecuteAsync(signal, ct);
|
var result = await _execution.ExecuteAsync(signal, ct);
|
||||||
if (!result.Executed)
|
if (!result.Executed)
|
||||||
{
|
{
|
||||||
// Wichtig: Die Zeile bleibt offen. Beim nächsten Lauf wird es erneut versucht - eine
|
// Wichtig: Die Zeile bleibt offen - auch bei PENDING. Beim nächsten Lauf wird es erneut
|
||||||
// Position, die wir für geschlossen halten, obwohl sie es nicht ist, wäre schlimmer
|
// versucht; eine Position, die wir für geschlossen halten, obwohl sie es nicht ist, wäre
|
||||||
// als ein weiterer Versuch.
|
// schlimmer als ein weiterer Versuch.
|
||||||
Logger.Warn(Module, $"Schließen abgelehnt ({row.ContractKey}): {result.Reason}");
|
Logger.Warn(Module, result.IsPending
|
||||||
|
? $"Schließen liegt beim Broker ({row.ContractKey}), Ausgang offen: {result.Reason}"
|
||||||
|
: $"Schließen abgelehnt ({row.ContractKey}): {result.Reason}");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user