Procházet zdrojové kódy

util.CreateOrder

- refactoring
Alexey Kim před 1 měsícem
rodič
revize
cb76bc7875
2 změnil soubory, kde provedl 10 přidání a 10 odebrání
  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
 
 	Account() (MarketAccount, error)
+	MaxBudget() float64
 
 	CreateOrder(symbol string, limit float64, quantity uint, rm RiskManager) (Order, error)
 	UpdateOrder(orderID string, rm RiskManager) error

+ 9 - 10
util/order.go

@@ -12,7 +12,6 @@ func CreateOrder(
 	action sentio.Action,
 	quotes map[string]sentio.Quote,
 	rm sentio.RiskManager,
-	budget float64,
 ) error {
 	var (
 		symbol  string
@@ -53,21 +52,21 @@ func CreateOrder(
 		return err
 	}
 
-	if account.GetCash() < bid {
-		return sentio.ErrTooSmallOrder
-	}
-
 	var (
+		cash  = account.GetCash()
 		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