analyser_hj3415 2.6.8__py2.py3-none-any.whl → 2.7.1__py2.py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
analyser_hj3415/cli.py CHANGED
@@ -1,22 +1,23 @@
1
1
  import argparse
2
2
  import os
3
+ import pprint
3
4
 
4
5
  from utils_hj3415 import noti, utils
5
6
  from utils_hj3415.helpers import SettingsManager
6
- from analyser_hj3415.myredis import red_ranking, mil_n_score, red_n_score
7
7
  from db_hj3415 import myredis
8
8
 
9
9
 
10
- # 파일 경로 상수
11
- SETTINGS_FILE = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'settings.json')
12
-
13
-
14
10
  class AnalyserSettingsManager(SettingsManager):
15
11
  DEFAULT_SETTINGS = {
16
12
  'EXPECT_EARN': 0.06,
13
+ 'RED_RANKING_EXPECT_EARN': 0.06,
17
14
  }
18
15
  TITLES = DEFAULT_SETTINGS.keys()
19
16
 
17
+ def __init__(self):
18
+ settings_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'settings.json')
19
+ super().__init__(settings_file)
20
+
20
21
  def set_value(self, title: str, value: str):
21
22
  assert title in self.TITLES, f"title 인자는 {self.TITLES} 중에 있어야 합니다."
22
23
  self.settings_dict[title] = value
@@ -34,7 +35,7 @@ class AnalyserSettingsManager(SettingsManager):
34
35
 
35
36
 
36
37
  def analyser_manager():
37
- settings_manager = AnalyserSettingsManager(SETTINGS_FILE)
38
+ settings_manager = AnalyserSettingsManager()
38
39
  expect_earn_from_setting = settings_manager.get_value('EXPECT_EARN')
39
40
 
40
41
  parser = argparse.ArgumentParser(description="Analyser Commands")
@@ -48,22 +49,42 @@ def analyser_manager():
48
49
  ranking_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
49
50
  ranking_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
50
51
  ranking_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
51
- # red - score 파서
52
- score_parser = red_subparser.add_parser('score', help='red score 책정 및 레디스 저장')
53
- score_parser.add_argument('code', type=str, help='종목코드 or all')
54
- score_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
55
- score_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
56
- score_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
52
+ # red - get 파서
53
+ red_get_parser = red_subparser.add_parser('get', help='red get 책정 및 레디스 저장')
54
+ red_get_parser.add_argument('code', type=str, help='종목코드 or all')
55
+ red_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
56
+ red_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
57
+ red_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
57
58
 
58
59
  # mil 명령어 서브파서
59
60
  mil_parser = type_subparsers.add_parser('mil', help='millennial 타입')
60
61
  mil_subparser = mil_parser.add_subparsers(dest='command', help='mil 관련된 명령')
61
- # mil - score 파서
62
- score_parser = mil_subparser.add_parser('score', help='mil score 책정 및 레디스 저장')
63
- score_parser.add_argument('code', type=str, help='종목코드 or all')
64
- score_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
65
- score_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
66
- score_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
62
+ # mil - get 파서
63
+ mil_get_parser = mil_subparser.add_parser('get', help='mil get 책정 및 레디스 저장')
64
+ mil_get_parser.add_argument('code', type=str, help='종목코드 or all')
65
+ mil_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
66
+ mil_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
67
+ mil_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
68
+
69
+ # blue 명령어 서브파서
70
+ blue_parser = type_subparsers.add_parser('blue', help='Blue 타입')
71
+ blue_subparser = blue_parser.add_subparsers(dest='command', help='blue 관련된 명령')
72
+ # blue - get 파서
73
+ blue_get_parser = blue_subparser.add_parser('get', help='blue get 책정 및 레디스 저장')
74
+ blue_get_parser.add_argument('code', type=str, help='종목코드 or all')
75
+ blue_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
76
+ blue_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
77
+ blue_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
78
+
79
+ # growth 명령어 서브파서
80
+ growth_parser = type_subparsers.add_parser('growth', help='Growth 타입')
81
+ growth_subparser = growth_parser.add_subparsers(dest='command', help='growth 관련된 명령')
82
+ # growth - get 파서
83
+ growth_get_parser = growth_subparser.add_parser('get', help='growth get 책정 및 레디스 저장')
84
+ growth_get_parser.add_argument('code', type=str, help='종목코드 or all')
85
+ growth_get_parser.add_argument('-e', '--expect_earn', type=float, help='기대수익률 (실수 값 입력)')
86
+ growth_get_parser.add_argument('-r', '--refresh', action='store_true', help='래디스 캐시를 사용하지 않고 강제로 재계산 할지')
87
+ growth_get_parser.add_argument('-n', '--noti', action='store_true', help='작업 완료 후 메시지 전송 여부')
67
88
 
68
89
  # setting 명령어 서브파서
69
90
  setting_parser = type_subparsers.add_parser('setting', help='Set and Get settings')
@@ -80,52 +101,101 @@ def analyser_manager():
80
101
 
81
102
  args = parser.parse_args()
82
103
 
83
- if args.type == 'red':
84
- if args.command == 'score':
85
- # 기대 수익률과 refresh 값 처리
86
- expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
87
- refresh = args.refresh if args.refresh else False
104
+ from analyser_hj3415 import eval
88
105
 
89
- # print(expect_earn, refresh)
106
+ if args.type == 'red':
107
+ if args.command == 'get':
90
108
  if args.code == 'all':
