Kursabfrage nimmt das Instrument statt nur das Symbol

Ohne Waehrung wird jeder Kontrakt als USD gesucht: ein Wert, der nur in
EUR notiert, ist dann "nicht aufloesbar", und die Ursache steht
nirgends. Beim Order-Nachweis gegen MIGA:EUR genau so aufgetreten - die
Kontraktaufloesung fuer die ORDER war bereits waehrungsfaehig, die fuer
den KURS nicht, und damit brach die Kette eine Stufe vorher ab.

Dieselbe Aenderung ist die Voraussetzung fuer Optionskurse (#299): ohne
Kontraktangaben laesst sich eine Option ueberhaupt nicht abfragen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-04 15:41:26 +02:00
co-authored by Claude Opus 5
parent 2a73172e27
commit 9e0d3b229a
7 changed files with 21 additions and 16 deletions
@@ -58,7 +58,7 @@ public class ExecutionServiceTests
private void ArrangeHappyPath()
{
EnableTrading();
_broker.GetQuoteAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
_broker.GetQuoteAsync(Arg.Any<InstrumentRef>(), Arg.Any<CancellationToken>())
.Returns(Task.FromResult<Quote?>(new Quote("AAPL", 100m, 99m, 101m)));
_broker.GetAccountStateAsync(Arg.Any<CancellationToken>())
.Returns(Task.FromResult(new AccountState(10_000m, 10_000m)));
@@ -87,7 +87,7 @@ public class ExecutionServiceTests
public async Task NoQuote_Skips()
{
EnableTrading();
_broker.GetQuoteAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
_broker.GetQuoteAsync(Arg.Any<InstrumentRef>(), Arg.Any<CancellationToken>())
.Returns(Task.FromResult<Quote?>(null));
var result = await CreateSut().ExecuteAsync(BuySignal);
@@ -100,7 +100,7 @@ public class ExecutionServiceTests
public async Task RiskRejects_Skips_WithReason()
{
EnableTrading();
_broker.GetQuoteAsync(Arg.Any<string>(), Arg.Any<CancellationToken>())
_broker.GetQuoteAsync(Arg.Any<InstrumentRef>(), Arg.Any<CancellationToken>())
.Returns(Task.FromResult<Quote?>(new Quote("AAPL", 100m, 99m, 101m)));
_broker.GetAccountStateAsync(Arg.Any<CancellationToken>())
.Returns(Task.FromResult(new AccountState(10_000m, 10_000m)));