mns-scheduler 1.0.3.5__tar.gz → 1.0.3.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mns-scheduler might be problematic. Click here for more details.
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/PKG-INFO +1 -1
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/db/col_move_service.py +1 -1
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/real_time/realtime_quotes_now_sync.py +5 -1
- {mns-scheduler-1.0.3.5/mns_scheduler/ipo → mns-scheduler-1.0.3.7/mns_scheduler/trade}/auto_ipo_buy_api.py +2 -5
- mns-scheduler-1.0.3.7/mns_scheduler/trade/auto_sell_service_api.py +116 -0
- mns-scheduler-1.0.3.7/mns_scheduler/trade/sync_position_api.py +56 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zz_task/data_sync_task.py +15 -1
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler.egg-info/PKG-INFO +1 -1
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler.egg-info/SOURCES.txt +4 -2
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/setup.py +1 -1
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/README.md +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/app/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/em/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/wen_cai/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/big_deal/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/company_info/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/company_info/company_constant_data.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/company_info/company_info_sync_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/clean/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/common/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/db/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/db/db_status.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/dt/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/k_line/__init__.py +0 -0
- {mns-scheduler-1.0.3.5/mns_scheduler/ipo → mns-scheduler-1.0.3.7/mns_scheduler/k_line/clean}/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/k_line/clean/k_line_info_clean_service.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/k_line/sync/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
- {mns-scheduler-1.0.3.5/mns_scheduler/k_line/clean → mns-scheduler-1.0.3.7/mns_scheduler/kpl}/__init__.py +0 -0
- {mns-scheduler-1.0.3.5/mns_scheduler/kpl → mns-scheduler-1.0.3.7/mns_scheduler/kpl/selection}/__init__.py +0 -0
- {mns-scheduler-1.0.3.5/mns_scheduler/kpl/selection → mns-scheduler-1.0.3.7/mns_scheduler/kpl/selection/index}/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns-scheduler-1.0.3.5/mns_scheduler/kpl/selection/index → mns-scheduler-1.0.3.7/mns_scheduler/kpl/selection/symbol}/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
- {mns-scheduler-1.0.3.5/mns_scheduler/kpl/selection/symbol → mns-scheduler-1.0.3.7/mns_scheduler/kpl/selection/total}/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
- {mns-scheduler-1.0.3.5/mns_scheduler/kpl/selection/total → mns-scheduler-1.0.3.7/mns_scheduler/real_time}/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
- {mns-scheduler-1.0.3.5/mns_scheduler/real_time → mns-scheduler-1.0.3.7/mns_scheduler/trade}/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zb/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/export_open_data_to_excel.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/today_high_chg_pool_sync_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/zt_five_boards_sync_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/zt_pool_sync_api.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zz_task/__init__.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/setup.cfg +0 -0
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/real_time/realtime_quotes_now_sync.py
RENAMED
|
@@ -18,7 +18,7 @@ import mns_scheduler.real_time.realtime_quotes_now_create_db_index as realtime_q
|
|
|
18
18
|
import pandas as pd
|
|
19
19
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
20
20
|
from mns_common.utils.async_fun import async_fun
|
|
21
|
-
|
|
21
|
+
import mns_scheduler.trade.auto_sell_service_api as auto_sell_service_api
|
|
22
22
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
23
23
|
|
|
24
24
|
mongodb_util = MongodbUtil('27017')
|
|
@@ -181,6 +181,10 @@ def sync_realtime_quotes():
|
|
|
181
181
|
str_now_date, number)
|
|
182
182
|
save_real_time_quotes(real_time_quotes_now.copy(), now_date, db_name_constant.REAL_TIME_QUOTES_NOW,
|
|
183
183
|
number)
|
|
184
|
+
try:
|
|
185
|
+
auto_sell_service_api.auto_sell_stock(real_time_quotes_now.copy())
|
|
186
|
+
except Exception as e:
|
|
187
|
+
logger.error("自动卖出执行异常:{}", e)
|
|
184
188
|
|
|
185
189
|
if date_util.is_call_auction(str_now_date) or date_util.is_afternoon_time(now_date):
|
|
186
190
|
if number % 3 == 0:
|
|
@@ -6,15 +6,12 @@ end = file_path.index('mns') + 17
|
|
|
6
6
|
project_path = file_path[0:end]
|
|
7
7
|
sys.path.append(project_path)
|
|
8
8
|
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
user = easytrader.use('ths')
|
|
12
|
-
user.connect(r'D:\Program Files\ths\xiadan.exe')
|
|
9
|
+
import mns_common.component.trade.trade_service_api as trade_service_api
|
|
13
10
|
|
|
14
11
|
|
|
15
12
|
## 自动一键打新
|
|
16
13
|
def auto_ipo_buy():
|
|
17
|
-
|
|
14
|
+
trade_service_api.auto_ipo_buy()
|
|
18
15
|
|
|
19
16
|
|
|
20
17
|
if __name__ == '__main__':
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
file_path = os.path.abspath(__file__)
|
|
5
|
+
end = file_path.index('mns') + 16
|
|
6
|
+
project_path = file_path[0:end]
|
|
7
|
+
sys.path.append(project_path)
|
|
8
|
+
|
|
9
|
+
import mns_common.utils.data_frame_util as data_frame_util
|
|
10
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
11
|
+
import datetime
|
|
12
|
+
import mns_common.component.cache.cache_service as cache_service
|
|
13
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
14
|
+
import mns_common.component.trade.trade_service_api as trade_service_api
|
|
15
|
+
from loguru import logger
|
|
16
|
+
from mns_common.utils.async_fun import async_fun
|
|
17
|
+
|
|
18
|
+
mongodb_util = MongodbUtil('27017')
|
|
19
|
+
|
|
20
|
+
AUTO_SELL_KEY = "AUTO_SELL_KEY"
|
|
21
|
+
|
|
22
|
+
# 当前跌幅卖出阈值
|
|
23
|
+
AUTO_SELL_CHG = -8
|
|
24
|
+
# 收益率阈值
|
|
25
|
+
AUTO_SELL_PROFIT_LOSS_CHG = -11.0
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# 自动卖出
|
|
29
|
+
@async_fun
|
|
30
|
+
def auto_sell_stock(realtime_quotes_now):
|
|
31
|
+
sell_flag = cache_service.get_cache(AUTO_SELL_KEY)
|
|
32
|
+
if sell_flag is not None and bool(1 - sell_flag):
|
|
33
|
+
return
|
|
34
|
+
now_date = datetime.datetime.now()
|
|
35
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
36
|
+
query_exist = {'str_day': str_day, "valid": True}
|
|
37
|
+
position_stock_df = mongodb_util.find_query_data(db_name_constant.POSITION_STOCK, query_exist)
|
|
38
|
+
if data_frame_util.is_empty(position_stock_df):
|
|
39
|
+
cache_service.set_cache(AUTO_SELL_KEY, False)
|
|
40
|
+
return None
|
|
41
|
+
else:
|
|
42
|
+
cache_service.set_cache(AUTO_SELL_KEY, True)
|
|
43
|
+
position_stock_symbol_list = list(position_stock_df['symbol'])
|
|
44
|
+
realtime_quotes_now_position = realtime_quotes_now.loc[
|
|
45
|
+
realtime_quotes_now['symbol'].isin(position_stock_symbol_list)]
|
|
46
|
+
sell_stock_detail(realtime_quotes_now_position, position_stock_df, str_day, now_date)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def sell_stock_detail(realtime_quotes_now_position, position_stock_df, str_day, now_date):
|
|
50
|
+
for stock_one in realtime_quotes_now_position.itertuples():
|
|
51
|
+
try:
|
|
52
|
+
|
|
53
|
+
symbol = stock_one.symbol
|
|
54
|
+
sell_price = trade_service_api.get_last_sell_price(symbol)
|
|
55
|
+
position_stock_df_one = position_stock_df.loc[position_stock_df['symbol'] == symbol]
|
|
56
|
+
available_position = list(position_stock_df_one['available_position'])[0]
|
|
57
|
+
if sell_signal(stock_one, now_date, position_stock_df_one):
|
|
58
|
+
sell_result = trade_service_api.order_sell(symbol, sell_price, available_position)
|
|
59
|
+
if "message" in sell_result:
|
|
60
|
+
result_msg = sell_result['message']
|
|
61
|
+
if result_msg == 'success':
|
|
62
|
+
update_position_status(symbol, None, str_day)
|
|
63
|
+
elif "entrust_no" in sell_result:
|
|
64
|
+
sell_entrust_no = sell_result['entrust_no']
|
|
65
|
+
if sell_entrust_no is not None:
|
|
66
|
+
update_position_status(symbol, sell_entrust_no, str_day)
|
|
67
|
+
|
|
68
|
+
except BaseException as e:
|
|
69
|
+
logger.error("自动卖出异常:{},{}", stock_one.symbol, e)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# 卖出信号 TODO 待优化
|
|
73
|
+
def sell_signal(stock_one, now_date, position_stock_df_one):
|
|
74
|
+
chg = stock_one.chg
|
|
75
|
+
wei_bi = stock_one.wei_bi
|
|
76
|
+
|
|
77
|
+
hour = now_date.hour
|
|
78
|
+
minute = now_date.minute
|
|
79
|
+
# 跌停直接卖出
|
|
80
|
+
if wei_bi == -100:
|
|
81
|
+
return True
|
|
82
|
+
# 开盘五分钟先看看
|
|
83
|
+
if hour == 9 and minute <= 35:
|
|
84
|
+
return False
|
|
85
|
+
# 尾盘卖不出了
|
|
86
|
+
if hour == 14 and minute >= 57:
|
|
87
|
+
return False
|
|
88
|
+
|
|
89
|
+
# 自动卖出涨幅
|
|
90
|
+
if chg < AUTO_SELL_CHG:
|
|
91
|
+
return True
|
|
92
|
+
|
|
93
|
+
cost_price = list(position_stock_df_one['cost_price'])[0]
|
|
94
|
+
now_price = stock_one.now_price
|
|
95
|
+
# 收益率
|
|
96
|
+
profit_loss_chg = round((now_price - cost_price) * 100 / cost_price, 2)
|
|
97
|
+
# 收益卖出阈值
|
|
98
|
+
if profit_loss_chg < AUTO_SELL_PROFIT_LOSS_CHG:
|
|
99
|
+
return True
|
|
100
|
+
return False
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
# 更新持仓状态
|
|
104
|
+
def update_position_status(symbol, sell_entrust_no, str_day):
|
|
105
|
+
update_query = {'symbol': symbol, 'str_day': str_day}
|
|
106
|
+
new_values = {"$set": {"valid": False, "sell_entrust_no": sell_entrust_no}}
|
|
107
|
+
mongodb_util.update_many(update_query, new_values, db_name_constant.POSITION_STOCK)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
import mns_common.api.em.east_money_stock_api as east_money_stock_api
|
|
111
|
+
|
|
112
|
+
if __name__ == '__main__':
|
|
113
|
+
sell_price_01 = trade_service_api.get_last_sell_price('002336')
|
|
114
|
+
while True:
|
|
115
|
+
real_time_quotes_now = east_money_stock_api.get_real_time_quotes_all_stocks()
|
|
116
|
+
auto_sell_stock(real_time_quotes_now)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
file_path = os.path.abspath(__file__)
|
|
5
|
+
end = file_path.index('mns') + 16
|
|
6
|
+
project_path = file_path[0:end]
|
|
7
|
+
sys.path.append(project_path)
|
|
8
|
+
import mns_common.component.trade.trade_service_api as trade_service_api
|
|
9
|
+
import pandas as pd
|
|
10
|
+
import mns_common.utils.data_frame_util as data_frame_util
|
|
11
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
12
|
+
import datetime
|
|
13
|
+
|
|
14
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
15
|
+
|
|
16
|
+
mongodb_util = MongodbUtil('27017')
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
# 同步持仓
|
|
20
|
+
def sync_position():
|
|
21
|
+
now_date = datetime.datetime.now()
|
|
22
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
23
|
+
query_exist = {'str_day': str_day}
|
|
24
|
+
if mongodb_util.exist_data_query(db_name_constant.POSITION_STOCK, query_exist):
|
|
25
|
+
return None
|
|
26
|
+
position_list = trade_service_api.get_position()
|
|
27
|
+
position_df = pd.DataFrame(position_list)
|
|
28
|
+
position_df = position_df.rename(columns={"明细": "detail",
|
|
29
|
+
"序号": "index",
|
|
30
|
+
"证券代码": "symbol",
|
|
31
|
+
"证券名称": "name",
|
|
32
|
+
"持仓数量": "open_position",
|
|
33
|
+
"可用数量": "available_position",
|
|
34
|
+
"冻结数量": "frozen_position",
|
|
35
|
+
"参考成本价": "cost_price",
|
|
36
|
+
"当前价": "now_price",
|
|
37
|
+
"浮动盈亏": "floating_profit_loss",
|
|
38
|
+
"盈亏比例(%)": "profit_loss_percent",
|
|
39
|
+
"最新市值": "flow_mv",
|
|
40
|
+
"当日盈亏": "today_profit_loss",
|
|
41
|
+
"当日盈亏比(%)": "today_profit_loss_percent",
|
|
42
|
+
"仓位占比(%)": "position_ratio",
|
|
43
|
+
"持股天数": "holding_days",
|
|
44
|
+
"当日买入": "day_buy",
|
|
45
|
+
"当日卖出": "day_sell",
|
|
46
|
+
"交易市场": "market"
|
|
47
|
+
})
|
|
48
|
+
if data_frame_util.is_not_empty(position_df):
|
|
49
|
+
position_df["_id"] = position_df['symbol'] + '-' + str_day
|
|
50
|
+
position_df["str_day"] = str_day
|
|
51
|
+
position_df["valid"] = True
|
|
52
|
+
mongodb_util.save_mongo(position_df, db_name_constant.POSITION_STOCK)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
if __name__ == '__main__':
|
|
56
|
+
sync_position()
|
|
@@ -34,9 +34,10 @@ import mns_scheduler.concept.ths.sync_new_index.sync_ths_new_concept_by_web_api
|
|
|
34
34
|
import mns_scheduler.concept.ths.sync_new_index.sync_ths_concept_by_ak_api as sync_ths_concept_by_ak_api
|
|
35
35
|
import mns_scheduler.kpl.selection.total.sync_kpl_best_total_sync_api as sync_kpl_best_total_sync_api
|
|
36
36
|
import mns_scheduler.company_info.company_info_sync_api as company_info_sync_api
|
|
37
|
-
import mns_scheduler.
|
|
37
|
+
import mns_scheduler.trade.auto_ipo_buy_api as auto_ipo_buy_api
|
|
38
38
|
import mns_scheduler.kpl.selection.index.sync_best_choose_his_index as sync_best_choose_his_index
|
|
39
39
|
import mns_scheduler.concept.ths.common.ths_concept_update_common_api as ths_concept_update_common_api
|
|
40
|
+
import mns_scheduler.trade.sync_position_api as sync_position_api
|
|
40
41
|
|
|
41
42
|
|
|
42
43
|
# 同步交易日期任务完成
|
|
@@ -287,6 +288,16 @@ def auto_ipo_buy():
|
|
|
287
288
|
auto_ipo_buy_api.auto_ipo_buy()
|
|
288
289
|
|
|
289
290
|
|
|
291
|
+
# 同步持仓
|
|
292
|
+
def sync_position():
|
|
293
|
+
now_date = datetime.now()
|
|
294
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
295
|
+
# 同步持仓
|
|
296
|
+
if trade_date_common_service_api.is_trade_day(str_day):
|
|
297
|
+
logger.info('同步持仓任务完成')
|
|
298
|
+
sync_position_api.sync_position()
|
|
299
|
+
|
|
300
|
+
|
|
290
301
|
# 同步开盘啦当日精选指数行情数据
|
|
291
302
|
|
|
292
303
|
def sync_kpl_best_his_quotes():
|
|
@@ -366,6 +377,9 @@ blockingScheduler.add_job(update_best_choose_plate_relation, 'cron', hour='09,18
|
|
|
366
377
|
# 更新开盘啦指数关系
|
|
367
378
|
blockingScheduler.add_job(sync_kpl_best_his_quotes, 'cron', hour='18,22', minute='25')
|
|
368
379
|
|
|
380
|
+
# 更新开盘啦指数关系
|
|
381
|
+
blockingScheduler.add_job(sync_position, 'cron', hour='0,08', minute='10')
|
|
382
|
+
|
|
369
383
|
print('定时任务启动成功')
|
|
370
384
|
blockingScheduler.start()
|
|
371
385
|
|
|
@@ -37,8 +37,6 @@ mns_scheduler/db/col_move_service.py
|
|
|
37
37
|
mns_scheduler/db/db_status.py
|
|
38
38
|
mns_scheduler/dt/__init__.py
|
|
39
39
|
mns_scheduler/dt/stock_dt_pool_sync.py
|
|
40
|
-
mns_scheduler/ipo/__init__.py
|
|
41
|
-
mns_scheduler/ipo/auto_ipo_buy_api.py
|
|
42
40
|
mns_scheduler/k_line/__init__.py
|
|
43
41
|
mns_scheduler/k_line/clean/__init__.py
|
|
44
42
|
mns_scheduler/k_line/clean/k_line_info_clean_impl.py
|
|
@@ -57,6 +55,10 @@ mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py
|
|
|
57
55
|
mns_scheduler/real_time/__init__.py
|
|
58
56
|
mns_scheduler/real_time/realtime_quotes_now_create_db_index.py
|
|
59
57
|
mns_scheduler/real_time/realtime_quotes_now_sync.py
|
|
58
|
+
mns_scheduler/trade/__init__.py
|
|
59
|
+
mns_scheduler/trade/auto_ipo_buy_api.py
|
|
60
|
+
mns_scheduler/trade/auto_sell_service_api.py
|
|
61
|
+
mns_scheduler/trade/sync_position_api.py
|
|
60
62
|
mns_scheduler/zb/__init__.py
|
|
61
63
|
mns_scheduler/zb/stock_zb_pool_sync.py
|
|
62
64
|
mns_scheduler/zt/__init__.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/app/ths_new_concept_sync_app.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/em/em_new_concept_his_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/em/em_new_concept_sync_web.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/company_info/company_constant_data.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/company_info/company_info_sync_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/clean/ths_concept_clean_api.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/common/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/concept/ths/sync_new_index/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/export_open_data_to_excel.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/realtime_quotes_now_zt_kc_sync.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zt/today_high_chg_pool_sync_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.3.5 → mns-scheduler-1.0.3.7}/mns_scheduler/zz_task/sync_realtime_quotes_task.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|