| | |
| | | # 证券代码 |
| | | req_field.SecurityID = code |
| | | req_field.Direction = traderapi.TORA_TSTP_D_Sell |
| | | req_field.VolumeTotalOriginal = count |
| | | |
| | | req_field.SInfo = sinfo |
| | | |
| | | ''' |
| | |
| | | req_field.OrderPriceType = traderapi.TORA_TSTP_OPT_HomeBestPrice |
| | | |
| | | req_field.TimeCondition = traderapi.TORA_TSTP_TC_GFD |
| | | req_field.VolumeCondition = traderapi.TORA_TSTP_VC_AV |
| | | if count <= 0: |
| | | req_field.VolumeCondition = traderapi.TORA_TSTP_VC_CV |
| | | else: |
| | | req_field.VolumeCondition = traderapi.TORA_TSTP_VC_AV |
| | | req_field.VolumeTotalOriginal = count |
| | | if order_ref: |
| | | req_field.OrderRef = order_ref |
| | | |
| | |
| | | import logging |
| | | import multiprocessing |
| | | import time |
| | | |
| | | from huaxin_client.cb import trade_client_for_cb |
| | | from log_module.log import logger_info, printlog |
| | | from trade import huaxin_trade_api |
| | | |
| | | if __name__ == "__main__": |
| | | try: |
| | | q_s_w_t_r, q_s_r_t_w = multiprocessing.Queue(), multiprocessing.Queue() |
| | | huaxin_trade_api.run_pipe_trade(q_s_r_t_w, q_s_w_t_r) |
| | | tradeProcess = multiprocessing.Process( |
| | | target= trade_client_for_cb.run, |
| | | args=(q_s_w_t_r, q_s_r_t_w)) |
| | | tradeProcess.start() |
| | | time.sleep(3) |
| | | printlog("获取委托结果", huaxin_trade_api.get_delegate_list()) |
| | | |
| | | time.sleep(2) |
| | | printlog("获取持仓结果", huaxin_trade_api.get_position_list(True)) |
| | | |
| | | |
| | | |
| | | |
| | | except Exception as e: |
| | | logging.exception(e) |
| | | finally: |
| | | logger_info.debug("程序结束") |
| | | pass |
| | |
| | | |
| | | # 持仓记录 |
| | | class PositionManager: |
| | | __db = 2 |
| | | __redisManager = redis_manager.RedisManager(2) |
| | | latest_positions = [] |
| | | __available_position_cache_dict = {} |
| | | |
| | | @classmethod |
| | | def __get_redis(cls): |
| | |
| | | # 保存代码的量 |
| | | @classmethod |
| | | def __save_code_volume(cls, code, volume): |
| | | RedisUtils.setex(cls.__get_redis(), f"available_position_{code}", tool.get_expire(), f"{volume}") |
| | | cls.__available_position_cache_dict[code] = volume |
| | | RedisUtils.setex_async(cls.__db, f"available_position_{code}", tool.get_expire(), f"{volume}") |
| | | |
| | | @classmethod |
| | | def get_code_volume(cls, code): |
| | |
| | | return int(val) |
| | | |
| | | @classmethod |
| | | def get_code_volume_cache(cls, code): |
| | | cls.__available_position_cache_dict.get(code) |
| | | |
| | | @classmethod |
| | | def cache(cls, datas): |
| | | cls.latest_positions = copy.deepcopy(datas) |
| | | |
| | |
| | | limit_up_price = gpcode_manager.get_limit_up_price(code) |
| | | order_ref = huaxin_util.create_order_ref() |
| | | try: |
| | | # 如果卖量比持仓还大,就全部卖完 |
| | | position_volume = PositionManager().get_code_volume_cache(code) |
| | | if position_volume and volume >= position_volume: |
| | | # 表示全部卖完 |
| | | volume = -1 |
| | | result = huaxin_sell_util.start_sell(code, volume, price_type, limit_up_price, limit_down_price, |
| | | current_price, blocking=True, request_id=request_id, |
| | | order_ref=order_ref) |