strategy/buying_strategy.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
strategy/data_cache.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
strategy/market_sentiment_analysis.py | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
strategy/buying_strategy.py
@@ -109,6 +109,22 @@ async_log_util.info(logger, content) # 获取具体的下单金额【具体选用哪一个参数作为下单金额,判断依据有优先级】 def get_order_money(): """ 获取下单金额 :return: """ if data_cache.BUY_MONEY_PER_CODE > 0: logger.info(f"采用GUI设置方式=》今日计划下单金额:{data_cache.BUY_MONEY_PER_CODE}") return data_cache.BUY_MONEY_PER_CODE if data_cache.today_first_planned_order_amount > 0: logger.info(f"采用开仓策略首次计算结果=》今日计划下单金额:{data_cache.today_first_planned_order_amount}") return data_cache.today_first_planned_order_amount logger.info(f"采用开仓策略实时计算方式=》今日计划下单金额:{data_cache.today_planned_order_amount}") return data_cache.today_planned_order_amount # 涨幅视界策略【根据涨幅进入视界为起始的策略】 def growth_view_strategy(current_info): symbol_code = current_info[0] # 券商接口为纯数字编号 @@ -349,10 +365,10 @@ logger_info( f"最新价: {current_price}, 当日最高价:{current_high},瞬时涨幅: {tick_growth:.2f}%,当日当时涨幅:{today_growth}%,公司名称:{k_line_data[0]['sec_name']},当前时间:{current_created_at},低于水位线:{deep_low:.2f},交易量今日与昨日的比例{round(current_volume / k_line_data[0]['volume'], 2)}") logger_info( f"大盘综合强度分数:{data_cache.real_time_market_strong},大盘指数情绪预期分数==={data_cache.index_trend_expectation_score}分,设想的下单金额:{data_cache.today_planned_order_amount}") f"大盘综合强度分数:{data_cache.real_time_market_strong},大盘指数情绪预期分数==={data_cache.index_trend_expectation_score}分,设想的下单金额:{get_order_money()}") # 调用下单方法下单 order_methods.buy_order_by_value(symbol, data_cache.today_planned_order_amount, get_order_money(), k_line_data[0]['sec_name'], current_price) # 查看一下该股有无大单 @@ -535,10 +551,10 @@ logger_info( f"最新价: {current_price}, 当日最高价:{current_high},瞬时涨幅: {tick_growth:.2f}%,当日当时涨幅:{today_growth}%,公司名称:{k_line_data[0]['sec_name']},当前时间:{current_created_at},低于水位线:{deep_low:.2f},交易量今日与昨日的比例{round(current_volume / k_line_data[0]['volume'], 2)}") # 输出当前价格和3秒涨幅信息 logger_info( f"大盘综合强度分数:{data_cache.real_time_market_strong},大盘指数情绪预期分数==={data_cache.index_trend_expectation_score}分,设想的下单金额:{data_cache.today_planned_order_amount}") f"大盘综合强度分数:{data_cache.real_time_market_strong},大盘指数情绪预期分数==={data_cache.index_trend_expectation_score}分,设想的下单金额:{get_order_money()}") # 调用下单方法下单 order_methods.buy_order_by_value(symbol, data_cache.today_planned_order_amount, get_order_money(), k_line_data[0]['sec_name'], current_price) # # 将有强度买入次数自加1 strategy/data_cache.py
@@ -216,10 +216,16 @@ bought_plate = [] # 持仓金额自动管理开关 position_automatic_management_switch = True # GUI手动设置的每次买入的金额 BUY_MONEY_PER_CODE = -1 # 初始化有概念买入金额 have_plate_buy_money = 3000 # 初始化有强度买入金额 have_strength_buy_money = 3000 # 开仓策略计算金额 opening_strategy_results = 0 # 今日第一次下单的金额 today_first_planned_order_amount = 0 # 今日计划下单金额 today_planned_order_amount = 0 @@ -254,8 +260,7 @@ # 大盘指数情绪预期分数 index_trend_expectation_score = 0 # 每次买入的金额 BUY_MONEY_PER_CODE = -1 # 可以板上盯卖的代码 LIMIT_UP_SELL_CODES = set() strategy/market_sentiment_analysis.py
@@ -661,8 +661,6 @@ if data_cache.real_time_market_strong < 30: # 如果大盘综合强度分数小于30,将低迷情绪分数比例设置为0.01,可用资金缩小一百倍 ideal_trading_market_score = 0.01 if data_cache.real_time_market_strong <= 10: ideal_trading_market_score = 0 logger.info(f"理想交易行情分数===={ideal_trading_market_score * 100}%") data_cache.index_trend_expectation_score = index_trend_expectation() @@ -678,22 +676,33 @@ logger.info(f"今日的剩余新增持仓数量==={Unfinished_opening_plan_number}") usefulMoney = data_cache.account_finance_dict[0].get('usefulMoney', 0) logger.info(f"账户可用资金==={usefulMoney}元") # 如果一日三仓的计划还未完成 且 未设置过开仓计划金额 if Unfinished_opening_plan_number != 0 and data_cache.today_planned_order_amount <= 0: # 如果GUI看盘手动设置了具体的下单金额【ata_cache.BUY_MONEY_PER_CODE 中默认值为-1,只有当GUI看盘手动设置了并提交才会>=0】,就按照GUI设置的金额下单。否则就按照评分策略的金额下单, if data_cache.BUY_MONEY_PER_CODE >= 0: data_cache.today_planned_order_amount = data_cache.BUY_MONEY_PER_CODE logger.info(f"采用GUI设置方式=》今日计划下单金额:{data_cache.today_planned_order_amount}") else: # 如果今日还没有一个新增仓位,就不停计算更新计划金额 if addition_position_number <= 0: # 根据账户可用金额 计算今日计划下单金额 # 账户可用金额 默认乘以0.95,永远留一点钱,一方面也冗余一些计算误差 # ((大盘综合强度分数 + 大盘指数情绪预期分数) * 0.01) * (账户可用金额 * 0.9 * 极端低迷情绪比例 / 今日最大新增持仓票数) # data_cache.today_planned_order_amount = ((data_cache.real_time_market_strong + data_cache.index_trend_expectation_score) * 0.01) * ( # usefulMoney * 0.9 * low_emotion_mood_ratio / Unfinished_opening_plan_number) data_cache.today_planned_order_amount = usefulMoney * 0.95 * ideal_trading_market_score / Unfinished_opening_plan_number logger.info(f"采用开仓策略计算方式=》今日计划下单金额:{data_cache.today_planned_order_amount}") # 开仓策略计算结果 # 根据账户可用金额 计算今日计划下单金额 # 账户可用金额 默认乘以0.95,永远留一点钱,一方面也冗余一些计算误差 # ((大盘综合强度分数 + 大盘指数情绪预期分数) * 0.01) * (账户可用金额 * 0.9 * 极端低迷情绪比例 / 今日最大新增持仓票数) # data_cache.today_planned_order_amount = ((data_cache.real_time_market_strong + data_cache.index_trend_expectation_score) * 0.01) * ( # usefulMoney * 0.9 * low_emotion_mood_ratio / Unfinished_opening_plan_number) # 除以3应该是一个常量,如果以Unfinished_opening_plan_number,会出现float division by zero 错误 data_cache.today_planned_order_amount = usefulMoney * 0.95 * ideal_trading_market_score / 3 # 开仓计划运行时间段 if data_cache.OPENING_TIME < now_time < data_cache.NOON_MARKET_TIME: # # 如果一日三仓的计划还未完成 且 首次开仓金额为0 if Unfinished_opening_plan_number != 0 and data_cache.today_first_planned_order_amount <= 0: # 如果GUI看盘手动设置了具体的下单金额【data_cache.BUY_MONEY_PER_CODE 中默认值为-1,只有当GUI看盘手动设置了并提交才会>=0】,就按照GUI设置的金额下单。否则就按照评分策略的金额下单, # if data_cache.BUY_MONEY_PER_CODE >= 0: # data_cache.today_planned_order_amount = data_cache.BUY_MONEY_PER_CODE # logger.info(f"采用GUI设置方式=》今日计划下单金额:{data_cache.today_planned_order_amount}") # else: # # 如果今日还没有一个新增仓位,就不停计算更新计划金额 # if addition_position_number > 0: # data_cache.today_planned_order_amount = data_cache.opening_strategy_results # logger.info(f"采用开仓策略计算方式=》今日计划下单金额:{data_cache.today_planned_order_amount}") if addition_position_number > 0: # 下过一次单过后再计算动态下单金额 data_cache.today_first_planned_order_amount = float(data_cache.today_planned_order_amount) logger.info( f"采用开仓策略计算方式--》今日(首个)新增持仓产生,将实时计算金额赋值给首笔持仓金额=》今日计划下单金额:{data_cache.today_planned_order_amount}") except Exception as error: logger_debug.exception(error) logger.error(f"实时设置计划持仓数量 函数报错: {error}")