浏览代码

util.CreateOrder

- refactoring
Alexey Kim 2 月之前
父节点
当前提交
cb76bc7875
共有 2 个文件被更改,包括 10 次插入10 次删除
  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