try catch in mmQuotes loop
This commit is contained in:
@@ -155,88 +155,92 @@ export class DLOBSubscriberIO extends DLOBSubscriber {
|
||||
|
||||
const nowMinus1000Ms = Date.now() - 1000;
|
||||
for (const quote of mmQuotes) {
|
||||
if (Number(quote['ts']) > nowMinus1000Ms) {
|
||||
const indicativeBaseOrder: Order = {
|
||||
status: OrderStatus.OPEN,
|
||||
orderType: OrderType.LIMIT,
|
||||
orderId: 0,
|
||||
slot: new BN(this.slotSource.getSlot()),
|
||||
marketIndex: marketArgs.marketIndex,
|
||||
marketType: marketArgs.marketType,
|
||||
baseAssetAmount: ZERO,
|
||||
immediateOrCancel: false,
|
||||
direction: PositionDirection.LONG,
|
||||
oraclePriceOffset: 0,
|
||||
maxTs: new BN(quote['ts'] + 1000),
|
||||
reduceOnly: false,
|
||||
triggerCondition: OrderTriggerCondition.ABOVE,
|
||||
price: ZERO,
|
||||
userOrderId: 0,
|
||||
postOnly: true,
|
||||
auctionDuration: 0,
|
||||
auctionStartPrice: ZERO,
|
||||
auctionEndPrice: ZERO,
|
||||
// Rest are not necessary and set for type conforming
|
||||
existingPositionDirection: PositionDirection.LONG,
|
||||
triggerPrice: ZERO,
|
||||
baseAssetAmountFilled: ZERO,
|
||||
quoteAssetAmountFilled: ZERO,
|
||||
quoteAssetAmount: ZERO,
|
||||
bitFlags: 0,
|
||||
postedSlotTail: 0,
|
||||
};
|
||||
try {
|
||||
if (Number(quote['ts']) > nowMinus1000Ms) {
|
||||
const indicativeBaseOrder: Order = {
|
||||
status: OrderStatus.OPEN,
|
||||
orderType: OrderType.LIMIT,
|
||||
orderId: 0,
|
||||
slot: new BN(this.slotSource.getSlot()),
|
||||
marketIndex: marketArgs.marketIndex,
|
||||
marketType: marketArgs.marketType,
|
||||
baseAssetAmount: ZERO,
|
||||
immediateOrCancel: false,
|
||||
direction: PositionDirection.LONG,
|
||||
oraclePriceOffset: 0,
|
||||
maxTs: new BN(quote['ts'] + 1000),
|
||||
reduceOnly: false,
|
||||
triggerCondition: OrderTriggerCondition.ABOVE,
|
||||
price: ZERO,
|
||||
userOrderId: 0,
|
||||
postOnly: true,
|
||||
auctionDuration: 0,
|
||||
auctionStartPrice: ZERO,
|
||||
auctionEndPrice: ZERO,
|
||||
// Rest are not necessary and set for type conforming
|
||||
existingPositionDirection: PositionDirection.LONG,
|
||||
triggerPrice: ZERO,
|
||||
baseAssetAmountFilled: ZERO,
|
||||
quoteAssetAmountFilled: ZERO,
|
||||
quoteAssetAmount: ZERO,
|
||||
bitFlags: 0,
|
||||
postedSlotTail: 0,
|
||||
};
|
||||
|
||||
if (quote['bid_size'] && quote['bid_price'] != null) {
|
||||
// Sanity check bid price and size
|
||||
if (quote['bid_size'] && quote['bid_price'] != null) {
|
||||
// Sanity check bid price and size
|
||||
|
||||
const indicativeBid: Order = Object.assign(
|
||||
{},
|
||||
indicativeBaseOrder,
|
||||
{
|
||||
orderId: indicativeOrderId,
|
||||
oraclePriceOffset: quote['is_oracle_offset']
|
||||
? quote['bid_price']
|
||||
: 0,
|
||||
price: quote['is_oracle_offset']
|
||||
? 0
|
||||
: new BN(quote['bid_price']),
|
||||
baseAssetAmount: new BN(quote['bid_size']),
|
||||
direction: PositionDirection.LONG,
|
||||
}
|
||||
);
|
||||
this.dlob.insertOrder(
|
||||
indicativeBid,
|
||||
INDICATIVE_QUOTES_PUBKEY,
|
||||
this.slotSource.getSlot(),
|
||||
false
|
||||
);
|
||||
indicativeOrderId += 1;
|
||||
}
|
||||
|
||||
if (quote['ask_size'] && quote['ask_price'] != null) {
|
||||
const indicativeAsk: Order = Object.assign(
|
||||
{},
|
||||
indicativeBaseOrder,
|
||||
{
|
||||
orderId: indicativeOrderId,
|
||||
oraclePriceOffset: quote['is_oracle_offset']
|
||||
? quote['ask_price']
|
||||
: 0,
|
||||
price: quote['is_oracle_offset']
|
||||
? 0
|
||||
: new BN(quote['ask_price']),
|
||||
baseAssetAmount: new BN(quote['ask_size']),
|
||||
direction: PositionDirection.SHORT,
|
||||
}
|
||||
);
|
||||
this.dlob.insertOrder(
|
||||
indicativeAsk,
|
||||
INDICATIVE_QUOTES_PUBKEY,
|
||||
this.slotSource.getSlot(),
|
||||
false
|
||||
);
|
||||
indicativeOrderId += 1;
|
||||
const indicativeBid: Order = Object.assign(
|
||||
{},
|
||||
indicativeBaseOrder,
|
||||
{
|
||||
orderId: indicativeOrderId,
|
||||
oraclePriceOffset: quote['is_oracle_offset']
|
||||
? quote['bid_price']
|
||||
: 0,
|
||||
price: quote['is_oracle_offset']
|
||||
? 0
|
||||
: new BN(quote['bid_price']),
|
||||
baseAssetAmount: new BN(quote['bid_size']),
|
||||
direction: PositionDirection.LONG,
|
||||
}
|
||||
);
|
||||
this.dlob.insertOrder(
|
||||
indicativeBid,
|
||||
INDICATIVE_QUOTES_PUBKEY,
|
||||
this.slotSource.getSlot(),
|
||||
false
|
||||
);
|
||||
indicativeOrderId += 1;
|
||||
}
|
||||
|
||||
if (quote['ask_size'] && quote['ask_price'] != null) {
|
||||
const indicativeAsk: Order = Object.assign(
|
||||
{},
|
||||
indicativeBaseOrder,
|
||||
{
|
||||
orderId: indicativeOrderId,
|
||||
oraclePriceOffset: quote['is_oracle_offset']
|
||||
? quote['ask_price']
|
||||
: 0,
|
||||
price: quote['is_oracle_offset']
|
||||
? 0
|
||||
: new BN(quote['ask_price']),
|
||||
baseAssetAmount: new BN(quote['ask_size']),
|
||||
direction: PositionDirection.SHORT,
|
||||
}
|
||||
);
|
||||
this.dlob.insertOrder(
|
||||
indicativeAsk,
|
||||
INDICATIVE_QUOTES_PUBKEY,
|
||||
this.slotSource.getSlot(),
|
||||
false
|
||||
);
|
||||
indicativeOrderId += 1;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('skipping mmQuote: ', error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user