Administrator
2023-06-06 751183dcd74207a50834cacc575f0dfccb41658c
trade/l2_trade_factor.py
@@ -90,9 +90,15 @@
                score_index = i
                break
        self.score_index = score_index
        # 只要加入想买单的,全部执行主动买入一星方案
        if gpcode_manager.WantBuyCodesManager.is_in(code) and self.score_index >= 3:
            self.score_index = 2
        # 只要加入想买单的,全部执行主动买入二星方案
        if gpcode_manager.WantBuyCodesManager.is_in(code):
            self.score_index = 1
            self.is_want_buy = True
        else:
            self.is_want_buy = False
            # 没有加入想买单的,2星/3星将为1星
            if self.score_index == 0 or self.score_index == 1:
                self.score_index = 2
        self.volume_rate = volume_rate
        self.volume_rate_index = volume_rate_index
@@ -124,7 +130,8 @@
    # 获取时间计算范围,返回s
    def get_time_range(self):
        ts = [pow(3, 1), pow(3, 1), pow(3, 1), pow(3, 2), pow(3, 2), pow(3, 3), pow(3, 3), pow(3, 3)]
        # ts = [pow(3, 1), pow(3, 1), pow(3, 1), pow(3, 2), pow(3, 2), pow(3, 3), pow(3, 3), pow(3, 3)]
        ts = [pow(2, 1), pow(2, 1), pow(2, 1), pow(2, 1), pow(2, 1), pow(2, 1), pow(2, 1), pow(2, 1)]
        if -1 < self.score_index < 3:
            return ts[0]
        volume_rate_index = self.volume_rate_index
@@ -174,16 +181,20 @@
    # 获取m值
    def get_m_val(self):
        if self.is_first_code:
            if self.buy_rank == 0:
                return 0, ""
            elif self.buy_rank < 4:
                return 1000 * 10000, ""
        # 获取固定m值
        zyltgb = global_util.zyltgb_map.get(self.code)
        if zyltgb is None:
            global_data_loader.load_zyltgb()
            zyltgb = global_util.zyltgb_map.get(self.code)
        if self.is_first_code:
            if self.buy_rank == 0:
                return 0, ""
            elif self.is_want_buy and zyltgb and zyltgb < 20 * 10000 * 10000:
                # 小于20亿的想买单
                return 500 * 10000, ""
            elif self.buy_rank < 4:
                return 1000 * 10000, ""
        base_m = L2TradeFactorUtil.get_base_safe_val(zyltgb)
        rate = self.get_m_val_rate(self.volume_rate_index)
@@ -213,7 +224,7 @@
    # 获取撤销比例
    @staticmethod
    def get_cancel_rate(volume_rate_index):
        rates = [0.39, 0.49, 0.59, 0.69, 0.69, 0.79, 0.79, 0.79]
        rates = [0.34, 0.44, 0.54, 0.64, 0.74, 0.84, 0.94, 1.04]
        if volume_rate_index >= len(rates):
            volume_rate_index = -1
        return rates[volume_rate_index]