Phase 4.1: Maker-Einstieg (dormant, per-Master-Flag)
- Ist TrackedTrader.MakerEntry gesetzt, wird der BUY OHNE Preisaufschlag als ruhendes GTC-Limit am Master-Preis platziert (statt teurem Taker-Fill via GTD), spart Fees/Spread bei langsamen Mastern. Nutzt die getestete CopyTradingRisk.CalculateBuyOrderPrice (0 % Aufschlag). Default aus -> dormant. (Ohne Orderbuch ist der Master-Preis die Naeherung fuer den Bid; echte Bid-Platzierung + Nichtfill-Eskalation folgen mit dem Market-Channel/Zielland.) 207 Tests gruen. Build/Smoke gruen. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
54ed1a414e
commit
429a05f885
@@ -371,9 +371,14 @@ namespace PolyTraderSharp.Services
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Limit-Preis (HF-fest / prozentual, gedeckelt) – CopyTradingRisk, unit-getestet
|
// Limit-Preis (HF-fest / prozentual, gedeckelt) – CopyTradingRisk, unit-getestet.
|
||||||
orderPrice = CopyTradingRisk.CalculateBuyOrderPrice(
|
// Phase 4.1: Maker-Einstieg platziert OHNE Aufschlag (ruhendes GTC-Limit am
|
||||||
signal.Price, trader != null && trader.Category == "HF", settings.MaxPriceDifference, settings.MaxBuyPrice);
|
// Master-Preis statt teurem Taker-Fill über dem Ask) – spart Fees/Spread bei
|
||||||
|
// langsamen Mastern. (Ohne Orderbuch ist der Master-Preis die Näherung für den Bid.)
|
||||||
|
bool makerEntry = trader != null && trader.MakerEntry;
|
||||||
|
orderPrice = makerEntry
|
||||||
|
? CopyTradingRisk.CalculateBuyOrderPrice(signal.Price, false, 0m, settings.MaxBuyPrice)
|
||||||
|
: CopyTradingRisk.CalculateBuyOrderPrice(signal.Price, trader != null && trader.Category == "HF", settings.MaxPriceDifference, settings.MaxBuyPrice);
|
||||||
|
|
||||||
var exact = PolymarketClobClient.CalculateExactOrderAmounts(maxAmountToBuy, orderPrice, orderPrice, "BUY");
|
var exact = PolymarketClobClient.CalculateExactOrderAmounts(maxAmountToBuy, orderPrice, orderPrice, "BUY");
|
||||||
if (exact.shares <= 0 || exact.usdc > account.AvailableBalance)
|
if (exact.shares <= 0 || exact.usdc > account.AvailableBalance)
|
||||||
@@ -527,7 +532,9 @@ namespace PolyTraderSharp.Services
|
|||||||
$" Account: {account.Name}\n" +
|
$" Account: {account.Name}\n" +
|
||||||
$" Limit: ${orderPrice:F3} (Target: {signal.Price:F3})");
|
$" Limit: ${orderPrice:F3} (Target: {signal.Price:F3})");
|
||||||
|
|
||||||
var result = await _clob.PlaceOrderAsync(account, signal.TokenId, signal.Side, exactUsdc, orderPrice, "GTD", _state.DebugOrderPayloadLog, isNegRisk);
|
// Maker-Einstieg (Phase 4.1) ruht als GTC-Limit; sonst GTD (Taker-nah).
|
||||||
|
string buyOrderType = (trader != null && trader.MakerEntry) ? "GTC" : "GTD";
|
||||||
|
var result = await _clob.PlaceOrderAsync(account, signal.TokenId, signal.Side, exactUsdc, orderPrice, buyOrderType, _state.DebugOrderPayloadLog, isNegRisk);
|
||||||
|
|
||||||
if (result == "OK")
|
if (result == "OK")
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user