mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-10 09:11:55 +00:00
autoborrow: add more logs
This commit is contained in:
parent
bc0fd7a312
commit
106e98afaa
|
@ -84,7 +84,7 @@ type MarginAsset struct {
|
||||||
MaxTotalBorrow fixedpoint.Value `json:"maxTotalBorrow"`
|
MaxTotalBorrow fixedpoint.Value `json:"maxTotalBorrow"`
|
||||||
MaxQuantityPerBorrow fixedpoint.Value `json:"maxQuantityPerBorrow"`
|
MaxQuantityPerBorrow fixedpoint.Value `json:"maxQuantityPerBorrow"`
|
||||||
MinQuantityPerBorrow fixedpoint.Value `json:"minQuantityPerBorrow"`
|
MinQuantityPerBorrow fixedpoint.Value `json:"minQuantityPerBorrow"`
|
||||||
MinDebtRatio fixedpoint.Value `json:"debtRatio"`
|
DebtRatio fixedpoint.Value `json:"debtRatio"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Strategy struct {
|
type Strategy struct {
|
||||||
|
@ -181,9 +181,11 @@ func (s *Strategy) reBalanceDebt(ctx context.Context) {
|
||||||
// debt / total
|
// debt / total
|
||||||
debt := b.Debt()
|
debt := b.Debt()
|
||||||
total := b.Total()
|
total := b.Total()
|
||||||
|
|
||||||
debtRatio := debt.Div(total)
|
debtRatio := debt.Div(total)
|
||||||
if marginAsset.MinDebtRatio.IsZero() {
|
|
||||||
marginAsset.MinDebtRatio = fixedpoint.One
|
if marginAsset.DebtRatio.IsZero() {
|
||||||
|
marginAsset.DebtRatio = fixedpoint.One
|
||||||
}
|
}
|
||||||
|
|
||||||
if total.Compare(marginAsset.Low) <= 0 {
|
if total.Compare(marginAsset.Low) <= 0 {
|
||||||
|
@ -199,24 +201,29 @@ func (s *Strategy) reBalanceDebt(ctx context.Context) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// the current debt ratio is less than the minimal ratio,
|
// if debtRatio is lesser, means that we have more spot, we should try to repay as much as we can
|
||||||
// we need to repay and reduce the debt
|
if debtRatio.Compare(marginAsset.DebtRatio) > 0 {
|
||||||
if debtRatio.Compare(marginAsset.MinDebtRatio) > 0 {
|
log.Infof("%s debt ratio %f is greater than min debt ratio %f, skip", marginAsset.Asset, debtRatio.Float64(), marginAsset.DebtRatio.Float64())
|
||||||
log.Infof("%s debt ratio %f is greater than min debt ratio %f, skip", marginAsset.Asset, debtRatio.Float64(), marginAsset.MinDebtRatio.Float64())
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.Infof("checking repayable balance: %+v", b)
|
||||||
|
|
||||||
toRepay := fixedpoint.Min(b.Borrowed, b.Available)
|
toRepay := fixedpoint.Min(b.Borrowed, b.Available)
|
||||||
toRepay = toRepay.Sub(marginAsset.Low)
|
toRepay = toRepay.Sub(marginAsset.Low)
|
||||||
|
|
||||||
if toRepay.Sign() <= 0 {
|
if toRepay.Sign() <= 0 {
|
||||||
log.Warnf("%s repay amount = 0, can not repay", marginAsset.Asset)
|
log.Warnf("%s repay = %f, available = %f, borrowed = %f, can not repay",
|
||||||
|
marginAsset.Asset,
|
||||||
|
toRepay.Float64(),
|
||||||
|
b.Available.Float64(),
|
||||||
|
b.Borrowed.Float64())
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
bbgo.Notify(&MarginAction{
|
bbgo.Notify(&MarginAction{
|
||||||
Exchange: s.ExchangeSession.ExchangeName,
|
Exchange: s.ExchangeSession.ExchangeName,
|
||||||
Action: fmt.Sprintf("Repay for Debt Ratio %f < Min Debt Ratio %f", debtRatio.Float64(), marginAsset.MinDebtRatio.Float64()),
|
Action: fmt.Sprintf("Repay for Debt Ratio %f < Minimal Debt Ratio %f", debtRatio.Float64(), marginAsset.DebtRatio.Float64()),
|
||||||
Asset: b.Currency,
|
Asset: b.Currency,
|
||||||
Amount: toRepay,
|
Amount: toRepay,
|
||||||
MarginLevel: account.MarginLevel,
|
MarginLevel: account.MarginLevel,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user