@@ -26,8 +26,8 @@ module Bfx
26
26
candlesLast ,
27
27
candlesHist ,
28
28
tickers ,
29
- MinOrderArgs (.. ),
30
- mkMinOrder ,
29
+ MkOrder (.. ),
30
+ mkOrder ,
31
31
module X ,
32
32
)
33
33
where
@@ -580,10 +580,11 @@ tickers =
580
580
]
581
581
emptyReq
582
582
583
- data MinOrderArgs = MinOrderArgs
584
- { minOrderArgsFee :: FeeRate ,
585
- minOrderArgsBuyOrSell :: BuyOrSell ,
586
- minOrderArgsCurrencyPair :: CurrencyPair
583
+ data MkOrder = MkOrder
584
+ { mkOrderFee :: FeeRate ,
585
+ mkOrderBuyOrSell :: BuyOrSell ,
586
+ mkOrderNetBaseAmt :: Maybe MoneyAmount ,
587
+ mkOrderCurrencyPair :: CurrencyPair
587
588
}
588
589
deriving stock
589
590
( Eq ,
@@ -594,43 +595,48 @@ data MinOrderArgs = MinOrderArgs
594
595
Generic
595
596
)
596
597
597
- mkMinOrder ::
598
+ mkOrder ::
598
599
( MonadThrow m ,
599
600
MonadUnliftIO m
600
601
) =>
601
- MinOrderArgs ->
602
+ MkOrder ->
602
603
m SubmitOrder. Request
603
- mkMinOrder args = do
604
- syms <- symbolsDetails
605
- minBaseAmt <-
604
+ mkOrder args = do
605
+ netBaseAmt <-
606
606
maybe
607
- (throwString $ inspect @ Text sym <> " is missing!" )
608
- (pure . currencyPairMinOrderBaseAmt)
609
- $ Map. lookup sym syms
610
- baseAmt <-
607
+ ( do
608
+ syms <- symbolsDetails
609
+ maybe
610
+ (throwString $ inspect @ Text sym <> " is missing!" )
611
+ (pure . currencyPairMinOrderBaseAmt)
612
+ $ Map. lookup sym syms
613
+ )
614
+ pure
615
+ $ mkOrderNetBaseAmt args
616
+ grossBaseAmt <-
611
617
case bos of
612
618
Buy ->
613
619
tweakMoneyAmount Buy
614
620
. MoneyAmount
615
- $ unMoneyAmount minBaseAmt
616
- / (1 - unFeeRate (minOrderArgsFee args))
621
+ $ unMoneyAmount netBaseAmt
622
+ / (1 - unFeeRate (mkOrderFee args))
617
623
Sell ->
618
- pure minBaseAmt
624
+ pure netBaseAmt
619
625
price <-
620
626
Bfx. marketAveragePrice
621
627
MarketAveragePrice. Request
622
628
{ MarketAveragePrice. buyOrSell = bos,
623
- MarketAveragePrice. baseAmount = baseAmt ,
629
+ MarketAveragePrice. baseAmount = grossBaseAmt ,
624
630
MarketAveragePrice. symbol = sym
625
631
}
626
632
pure
627
633
SubmitOrder. Request
628
634
{ SubmitOrder. buyOrSell = bos,
629
- SubmitOrder. baseAmount = baseAmt ,
635
+ SubmitOrder. baseAmount = grossBaseAmt ,
630
636
SubmitOrder. symbol = sym,
631
637
SubmitOrder. rate = price,
632
638
SubmitOrder. options = SubmitOrder. optsDef
633
639
}
634
640
where
635
- bos = minOrderArgsBuyOrSell args
636
- sym = minOrderArgsCurrencyPair args
641
+ bos = mkOrderBuyOrSell args
642
+ sym = mkOrderCurrencyPair args
0 commit comments