Skip to content

Commit 45fe150

Browse files
committed
can set quote amount in MkOrder args for bfx
1 parent 31458c7 commit 45fe150

File tree

4 files changed

+47
-16
lines changed

4 files changed

+47
-16
lines changed

nix/configuration.nix

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,18 +48,16 @@
4848
"delfi.ee"
4949
"postimees.ee"
5050
"rumble.com"
51-
"t.me"
5251
"twitter.com"
5352
"twitch.tv"
54-
"tiendamia.com"
55-
"mercadolibre.com.uy"
56-
"facebook.com"
5753
"discord.com"
58-
"telegram.org"
54+
"odysee.com"
55+
"bastyon.com"
56+
"bitchute.com"
5957
"youtube.com"
60-
# "odysee.com"
61-
# "bastyon.com"
62-
# "bitchute.com"
58+
"facebook.com"
59+
"telegram.org"
60+
"t.me"
6361
]
6462
else []
6563
));

prv

Submodule prv updated from 1be45d2 to 31a734e

pub/bfx/src/Bfx.hs

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,11 @@ tickers =
516516
data MkOrder = MkOrder
517517
{ mkOrderFee :: FeeRate,
518518
mkOrderBuyOrSell :: BuyOrSell,
519+
--
520+
-- NOTE : base amt has higher priority!
521+
--
519522
mkOrderNetBaseAmt :: Maybe MoneyAmount,
523+
mkOrderNetQuoteAmt :: Maybe MoneyAmount,
520524
mkOrderCurrencyPair :: CurrencyPair
521525
}
522526
deriving stock
@@ -539,10 +543,28 @@ mkOrder args = do
539543
maybe
540544
( do
541545
syms <- symbolsDetails
546+
minBase <-
547+
maybe
548+
(throwString $ inspect @Text sym <> " is missing!")
549+
(pure . currencyPairMinOrderBaseAmt)
550+
$ Map.lookup sym syms
542551
maybe
543-
(throwString $ inspect @Text sym <> " is missing!")
544-
(pure . currencyPairMinOrderBaseAmt)
545-
$ Map.lookup sym syms
552+
(pure minBase)
553+
( \netQuoteAmt -> do
554+
price <-
555+
Bfx.marketAveragePrice
556+
MarketAveragePrice.Request
557+
{ MarketAveragePrice.buyOrSell = bos,
558+
MarketAveragePrice.baseAmount = minBase,
559+
MarketAveragePrice.symbol = sym
560+
}
561+
pure
562+
. max minBase
563+
. MoneyAmount
564+
$ unMoneyAmount netQuoteAmt
565+
/ unQuotePerBase price
566+
)
567+
$ mkOrderNetQuoteAmt args
546568
)
547569
pure
548570
$ mkOrderNetBaseAmt args

pub/bfx/test/BfxSpec.hs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,23 @@ spec = before sysEnv $ do
119119
{ Bfx.mkOrderFee = FeeRate 0.001,
120120
Bfx.mkOrderBuyOrSell = Buy,
121121
Bfx.mkOrderNetBaseAmt = Nothing,
122+
Bfx.mkOrderNetQuoteAmt = Nothing,
122123
Bfx.mkOrderCurrencyPair = adaBtc
123124
}
124-
buy <- Bfx.mkOrder req
125-
SubmitOrder.baseAmount buy `shouldBe` MoneyAmount 4.00400401
126-
sell <- Bfx.mkOrder req {Bfx.mkOrderBuyOrSell = Sell}
127-
SubmitOrder.baseAmount sell `shouldBe` MoneyAmount 4
125+
-- let reqQuote = req {Bfx.mkOrderNetQuoteAmt = Just $ MoneyAmount 1}
126+
-- buyQuote <- Bfx.mkOrder reqQuote
127+
-- SubmitOrder.baseAmount buyQuote `shouldBe` MoneyAmount 10.01001002
128+
-- sellQuote <- Bfx.mkOrder reqQuote {Bfx.mkOrderBuyOrSell = Sell}
129+
-- SubmitOrder.baseAmount sellQuote `shouldBe` MoneyAmount 10
130+
buyDef <- Bfx.mkOrder req
131+
SubmitOrder.baseAmount buyDef `shouldBe` MoneyAmount 4.00400401
132+
sellDef <- Bfx.mkOrder req {Bfx.mkOrderBuyOrSell = Sell}
133+
SubmitOrder.baseAmount sellDef `shouldBe` MoneyAmount 4
134+
let reqBase = req {Bfx.mkOrderNetBaseAmt = Just $ MoneyAmount 10}
135+
buyBase <- Bfx.mkOrder reqBase
136+
SubmitOrder.baseAmount buyBase `shouldBe` MoneyAmount 10.01001002
137+
sellBase <- Bfx.mkOrder reqBase {Bfx.mkOrderBuyOrSell = Sell}
138+
SubmitOrder.baseAmount sellBase `shouldBe` MoneyAmount 10
128139

129140
-- describe "End2End" $ do
130141
-- itRight "submitOrderMaker" $ \env -> do

0 commit comments

Comments
 (0)