91
- print("**** red_n_score all code ****")
109
+ # 저장된 기대수익률을 불러서 임시저장
110
+ ee_orig = eval.Red.expect_earn
111
+
112
+ red = eval.Red('005930')
113
+ if args.expect_earn:
114
+ eval.Red.expect_earn = float(args.expect_earn)
115
+
116
+ print("**** Red - all codes ****")
92
117
  for i, code in enumerate(myredis.Corps.list_all_codes()):
93
- print(f'{i} / {code}')
94
- red_n_score(code, expect_earn, refresh)
118
+ red.code = code
119
+ print(f"*** {i} / {red} ***")
120
+ pprint.pprint(red.get(args.refresh))
121
+
122
+ # 원래 저장되었던 기대수익률로 다시 복원
123
+ eval.Red.expect_earn = ee_orig
95
124
  else:
96
125
  assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
97
- print(args.code, red_n_score(args.code, expect_earn, refresh))
126
+ # 저장된 기대수익률을 불러서 임시저장
127
+ ee_orig = eval.Red.expect_earn
128
+
129
+ red = eval.Red(args.code)
130
+ if args.expect_earn:
131
+ args.refresh = True
132
+ eval.Red.expect_earn = float(args.expect_earn)
133
+
134
+ print(f"*** Red - {red} ***")
135
+ pprint.pprint(red.get(args.refresh))
136
+
137
+ # 원래 저장되었던 기대수익률로 다시 복원
138
+ eval.Red.expect_earn = ee_orig
98
139
  if args.noti:
99
- noti.telegram_to('manager', f"오늘의 red and score({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
140
+ noti.telegram_to('manager', f"오늘의 Red({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
100
141
 
101
142
  elif args.command == 'ranking':
102
- # 기대 수익률과 refresh 값 처리
103
- expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
104
- refresh = args.refresh if args.refresh else False
105
- print(expect_earn, refresh)
106
-
107
- # red_ranking 함수 호출
108
- result = red_ranking(expect_earn, refresh)
143
+ result = eval.Red.ranking(expect_earn=args.expect_earn, refresh=args.refresh)
109
144
  print(result)
110
145
  if args.noti:
111
146
  noti.telegram_to('manager', "오늘의 red ranking을 레디스캐시에 저장했습니다.(유효 12시간)")
112
147
 
113
148
  elif args.type == 'mil':
114
- if args.command == 'score':
115
- # 기대 수익률과 refresh 값 처리
116
- expect_earn = float(args.expect_earn if args.expect_earn is not None else expect_earn_from_setting)
117
- refresh = args.refresh if args.refresh else False
149
+ if args.command == 'get':
150
+ if args.code == 'all':
151
+ mil = eval.Mil('005930')
152
+ print("**** Mil - all codes ****")
153
+ for i, code in enumerate(myredis.Corps.list_all_codes()):
154
+ mil.code = code
155
+ print(f"*** {i} / {mil} ***")
156
+ pprint.pprint(mil.get(args.refresh))
157
+ else:
158
+ assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
159
+ mil = eval.Mil(args.code)
160
+ print(f"*** Mil - {mil} ***")
161
+ pprint.pprint(mil.get(args.refresh))
162
+ if args.noti:
163
+ noti.telegram_to('manager', f"오늘의 Mil({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
164
+
165
+ elif args.type == 'blue':
166
+ if args.command == 'get':
167
+ if args.code == 'all':
168
+ blue = eval.Blue('005930')
169
+ print("**** Blue - all codes ****")
170
+ for i, code in enumerate(myredis.Corps.list_all_codes()):
171
+ blue.code = code
172
+ print(f"*** {i} / {blue} ***")
173
+ pprint.pprint(blue.get(args.refresh))
174
+ else:
175
+ assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
176
+ blue = eval.Blue(args.code)
177
+ print(f"*** Blue - {blue} ***")
178
+ pprint.pprint(blue.get(args.refresh))
179
+ if args.noti:
180
+ noti.telegram_to('manager', f"오늘의 Blue({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
118
181
 
182
+ elif args.type == 'growth':
183
+ if args.command == 'get':
119
184
  if args.code == 'all':
120
- print("**** mil_n_score all code ****")
185
+ growth = eval.Growth('005930')
186
+ print("**** Growth - all codes ****")
121
187
  for i, code in enumerate(myredis.Corps.list_all_codes()):
122
- print(f'{i} / {code}')
123
- mil_n_score(code, expect_earn, refresh)
188
+ growth.code = code
189
+ print(f"*** {i} / {growth} ***")
190
+ pprint.pprint(growth.get(args.refresh))
124
191
  else:
125
192
  assert utils.is_6digit(args.code), "code 인자는 6자리 숫자이어야 합니다."
126
- print(args.code, mil_n_score(args.code, expect_earn, refresh))
193
+ growth = eval.Growth(args.code)
194
+ print(f"*** growth - {growth} ***")
195
+ pprint.pprint(growth.get(args.refresh))
127
196
  if args.noti:
128
- noti.telegram_to('manager', f"오늘의 mil and score({args.code})를 레디스캐시에 저장했습니다.(유효 12시간)")
197
+ noti.telegram_to('manager', f"오늘의 Growth({args.code})를 레디스 캐시에 저장했습니다.(유효 12시간)")
198
+
129
199
  elif args.type == 'setting':
130
200
  if args.command == 'set':
131
201
  settings_manager.set_value(args.title, args.value)