Я пытаюсь изменить значение цены из сообщения QuickFix44.MarketDataSnapshotFullRefresh (тип W).
Я успешно преобразовал необработанное сообщение FIXMessage в строковый тип. Но есть ли способ вернуть его обратно в FIXMessage из строки после изменения значения?
Вот код, который я сделал до сих пор:
public void alterMarkup(QuickFix44.MarketDataSnapshotFullRefresh snapshot)
{
// convert FIXMessage to string type
String message = System.Convert.ToString(snapshot);
// retrieve the value to modify
String a = message.Substring(message.LastIndexOf("269=0") + 10);
String bid_value = a.Substring(0, a.IndexOf("\u0001"));
String b = message.Substring(message.LastIndexOf("269=1") + 10);
String ask_value = b.Substring(0, b.IndexOf("\u0001"));
// alter the price
Decimal deci_bid = System.Convert.ToDecimal(bid_value) + 0.1m;
// NoMDEntries Group
QuickFix44.MarketDataSnapshotFullRefresh.NoMDEntries group = new QuickFix44.MarketDataSnapshotFullRefresh.NoMDEntries();
group.setField(new QuickFix.MDEntryType(System.Convert.ToChar(QuickFix.MDEntryType.BID)));
group.setField(new QuickFix.MDEntryPx(System.Convert.ToDouble(deci_bid)));
group.setField(new QuickFix.MDEntrySize(0));
group.setField(new QuickFix.MDEntryDate());
group.setField(new QuickFix.MDEntryTime(DateTime.UtcNow));
group.setField(new QuickFix.TradingSessionID());
group.setField(new QuickFix.TradingSessionSubID());
group.setField(new QuickFix.QuoteCondition(System.Convert.ToString(QuickFix.QuoteCondition.OPEN_ACTIVE)));
group.setField(new QuickFix.MDEntryOriginator());
group.setField(new QuickFix.QuoteEntryID());
group.setField(new QuickFix.QuoteType(QuickFix.QuoteType.TRADEABLE));
Console.WriteLine(snapshot);
snapshot.replaceGroup(System.Convert.ToUInt32(deci_bid), group.field(), group);
// print out from second time to compare
Console.WriteLine(snapshot);
}
Я распечатал сообщения и перевел их на https://fixparser.targetcompid.com/.
Это оригинальное сообщение:
![Original message](https://i.stack.imgur.com/ZUdfO.png)
Это измененное сообщение:
![Modified message](https://i.stack.imgur.com/NXbRF.png)
Из изображений мы можем заметить, что значение поля должно быть вставлено одно за другим. Если нет, он будет показывать только ноль там.
P.S. Есть ли способ изменить только MDEntryPx (как для BID, так и для OFFER) вместо изменения всей группы.
Я новичок в QuickFIX. Любая помощь будет оценена.