Browse Source

util.CreateOrder

- refactoring
Alexey Kim 1 month ago
parent
commit
cb76bc7875
2 changed files with 10 additions and 10 deletions
  1. 1 0
      market.go
  2. 9 10
      util/order.go

+ 1 - 0
market.go

@@ -12,6 +12,7 @@ type Market interface {
 	Subscribe(symbols ...string) error
 	Subscribe(symbols ...string) error
 
 
 	Account() (MarketAccount, error)
 	Account() (MarketAccount, error)
+	MaxBudget() float64
 
 
 	CreateOrder(symbol string, limit float64, quantity uint, rm RiskManager) (Order, error)
 	CreateOrder(symbol string, limit float64, quantity uint, rm RiskManager) (Order, error)
 	UpdateOrder(orderID string, rm RiskManager) error
 	UpdateOrder(orderID string, rm RiskManager) error

+ 9 - 10
util/order.go

@@ -12,7 +12,6 @@ func CreateOrder(
 	action sentio.Action,
 	action sentio.Action,
 	quotes map[string]sentio.Quote,
 	quotes map[string]sentio.Quote,
 	rm sentio.RiskManager,
 	rm sentio.RiskManager,
-	budget float64,
 ) error {
 ) error {
 	var (
 	var (
 		symbol  string
 		symbol  string
@@ -53,21 +52,21 @@ func CreateOrder(
 		return err
 		return err
 	}
 	}
 
 
-	if account.GetCash() < bid {
-		return sentio.ErrTooSmallOrder
-	}
-
 	var (
 	var (
+		cash  = account.GetCash()
 		ratio float64
 		ratio float64
 	)
 	)
 
 
-	if ratio = rm.GetOrderSize(symbol, bid); ratio <= 0 {
-		return sentio.ErrRiskManagementPrevent
+	if budget := m.MaxBudget(); budget > 0 && cash > budget {
+		cash = budget
 	}
 	}
 
 
-	cash := account.GetCash()
-	if budget > 0 && cash > budget {
-		cash = budget
+	if cash < bid {
+		return sentio.ErrTooSmallOrder
+	}
+
+	if ratio = rm.GetOrderSize(symbol, bid); ratio <= 0 {
+		return sentio.ErrRiskManagementPrevent
 	}
 	}
 
 
 	// create a new order
 	// create a new order