@@ -399,20 +399,21 @@ TradeRecord Strategy::order(const Stock& stk, double num, const string& remark)
399399 double min_trade_num = stk.minTradeNumber ();
400400 double max_trade_num = stk.maxTradeNumber ();
401401 if (num > 0.0 ) {
402- HKU_WARN_IF_RETURN (num < min_trade_num, ret,
403- " {} {} order num({}) is less than min trade number({})!" ,
404- stk.market_code (), stk.name (), num, min_trade_num);
405- double buy_num = num;
402+ // HKU_WARN_IF_RETURN(num < min_trade_num, ret,
403+ // "Ignore! {} {} order num({}) is less than min trade number({})!",
404+ // stk.market_code(), stk.name(), num, min_trade_num);
405+ HKU_IF_RETURN (num < min_trade_num, ret);
406+ double buy_num = int64_t (num / min_trade_num) * min_trade_num;
406407 if (buy_num > max_trade_num) {
407408 buy_num = max_trade_num;
408409 }
409410 ret = buy (stk, 0.0 , num, 0.0 , 0.0 , SystemPart::PART_SIGNAL, remark);
410411
411412 } else {
412- double sell_num = std::abs (num);
413+ double sell_num = int64_t ( std::abs (num) / min_trade_num) * min_trade_num ;
413414 if (sell_num > max_trade_num && sell_num != MAX_DOUBLE) {
414415 sell_num = max_trade_num;
415- } else if (sell_num < min_trade_num) {
416+ } else if (( sell_num + num) < min_trade_num) {
416417 sell_num = MAX_DOUBLE; // 指示卖出剩余全部
417418 }
418419 ret = sell (stk, 0.0 , sell_num, 0.0 , 0.0 , SystemPart::PART_SIGNAL, remark);
0 commit comments