added logic for warning user about stop loss slippage; Added TODO for tyler

This commit is contained in:
dd 2021-12-03 17:21:21 -05:00
parent c8e62cf926
commit 8438df9ccc
1 changed files with 35 additions and 5 deletions

View File

@ -591,12 +591,11 @@ export default function AdvancedTradeForm({
)
actions.reloadOrders()
} else {
// if isMarketOrder and maxSlippage is set
// Then orderPrice is mark * (1 + maxSlippage)
let perpOrderType: PerpOrderType
let perpOrderPrice: number = orderPrice
if (isMarketOrder) {
if (maxSlippage !== undefined) {
if (tradeType === 'Market' && maxSlippage !== undefined) {
perpOrderType = 'ioc'
if (side === 'buy') {
perpOrderPrice = markPrice * (1 + parseFloat(maxSlippage))
@ -609,11 +608,42 @@ export default function AdvancedTradeForm({
} else {
perpOrderType = 'market'
}
} else {
perpOrderType = orderType
}
if (isTriggerOrder) {
// If stop loss or take profit, walk up the book and alert user if slippage will be high
if (isMarketOrder) {
let warnUserSlippage = false
const bookSide = side === 'buy' ? orderbook.asks : orderbook.bids
let base = 0
let quote = 0
for (const [p, q] of bookSide) {
base += q
quote += p * q
if (base >= baseSize) {
break
}
}
if (base < baseSize || (baseSize && base === 0)) {
warnUserSlippage = true
} else if (baseSize > 0) {
// only check if baseSize nonzero because this implies base nonzero
const avgPrice = quote / base
warnUserSlippage = Math.abs(avgPrice / referencePrice - 1) > 0.025
}
if (warnUserSlippage) {
// TODO tyler - add warning to user when this is set true
console.log(
'The requested stop loss order will likely have an extremely large slippage! Consider using Stop Limit or Take Profit Limit order instead.'
)
console.log(base, quote)
}
}
txid = await mangoClient.addPerpTriggerOrder(
mangoGroup,
mangoAccount,