Administrator
4 天以前 48fb7a00951f91bdc707e5dd2d196e5bccb752c3
trade/l2_trade_factor.py
@@ -6,7 +6,7 @@
from code_attribute import big_money_num_manager, limit_up_time_manager, global_data_loader, gpcode_manager
import constant
from trade import trade_manager
from trade import trade_manager, deal_big_money_manager, trade_constant
from utils import global_util, tool
@@ -118,7 +118,7 @@
    # 是否是初次下单
    @classmethod
    def is_first_place_order(cls, code):
        return trade_manager.CodesTradeStateManager().get_trade_state_cache(code) == trade_manager.TRADE_STATE_NOT_TRADE
        return trade_manager.CodesTradeStateManager().get_trade_state_cache(code) == trade_constant.TRADE_STATE_NOT_TRADE
    # 设置分数
    def set_score(self, score):
@@ -159,21 +159,17 @@
    # 获取需要的大单个数
    def get_big_num_count(self):
        # if self.is_first_code:
        #     if self.buy_rank < 2:
        #         return 0
        #     elif self.buy_rank == 2:
        #         return 1
        #     elif self.buy_rank == 3:
        #         return 2
        counts = [1, 1, 1, 1, 0, 0, 0, 0]
        volume_rate_index = self.volume_rate_index
        if self.volume_rate_index >= len(counts):
            volume_rate_index = -1
        # 第一次下单必须为2个
        if self.is_first_place_order(self.code):
            return 2
        return counts[volume_rate_index]
        # counts = [1, 1, 1, 1, 0, 0, 0, 0]
        # volume_rate_index = self.volume_rate_index
        # if self.volume_rate_index >= len(counts):
        #     volume_rate_index = -1
        # return counts[volume_rate_index]
        # 有大单成交就不需要大单了,没有大单成交就需要大单
        deal_big_money_count = deal_big_money_manager.get_deal_big_money_count(self.code)
        if deal_big_money_count > 0:
            return 0
        else:
            return 1
    # 获取安全笔数影响比例
    def get_safe_count_rate(self):
@@ -190,12 +186,13 @@
        base_count, min_count, max_count = L2TradeFactorUtil.get_safe_buy_count(self.code, True)
        rate = self.get_safe_count_rate()
        count = int(round(base_count * (1 + rate)))
        return count
        # 最少8笔
        return max(count, 8)
    # 获取m值影响比例
    @classmethod
    def get_m_val_rate(cls, volume_rate_index):
        rates = [0.0, -0.1, -0.2, -0.3, -0.4, -0.5, -0.6, -0.7]
        rates = [0.0, -0.1, -0.15, -0.2, -0.25, -0.3, -0.35, -0.4]
        if volume_rate_index >= len(rates):
            volume_rate_index = -1
        return rates[volume_rate_index]
@@ -212,8 +209,8 @@
    # 获取m值
    def get_m_val(self):
        base_m = self.get_base_m_val(self.code)
        if self.is_first_place_order(self.code):
            base_m = int(base_m * 1.5)
        if self.is_first_place_order(self.code) and tool.is_sz_code(self.code):
            base_m = int(base_m * 2)
        rate = self.get_m_val_rate(self.volume_rate_index)
        m = round(base_m * (1 + rate))
        return m, ""
@@ -545,8 +542,8 @@
    # print(L2TradeFactorUtil.get_rate_factors("003004"))
    # print(L2TradeFactorUtil.factors_to_string("003004"))
    for i in range(2, 150):
        print(i, L2TradeFactorUtil.get_base_safe_val(100000000 * i))
    # for i in range(2, 150):
    print(22, L2TradeFactorUtil.get_base_safe_val(100000000 * 22))
    # print(L2TradeFactorUtil.get_limit_up_time_rate("11:30:00"))
    # print(L2TradeFactorUtil.get_limit_up_time_rate("13:00:00"))
    # print(L2TradeFactorUtil.get_limit_up_time_rate("13:48:00"))