def wrapper_(self): items_ = 0 results_tempo = [] population_tempo = [] while (items_ < self.size_population): self.reset_value() self.pnl_dict = {} Initialize.__call__(self) self.optimize_param( ) # reinitialize parameters to optimize with all possible choices func(self) self.pnl_() if (not bool(self.pnl_dict)): continue if self.pnl_dict[self.nb_trades_] < self.min_results: continue # if self.pnl_dict[self.fitness_function] > self.fitness_level: # return self.pnl_dict,self.op_param elif bool(self.pnl_dict) and self.pnl_dict[ self.nb_trades_] >= self.min_results: results_tempo.append(self.pnl_dict) population_tempo.append(self.list_to_dict(self.op_param)) if (results_tempo[items_][self.nb_trades_] > 150): raise Exception("Error with the number of trades") items_ += 1 self.results_pop = results_tempo.copy() self.population = population_tempo.copy()
def main_process(self): """ Getting AFM related parameters. 2 cases here. 1, called by AFM directly: Alerts Delivery is coupled with AFM. So it is better to call by AFM. Then we can get parameters directly from AFM via self.params 2, called via REST API. in case failure when called by AFM, we also support the REST API while we can manually trigger this. And getting params from REST API Body. :return: """ try: # Checking the cancel status from previous step. _cancel_flag = self.params.get("cancel_flag", False) if _cancel_flag: return self.params.get("message") self.logger.debug("The context is: %s" % str(self.dumper_context)) init = Initialize(self.dumper_context) afm_params = init.init_process() _cycle_key = afm_params.get("cycleKey") _retailer_name = self.capacity.get_retailer_schema_name( retailer_key=afm_params["retailerKey"]) self.dumper_context["retailer_name"] = _retailer_name self.dumper_context["schema"] = _retailer_name self.dumper_context["cycle_key"] = _cycle_key self._layout_payload = self._get_layout() self._process(afm_params) except Warning as e: return str(e) except Exception as e: self.logger.warning(str(e)) raise
def main(): # デバッグ starttime = datetime.now() print(starttime) # 基準年月日時分を取得する。 standardTime = starttime.strftime('%Y%m%d%H%M') # 環境変数を取得する。 homeDir = os.environ["APPMONEYTRADE"] # log用の文字列準備 exefile = os.path.basename(__file__) pid = os.path.basename(__file__)[0:4] # 機能IDの取得 # 1時的に環境パスを追加する。 sys.path.append(homeDir) from initialize import Initialize # 初期化クラスのオブエクトか object_dict = {} object_dict['pid'] = pid Initializer = Initialize.Initialize(object_dict) # utilクラスのオブジェクト取得 utilClass = Initializer.utilClass # daoクラスのオブジェクトを取得する。 daoClass = Initializer.daoClass # メール送信クラスを取得する MASSClass = Initializer.MASSClass object_dict['util'] = utilClass object_dict['dao'] = daoClass object_dict['mass'] = MASSClass
def container(): c = Config() database, websites = c.get_configuration() i = Initialize() browsers, dns_types = i.get_initialization() operation_system = platform.system() if operation_system == "Windows": system = Windows() elif operation_system == "Linux": system = Linux() resolver, recursive = system.get_dns_metadata() return database, websites, browsers, dns_types, resolver, recursive, system
def AgentProgram(N): state = Initialize(N) total_conflicts = 0 for col in range(N): row = np.where(state[:, col] == 1)[0][0] conflicts = np.sum(state[row, :]) k = col - row conflicts += np.sum(np.diag(state, k)) k = N - 1 - col - row conflicts += np.sum(np.diag(np.fliplr(state), k)) conflicts -= 3 total_conflicts = total_conflicts + conflicts col = 0 no_update = 0 for i in range(1000): if GoalTest(state): return total_conflicts row = np.where(state[:, col] == 1)[0][0] total_conflicts = Update(state, col, total_conflicts) if no_update == N: total_conflicts = RandomRestart(state=state,col=col,\ total_conflicts=total_conflicts) no_update = 0 else: if row == np.where(state[:, col] == 1)[0][0, 0]: no_update += 1 else: no_update = 0 col = (col + 1) % N return total_conflicts
def _chi_initialize(self): if continuation: self.current_state.chi = np.load( os.path.join(output_dir_path, f'finalChiFieldData{Comment}{startIter}.npy')) self.current_state.chiPi = np.load( os.path.join(output_dir_path, f'finalChiPiFieldData{Comment}{startIter}.npy')) else: m2Chi = Model.dd_chichi_potential(phi0, chi0) - 2. * ( pow(d_phi0, 2) / 2. + Model.potential(phi0, chi0)) / (3. * pow( MPl, 2.)) - Model.dd_non_canonical_multiplier(chi0) * pow( d_phi0, 2) / 2. self.current_state.chi, self.current_state.chiPi = Initialize.initialize_field_non_zero_modes( m2Chi) self.current_state.chi = np.array(self.current_state.chi) self.current_state.chiPi = np.array(self.current_state.chiPi) self.current_state.chi += chi0 self.current_state.chiPi = Initialize.mod_chi_pi_ini( self.current_state.chiPi, self.current_state.chi) self.current_state.chiPi += d_chi0
def main(): IN_initialize = Initialize() IN_reporting = Reporting() IN_audits = Audits() Output = [] analytics = IN_initialize.initialize_analyticsreporting() response = IN_reporting.get_report(analytics) management_get = IN_reporting.get_management(analytics) useful_values = IN_reporting.print_response(response) accounts = IN_reporting.get_gtm(analytics) print "######" IN_audits.check_siteSearch(useful_values) print "_______" Output.append(IN_audits.check_medium(useful_values)) #check_totalValue() print "_______" IN_audits.check_customDimensions(management_get) print "_______" #url = raw_input('Enter URL for self-Referral check: ') IN_audits.check_selfReferral('yandex', useful_values) print "_______" IN_audits.check_eventTracking(useful_values) print "_______" Output.append(IN_audits.check_adwordsLink(management_get)) print "_______" IN_audits.check_gtm(accounts) print "_______" IN_audits.check_goals(management_get) print "_______" IN_audits.check_customMetrics(management_get) print "######" print Output with open('data.json', 'w') as djson: json.dump(Output, djson)
def main(): # 環境変数を取得する。 homeDir = os.environ["APPMONEYTRADE"] # log用の文字列準備 pid = os.path.basename(__file__)[0:3] # 機能IDの取得 #引数の取得 args = sys.argv condTime = args[1] # 1時的に環境変数を追加する。 sys.path.append(homeDir) from initialize import Initialize # 初期化クラスのオブエクトか object_dict = {} object_dict['pid'] = pid Initializer = Initialize.Initialize(object_dict) # utilクラスのオブジェクト取得 utilClass = Initializer.utilClass # daoクラスのオブジェクトを取得する。 dao = Initializer.daoClass # メール送信クラスを取得する MASSClass = Initializer.MASSClass object_dict['util'] = utilClass object_dict['dao'] = dao object_dict['mass'] = MASSClass # jsonparseクラスのオブジェクト取得 jsonClass = Initializer.class_ins('JsonParse', object_dict) # bitflyyerApiクラスを取得 bitflyerClass = Initializer.class_ins('BitflyerApi', object_dict) # configファイルから情報を抜き出す. inifile = utilClass.inifile # 呼び出す仮想通貨の種類を洗い出す coinlist = utilClass.coinlistGet() cointype = utilClass.cointypeGet() # 前回実行時間を取得する。 f = open(homeDir + inifile.get(pid, 'exetime'), "r") exetime = f.read()[0:12] if exetime == condTime: # 前回と同じ時間なので処理しない。 utilClass.logging( pid + ' ' + condTime + ' is skip for before this time has done arleady', 2) return f.close() # pueryの固定文字列をs¥抜き出す pueryStayStr = inifile.get('url', 'productcode') # 呼び出すAPIの種類を探す board = inifile.get('apitype', 'board') executions = inifile.get('apitype', 'executions') # apiurlを取得する。 apiurl = inifile.get('url', 'futuredatabefore') # qyeryで空文字のやつを取得する。 brankcoin = inifile.get('coin', 'nonpuery') # ファイルパスを取得する。 outPath = inifile.get('filepath', 'inoutpath') # このバッチ処理の開始log utilClass.logging(pid + ' ' + condTime, 0) # コインの数だけ呼び出す。 for coin in coinlist: # log logstr = '' logstr = 'call webAPI by ' + coin utilClass.logging(logstr, 0) # ファイルパスを取得する。 filepath = homeDir + outPath + 'board' + '/' + condTime + coin puery = '' if coin != brankcoin: puery = pueryStayStr # webapiを呼び出す。 josnStr = bitflyerClass.boardApi(apiurl, coin, puery, board) #ファイルを保存する。 savaFile(josnStr, filepath) # ファイルパスを再作成する。 filepath = homeDir + outPath + 'executions' + '/' + condTime + coin # webapiを呼び出す。 josnStr = bitflyerClass.boardApi(apiurl, coin, puery, executions) #ファイルを保存する savaFile(josnStr, filepath) #log utilClass.logging(logstr, 1) # jsonFileの読み出し。 for coin in coinlist: # cointypeの取得 cointypeStr = cointype[coin] #filepath filepath = homeDir + outPath + 'board' + '/' + condTime + coin + '.json' # log logstr = '' logstr = 'read json by ' + filepath utilClass.logging(logstr, 0) # ファイルの存在チェック if not os.path.exists(filepath): logstr = 'file not found:' + filepath utilClass.loggingError(logstr) return # json読み込みとパース resultDict = jsonClass.boardParse(filepath) # boradの挿入を行う。 boardInsert(resultDict, pid, cointype[coin], condTime, dao) # ファイルを消する。 os.remove(filepath) # filepathの再作成 filepath = homeDir + outPath + 'executions' + '/' + condTime + coin + '.json' # log utilClass.logging(logstr, 1) logstr = '' logstr = 'read json by ' + filepath utilClass.logging(logstr, 0) # ファイルの存在チェック if not os.path.exists(filepath): logstr = 'file not found:' + filepath utilClass.loggingError(logstr) return # json読み込みとパース resultDict = jsonClass.executionsParse(filepath) # executionsの挿入を行う executionsInsert(resultDict, pid, cointype[coin], condTime, dao) # ファイルを消す。 os.remove(filepath) # log utilClass.logging(logstr, 1) # 最後に実行時間を更新する。 f = open(homeDir + inifile.get(pid, 'exetime'), "w") f.write(condTime) # このバッチ処理の終了log utilClass.logging(pid + ' ' + condTime, 1)
def main(): # デバッグ starttime = datetime.now() print(starttime) # 基準年月日時分を取得する。 standardTime = starttime.strftime('%Y%m%d') # 環境変数を取得する。 homeDir = os.environ["APPHORSE"] # log用の文字列準備 exefile = os.path.basename(__file__) pid = os.path.basename(__file__)[:-3] # 機能IDの取得 # 1時的に環境パスを追加する。 sys.path.append(homeDir) from initialize import Initialize # 初期化クラスのオブエクトか object_dict = {} object_dict['pid'] = pid Initializer = Initialize.Initialize(object_dict) # utilクラスのオブジェクト取得 utilClass = Initializer.utilClass # daoクラスのオブジェクトを取得する。 daoClass = Initializer.daoClass # メール送信クラスを取得する MASSClass = Initializer.MASSClass object_dict['util'] = utilClass object_dict['dao'] = daoClass object_dict['mail'] = MASSClass # レース情報更新クラスを取得する raceUpdateClass = Initializer.class_ins('RaceInfoUpdate',object_dict) # データマイニングクラスを取得する dataMiningClass = Initializer.class_ins('DataMining',object_dict) # configファイルから情報を抜き出す. inifile = utilClass.inifile # メソッド名取得 methodname = sys._getframe().f_code.co_name # 開始ログ出力 utilClass.logging('[' + methodname + ']',0) # 基準日以降に開催されるレースIDを全て取得する where =["AND RACE_DATE >= '%s'"% standardTime," ORDER BY RACE_DATE ASC"] raceIdList = daoClass.selectQuery(where,'selectPostRace') # レースIDを一件づつ処理する for race_id in raceIdList: raceId = race_id[0] # レースID 取得 utilClass.logging(raceId + 'is started',2) # レースID 取得 # レース情報更新サービス呼び出し result = raceUpdateClass.execute(raceId,1) if result['returnCode'] != 0: if result['returnCode'] == 9: utilClass.loggingError(raceId + 'is faled in raceInfoUpdate\n' + result['msg']) break else: utilClass.loggingWarn(raceId + 'is warned in raceInfoUpdate\n' + result['msg']) continue result = raceUpdateClass.execute(raceId,2) if result['returnCode'] != 0: if result['returnCode'] == 9: utilClass.loggingError(raceId + 'is faled in raceInfoUpdate\n' + result['msg']) break else: utilClass.loggingWarn(raceId + 'is warned in raceInfoUpdate\n' + result['msg']) continue # データマイニングサービス呼び出し result = dataMiningClass.execute(raceId,2) if result['returnCode'] != 0: if result['returnCode'] == 9: utilClass.loggingError(raceId + 'is faled in dataMining\n' + result['msg']) break else: utilClass.loggingWarn(raceId + 'is warned in dataMining\n' + result['msg']) continue utilClass.logging(raceId + 'is ended',2) # 終了ログ utilClass.logging('[' + methodname + ']',0)
def _initalize(self, S, N, T, model): try: NT = N * T #initialize self.beta, self.delta, self.xi, self.gamma, self.z, self.u, self.eta, self.alpha, self.sigma_alpha_sqr, self.sigma_v_sqr = Initialize( ).generate(model, self.x, self.pi, self.w) all_beta = np.zeros([S, self.x.shape[1]]) all_xi = np.zeros([S, self.pi.shape[1]]) all_delta = np.zeros([S, self.pi.shape[1]]) all_z = np.zeros([S, self.w.shape[1]]) all_gamma = np.zeros([S, self.w.shape[1]]) all_sigma_v_sqr = np.zeros([ S, ]) all_sigma_alpha_sqr = np.zeros([ S, ]) all_alpha = np.zeros([S, N]) all_eta = np.zeros([S, N]) all_u = np.zeros([S, NT]) return all_beta, all_xi, all_delta, all_z, all_gamma, all_sigma_v_sqr, all_sigma_alpha_sqr, all_alpha, all_eta, all_u except: raise NotImplementedError(self._error_msg('initalize'))
class Reporting: IN_initialize = Initialize() VIEW_ID = IN_initialize.VIEW_ID ACCOUNT_ID = IN_initialize.ACCOUNT_ID WEB_PROPERTY_ID = IN_initialize.WEB_PROPERTY_ID def get_gtm(self, analytics): gtm = analytics['gtm'] accounts = gtm.accounts().list().execute() return accounts def get_management(self, analytics): #API V4 does not have management resource so we use V3 for this analytics_v3 = analytics['analytics_v3'] custom_dimensions = analytics_v3.management().customDimensions().list( accountId=self.ACCOUNT_ID, webPropertyId=self.WEB_PROPERTY_ID).execute() custom_metrics = analytics_v3.management().customMetrics().list( accountId=self.ACCOUNT_ID, webPropertyId=self.WEB_PROPERTY_ID).execute() adwords_linked = analytics_v3.management().webPropertyAdWordsLinks( ).list(accountId=self.ACCOUNT_ID, webPropertyId=self.WEB_PROPERTY_ID).execute() goals = analytics_v3.management().goals().list( accountId=self.ACCOUNT_ID, webPropertyId=self.WEB_PROPERTY_ID, profileId=self.VIEW_ID).execute() #print json.dumps(custom_metrics,sort_keys=True,indent=2) customMetrics_list = [] for metric in custom_metrics.get('items', []): metric_name = metric.get('name') print metric_name customMetrics_list.append(metric_name) customDimensions_list = [] for dimension in custom_dimensions.get('items', []): Cdimension_name = dimension.get('name') customDimensions_list.append(Cdimension_name) goals_list = [] for goal in goals.get('items', []): goal_name = goal.get('name') goals_list.append(goal_name) managemnt_get = { 'customDimensions_list': customDimensions_list, 'adwords_linked': adwords_linked, 'goals_list': goals_list, 'customMetrics_list': customMetrics_list } return managemnt_get def get_report(self, analytics): """Using the Analytics Service Object to query the Analytics Reporting API V4. """ #VIEW_ID = IN_initialize.VIEW_ID analytics_v4 = analytics['analytics_v4'] report = analytics_v4.reports().batchGet( body={ 'reportRequests': [{ 'viewId': self.VIEW_ID, 'dateRanges': [{ 'startDate': '7daysAgo', 'endDate': 'today' }], 'metrics': [{ 'expression': 'ga:searchSessions' }, { 'expression': 'ga:totalEvents' }, { 'expression': 'ga:totalValue' }] }, { 'viewId': self.VIEW_ID, 'dateRanges': [{ 'startDate': '7daysAgo', 'endDate': 'today' }], 'dimensions': [{ 'name': 'ga:fullReferrer' }, { 'name': 'ga:medium' }] }] }).execute() return report def print_response(self, response): """Parses and prints the Analytics Reporting API V4 response""" fullReferrer_list = [] medium_list = [] for report in response.get('reports', []): columnHeader = report.get('columnHeader', {}) dimensionHeaders = columnHeader.get('dimensions', []) metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', []) rows = report.get('data', {}).get('rows', []) for row in rows: dimensions = row.get('dimensions', []) dateRangeValues = row.get('metrics', []) for header, dimension in zip(dimensionHeaders, dimensions): #global fullReferrer_list if (header == 'ga:fullReferrer'): fullReferrer_list.append(dimension) if (header == 'ga:medium'): #global medium_list medium_list.append(dimension) #print header + ': ' + dimension for i, values in enumerate(dateRangeValues): #print 'Date range (' + str(i) + ')' for metricHeader, value in zip(metricHeaders, values.get('values')): #print metricHeader.get('name') + ': ' + value if (metricHeader.get('name') == 'ga:searchSessions'): #global searchSessions searchSessions = value if (metricHeader.get('name') == 'ga:totalEvents'): #global totalEvents totalEvents = value if (metricHeader.get('name') == 'ga:totalValue'): #global totalValue totalValue = value useful_values = { 'searchSessions': searchSessions, 'totalEvents': totalEvents, 'totalValue': totalValue, 'fullReferrer_list': fullReferrer_list, 'medium_list': medium_list } return useful_values
def main(): # デバッグ starttime = datetime.now() print(starttime) # 基準年月日時分を取得する。 standardTime = starttime.strftime('%Y%m%d') # 環境変数を取得する。 homeDir = os.environ["APPHORSE"] # log用の文字列準備 exefile = os.path.basename(__file__) pid = os.path.basename(__file__)[:-3] # 機能IDの取得 # 1時的に環境パスを追加する。 sys.path.append(homeDir) from initialize import Initialize # 初期化クラスのオブエクトか object_dict = {} object_dict['pid'] = pid Initializer = Initialize.Initialize(object_dict) # utilクラスのオブジェクト取得 utilClass = Initializer.utilClass # daoクラスのオブジェクトを取得する。 daoClass = Initializer.daoClass # メール送信クラスを取得する MASSClass = Initializer.MASSClass object_dict['util'] = utilClass object_dict['dao'] = daoClass object_dict['mail'] = MASSClass # 各クラスのオブジェクト化 # JRA過去情報取得サービス JraPastInfoGetClass = Initializer.class_ins('JraPastInfoGet', object_dict) # JRA今週末情報取得サービス JraPostInfoGetClass = Initializer.class_ins('JraPostInfoGet', object_dict) # スピード指数計算 AnalyzeClass = Initializer.class_ins('RaceAnalyze', object_dict) # 騎手指数計算 JocAnalyzeClass = Initializer.class_ins('JocAnalyze', object_dict) # 予想指数算出 PostForecastClass = Initializer.class_ins('PostRaceForecast', object_dict) # configファイルから情報を抜き出す. inifile = utilClass.inifile # JRA過去情報を取得する result = jrapast(JraPastInfoGetClass, standardTime) # JRA現在情報を取得する result = jrapost(JraPostInfoGetClass, standardTime) # レースのスピード指数を計算する。 result = analyze(AnalyzeClass, standardTime) # 騎手の指数を取得する result = jocAnalyze(JocAnalyzeClass) # 予想指数を算出 result = postForecast(PostForecastClass)
def main(): # 環境変数を取得する。 homeDir = os.environ["APPMONEYTRADE"] # log用の文字列準備 pid = os.path.basename(__file__)[0:3] # 機能IDの取得 # 1時的に環境変数を追加する。 sys.path.append(homeDir) sys.path.append(homeDir) from initialize import Initialize # 初期化クラスのオブエクトか object_dict = {} object_dict['pid'] = pid Initializer = Initialize.Initialize(object_dict) # utilクラスのオブジェクト取得 utilClass = Initializer.utilClass # daoクラスのオブジェクトを取得する。 dao = Initializer.daoClass # メール送信クラスを取得する MASSClass = Initializer.MASSClass object_dict['util'] = utilClass object_dict['dao'] = daoClass object_dict['mass'] = MASSClass # jsonparseクラスのオブジェクト取得 jsonClass = Initialize.class_ins('JsonParse', object_dict) # bitflyyerApiクラスを取得 bitflyerClass = Initialize.class_ins('BitflyerApi', object_dict) # configファイルから情報を抜き出す. inifile = utilClass.inifile # 呼び出す仮想通貨の種類を洗い出す coinlist = utilClass.coinlistGet() cointype = utilClass.cointypeGet() # pueryの固定文字列をs¥抜き出す pueryStayStr = inifile.get('url', 'productcode') # 対象コインタイプを絞る targetcoin = coinlist[1] # 呼び出すAPIの種類を探す board = inifile.get('apitype', 'board') executions = inifile.get('apitype', 'executions') # apiurlを取得する。 apiurl = inifile.get('url', 'futuredatabefore') # qyeryで空文字のやつを取得する。 brankcoin = inifile.get('coin', 'nonpuery') # ファイルパスを取得する。 outPath = inifile.get('filepath', 'inoutpath') # このバッチ処理の開始log utilClass.logging(pid, 0) ################################### # 104000000 start ################################### # log logstr = '' logstr = 'call webAPI by ' + targetcoin utilClass.logging(logstr, 0) before = 114681642 lastNum = 1000000000000 for i in range(lastNum): # ファイルパスを取得する。 filepath = homeDir + outPath + 'executions_past' + '/' + targetcoin puery = '' puery = pueryStayStr # webapiを呼び出す。 josnStr = bitflyerClass.executions_pastApi(apiurl, targetcoin, puery, executions, before) # 取れなかった値を取得する。 if josnStr == 0: utilClass.logging('can not get api is' + str(before), 2) continue #ファイルを保存する。 savaFile(josnStr, filepath) #filepath filepath = homeDir + outPath + 'executions_past' + '/' + targetcoin + '.json' # log logstr = '' logstr = 'read json by ' + filepath utilClass.logging(logstr, 0) # ファイルの存在チェック if not os.path.exists(filepath): logstr = 'file not found:' + filepath utilClass.loggingError(logstr, before) continue # json読み込みとパース resultDict = jsonClass.executionsPostParse(filepath, '02') # デバッグ返却リストの数 utilClass.logging( 'get datas num = ' + str(len(resultDict)) + 'by [' + str(before) + ']', 2) # boradの挿入を行う。 boardInsert(resultDict, pid, dao, before) # ファイルを消する。 os.remove(filepath) # イン売り面と before = before + 99 # このバッチ処理の終了log utilClass.logging(pid, 1)
def main(): # 環境変数を取得する。 homeDir = os.environ["APPMONEYTRADE"] # log用の文字列準備 pid = os.path.basename(__file__)[0:3] # 機能IDの取得 #引数の取得 args = sys.argv condTime = args[1] # 1時的に環境変数を追加する。 sys.path.append(homeDir) from initialize import Initialize # 初期化クラスのオブエクトか object_dict = {} object_dict['pid'] = pid Initializer = Initialize.Initialize(object_dict) # utilクラスのオブジェクト取得 utilClass = Initializer.utilClass # daoクラスのオブジェクトを取得する。 dao = Initializer.daoClass # メール送信クラスを取得する MASSClass = Initializer.MASSClass object_dict['util'] = utilClass object_dict['dao'] = dao object_dict['mass'] = MASSClass # jsonparseクラスのオブジェクト取得 jsonClass = Initializer.class_ins('JsonParse', object_dict) # bitflyyerApiクラスを取得 bitflyerClass = Initializer.class_ins('BitflyerApi', object_dict) # bitflyyerApiクラスを取得 ForgeApiClass = Initializer.class_ins('ForgeApi', object_dict) # configファイルから情報を抜き出す. inifile = utilClass.inifile # キーを取得する。 key = inifile.get('apikey', 'forge') # 前回実行時間を取得する。 f = open(homeDir + inifile.get(pid, 'exetime'), "r") exetime = f.read()[0:12] if int(condTime) % 2 == 1: # 前回と同じ時間なので処理しない。 utilClass.logging( pid + ' ' + condTime + ' is skip for before this time has done arleady', 2) return if exetime == condTime: utilClass.logging( pid + ' ' + condTime + ' is skip for before this time has done arleady', 2) return f.close() # バッチのログを出力する. utilClass.logging(pid + ' ' + condTime, 0) # webapiを呼び出す。 josnStr = ForgeApiClass.quotesApi(key) #ファイルを保存する。 # json読み込みとパース resultDict = jsonClass.forgePairParse(josnStr) # boradの挿入を行う。 forgePairInsert(resultDict, pid, condTime, dao) # 最後に実行時間を更新する。 f = open(homeDir + inifile.get(pid, 'exetime'), "w") f.write(condTime) # このバッチ処理の終了log utilClass.logging(pid + ' ' + condTime, 1)
# -*- coding: utf-8 -*- # filename: main.py import os import sys import web import json import time import pandas as pd from handle import Handle from initialize import Initialize urls = ( '/', 'Handle', ) if __name__ == '__main__': Initialize() app = web.application(urls, globals()) app.run()
def run(self, S, N, T, model): NT = N * T #data y = self.y x = self.x pi = self.pi w = self.w #prior self._prior_set() #sigma_beta_sqr = self.sigma_beta_sqr #sigma_xi_sqr = self.sigma_xi_sqr #sigma_z_sqr = self.sigma_z_sqr #sigma_gamma_sqr = self.sigma_gamma_sqr #sigma_delta_sqr = self.sigma_sqr #initialize beta, delta, xi, gamma, z, u, eta, alpha, sigma_alpha_sqr, sigma_v_sqr = Initialize( ).generate(model, x, pi, w) #all_MCMC all_beta = np.zeros([S, x.shape[1]]) all_xi = np.zeros([S, pi.shape[1]]) all_delta = np.zeros([S, pi.shape[1]]) all_z = np.zeros([S, w.shape[1]]) all_gamma = np.zeros([S, w.shape[1]]) all_sigma_v_sqr = np.zeros([ S, ]) all_sigma_alpha_sqr = np.zeros([ S, ]) all_alpha = np.zeros([S, N]) all_eta = np.zeros([S, N]) all_u = np.zeros([S, NT]) #adjust particles number H = self.H H = H - 1 gpu = self.gpu for i in range(S): print(i) ### Posterior # beta V_beta = inv((np.dot(x.T, x) * self.sigma_beta_sqr + sigma_v_sqr) / (sigma_v_sqr * self.sigma_beta_sqr)) mu_beta = np.dot( V_beta, np.dot( x.T, y - u - np.kron(alpha, np.ones([ T, ])) - np.kron(eta, np.ones(T, ))) / sigma_v_sqr) beta = multivariate_normal.rvs(mu_beta, V_beta) # sigma_v_sqr y_tilda = y - np.dot(x, beta) - u - np.kron(alpha, np.ones( T, )) - np.kron(eta, np.ones(T, )) shape = (NT + 1) / 2 scale = 2 / (0.0001 + np.dot(y_tilda.T, y_tilda)) sigma_v_sqr = 1 / np.random.gamma(shape, scale) # sigma_alpha_sqr shape = (N + 1) / 2 scale = 2 / (0.0001 + np.dot(alpha.T, alpha)) sigma_alpha_sqr = 1 / np.random.gamma(shape, scale) if gpu: eta, alpha, u = self.sampler(w, gamma, pi, xi, z, alpha, u, N, T, y, x, beta, sigma_v_sqr, sigma_alpha_sqr, eta, H, delta) else: eta, alpha, u = self.sampler2(w, gamma, pi, xi, z, alpha, u, N, T, y, x, beta, sigma_v_sqr, sigma_alpha_sqr, eta, H, delta) kwargs = { 'delta': delta, 'sigma_delta_sqr': self.sigma_delta_sqr, 'pi': pi, 'u': u, 'xi': xi, 'sigma_xi_sqr': self.sigma_xi_sqr, 'z': z, 'sigma_z_sqr': self.sigma_z_sqr, 'w': w, 'gamma': gamma, 'eta': eta } if model == 'A': #sigma_eta shape = (N + 1) / 2 scale = 2 / (0.0001 + np.dot(eta.T, eta)) sigma_eta_sqr = 1 / np.random.gamma(shape, scale) #sigma_u shape = (NT + 1) / 2 scale = 2 / (0.0001 + np.dot(u.T, u)) sigma_u_sqr = 1 / np.random.gamma(shape, scale) #decompose for PMCMC gamma = np.array([np.log(sigma_eta_sqr), 0]) xi = np.array([np.log(sigma_u_sqr), 0]) elif model == 'B': delta, z = HMC().sampler(model, **kwargs) elif model == 'C': xi, gamma = HMC().sampler(model, **kwargs) elif model == 'D': delta, z, xi, gamma = HMC().sampler(model, **kwargs) print('beta') print(beta) print('delta') print(delta) print('xi') print(xi) print('z') print(z) print('gamma') print(gamma) print('sigma_alpha_sqr') print(sigma_alpha_sqr) print('sigma_v_sqr') print(sigma_v_sqr) print('eta_mean_std') print(eta.mean()) print(eta.std()) print('u_mean_std') print(u.mean()) print(u.std()) all_beta[i, :] = beta all_xi[i, :] = xi all_delta[i, :] = delta all_z[i, :] = z all_gamma[i, :] = gamma all_sigma_alpha_sqr[i] = sigma_alpha_sqr all_sigma_v_sqr[i] = sigma_v_sqr all_alpha[i, :] = alpha all_eta[i, :] = eta all_u[i, :] = u return all_beta, all_xi, all_delta, all_z, all_gamma, all_sigma_alpha_sqr, all_sigma_v_sqr, all_alpha, all_eta, all_u
#!/usr/bin/python from initialize import Initialize import os csurBaseDir = '/hp/support/csur' loggerName = 'csurLogger' initialize = Initialize() csurResourceDict = initialize.init(csurBaseDir, loggerName)
def initialize(root): initializeFrame = Frame(root, bg="Black") gif = Initialize(initializeFrame, root) initializeFrame.pack(fill=BOTH)
def main(): # デバッグ starttime = datetime.now() print(starttime) # 基準年月日時分を取得する。 standardTime = starttime.strftime('%Y%m%d%H%M') # 環境変数を取得する。 homeDir = os.environ["APPMONEYTRADE"] # log用の文字列準備 exefile = os.path.basename(__file__) pid = os.path.basename(__file__)[0:4] # 機能IDの取得 # 1時的に環境パスを追加する。 sys.path.append(homeDir) from initialize import Initialize # 初期化クラスのオブエクトか object_dict = {} object_dict['pid'] = pid Initializer = Initialize.Initialize(object_dict) # utilクラスのオブジェクト取得 utilClass = Initializer.utilClass # daoクラスのオブジェクトを取得する。 daoClass = Initializer.daoClass # メール送信クラスを取得する MASSClass = Initializer.MASSClass object_dict['util'] = utilClass object_dict['dao'] = daoClass object_dict['mass'] = MASSClass # 各クラスのオブジェクト化 # ビットフライヤークラス bitflyerClass = Initializer.class_ins('BitflyerApi_STRE', object_dict) # データマイニングクラスを取得する。 DTMClass = Initializer.class_ins('DTMDataMining', object_dict) # トレード決定サービスクラスを取得する。 TradeClass = Initializer.class_ins('TradeDecision', object_dict) # 機械学習(sigmoid)を呼び出す DNNSigmoidClass = Initializer.class_ins('DNNSDNNSigmoid', object_dict) # データ収集クラスを呼び出す。 DataGatherSaveClass = Initializer.class_ins('DGGSDataGatherSave', object_dict) # configファイルから情報を抜き出す. inifile = utilClass.inifile # APIキーを取得する。 key = inifile.get('apikey', 'bitflyer') secret = inifile.get('apikey', 'private') # # バッチのログを出力する. utilClass.logging( 'System Trade is begun and STANDARDTIME IS [' + standardTime + ']', 0) # システムトレード中止/再開メール確認サービス前回実行時間を取得する。 exestsc = inifile.get('tradedicition', 'msscServicemin') f = open(homeDir + inifile.get('tradedicition', 'msscServicetxt'), "r") exetime = f.read()[0:12] f.close() if exetime == '' or exetime is None or utilClass.strDateMinus( standardTime, exetime) > int(exestsc) * 60: # システムトレード中止/再開メール確認サービス前回実行時間を取得する。 resultmssc = MASSClass.msscService(standardTime) # 状況確認サービス制御ファイル書き込み f = open(homeDir + inifile.get('tradedicition', 'msscServicetxt'), "w") f.write(standardTime) f.close() # 再開の場合 if resultmssc['sysdradeTodo'] == 2: # バッチのログを出力する. utilClass.loggingWarn( 'MASSClass.msscService has result theirs is restart') # エラー管理ービスを呼び出す service = 'msscService' TradeClass.ercrService('21', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスの結果が「再開」でした') # 中止の場合 if resultmssc['sysdradeTodo'] == 1: # バッチのログを出力する. utilClass.loggingWarn( 'MASSClass.msscService has result theirs is stop') # エラー管理ービスを呼び出す service = 'msscService' TradeClass.ercrService('81', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスの結果が「中止」でした') # 終了処理 dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 最も最近のエラー管理情報を取得する。 resultercr = TradeClass.ercrService('00') if len(resultercr) >= 1 and resultercr['resultCode'] == 0 and int( resultercr['type'][0:1]) > 5: utilClass.loggingError( 'before systrade is abnormal ended. errortype is [' + resultercr['type'] + ']. id is [' + str(resultercr['id']) + ']') dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 現在の最終取引価格を取得する。 resultftpg = bitflyerClass.ftpgService(cointype='FX_BTC_JPY') if resultftpg is None or len( resultftpg) == 0 or resultftpg['resultCode'] == 9: # バッチのログを出力する. utilClass.loggingWarn('ftpgService is abnormal termination') # エラー管理テーブルを呼び出す service = 'ftpgService' TradeClass.ercrService('11', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスのAPI通信が失敗しました') dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # バッチログ 現在の価格状況 utilClass.logging('resultftpg is having ' + str(resultftpg), 2) # 既存予約取引参照 resultebtr = bitflyerClass.ebtrService(key, secret, cointype='FX_BTC_JPY', datanum=1) if resultebtr is None or len( resultebtr) == 0 or resultebtr['resultCode'] == 9: # バッチのログを出力する. utilClass.loggingWarn('ebtrService is abnormal termination') # エラー管理サービスを呼び出す service = 'ebtrService' TradeClass.ercrService('11', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスのAPI通信が失敗しました') dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 既存予約の確認 utilClass.logging('resultebtr is having ' + str(resultebtr), 2) # 既存の有効取引を取得する resultevtr = bitflyerClass.evtrService(key, secret, cointype='FX_BTC_JPY', datanum=1) if resultevtr is None or len( resultevtr) == 0 or resultevtr['resultCode'] == 9: # バッチのログを出力する. utilClass.loggingWarn('evtrService is abnormal termination') # エラー管理サービスを呼び出す service = 'evtrService' TradeClass.ercrService('11', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスのAPI通信が失敗しました') dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 既存有効取引結果をログ出力 utilClass.logging('resultevtr is having ' + str(resultevtr), 2) # 状況確認の前回実行時間を取得する。 exestsc = inifile.get('tradedicition', 'stscServicemin') f = open(homeDir + inifile.get('tradedicition', 'stscServicetxt'), "r") exetime = f.read()[0:12] f.close() if exetime == '' or exetime is None or utilClass.strDateMinus( standardTime, exetime) > int(exestsc) * 60: # 状況確認サービス TradeClass.stscService(standardTime, resultebtr, resultevtr) # 状況確認サービス制御ファイル書き込み f = open(homeDir + inifile.get('tradedicition', 'stscServicetxt'), "w") f.write(standardTime) f.close() # データマイニングを実行する。 loop_flg = True while loop_flg: resultdtm = DTMClass.dtmservice(standardTime, dict=resultftpg) if resultdtm is None or len( resultdtm) == 0 or resultdtm['resultCode'] == 9: # バッチのログを出力する. utilClass.loggingWarn( 'DTMClass.dtmservice is abnormal termination') # エラー管理サービスを呼び出す service = 'dtmService' TradeClass.ercrService('12', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスのデータマイニングが失敗しました') # 終了処理 dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) elif resultdtm['resultCode'] == 0: loop_flg = False else: # バッチのログを出力する. utilClass.logging('DTMClass.dtmservice is return 1 so again call', 2) # 機械学習系サービスクラス # ディープニューラルネットワークの分類を行う resultdnns = DNNSigmoidClass.dnnsService(standardTime) if resultdnns is None or len( resultdnns) == 0 or resultdnns['resultCode'] == 9: # バッチのログを出力する. utilClass.loggingWarn( 'DNNSigmoidClass.dnnsService is abnormal termination') # エラー管理サービスを呼び出す service = 'dnnsService' TradeClass.ercrService('91', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスの機械学習(sigmoid)が失敗しました') dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 機械学習結果 utilClass.logging('resultdnns is having ' + str(resultdnns), 2) # 機械学習結果とその時の値段を格納する DataGatherSaveClass.prssService(resultdnns['predict'], resultftpg['endTradePrice']) # 既存予約が1件以上の場合予約を取り消すか判定する if resultebtr['resultNum'] != 0: # 予約取引取消判定サービスを呼び出す。 resultbtcd = TradeClass.btcdService(resultftpg, resultebtr, resultevtr, resultdnns) if resultbtcd is None or len( resultbtcd) == 0 or resultbtcd['resultCode'] == 9: # バッチのログを出力する. utilClass.loggingWarn( 'TradeClass.btcdService is abnormal termination') # エラー管理サービスを呼び出す service = 'ebtrService' TradeClass.ercrService('11', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスが失敗しました') dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 予約取引判定の結果 utilClass.logging('resultbtcd is having ' + str(resultbtcd), 2) # 予約を取り消す場合 if resultbtcd['orderCancelFlg'] == 1: # 既存の予約を取り消す。 resultebtc = bitflyerClass.ebtcService( key, secret, resultebtr['child_order_id'], cointype='FX_BTC_JPY') if 0 == resultebtc: # バッチのログを出力する。 utilClass.logging( 'can not get bitflyerData so skiped' + ' data is ebtcService', 2) # エラー管理サービスを呼び出す service = 'ebtcService' TradeClass.ercrService('11', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスが失敗しました') # 再度予約取消を呼び出す。 resultebtc = bitflyerClass.ebtcService( key, secret, resultebtr['child_order_id'], cointype='FX_BTC_JPY') # 予約取消について再度確認 if 0 == resultebtc: # バッチのログを出力する。 utilClass.logging( 'can not get bitflyerData so skiped' + ' data is ebtcService', 2) dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 予約取消確認が取れるまで確認する。 if resultebtc == 1: while (True): # 既存の予約を取得する。 resultebtr2 = bitflyerClass.ebtrService( key, secret, cointype='FX_BTC_JPY', datanum=1) sleep(2) if len(resultebtr2) > 0 and resultebtr2['resultNum'] == 0: # 予約が取り消されたらメールで送信する。 # メール送信を整える。 dict = {} dict['subject'] = '予約取引取消完了通知' body = ['取引予約が完了しました。'] body.append('▼詳細情報') body.append('取消注文ID:' + resultebtr['child_order_id']) body.append('取消注文額:' + str(resultebtr['price'])) body.append('取消注文サイド:' + resultebtr['side']) body.append('取消注文量:' + str(resultebtr['size'])) dict['body'] = body MASSClass.massService(dict) break # 証拠金確認サービスを実行する call_cchrService(key, secret, utilClass, TradeClass, MASSClass, bitflyerClass) # 終了処理 dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) else: # 証拠金確認サービスを実行する。 call_cchrService(key, secret, utilClass, TradeClass, MASSClass, bitflyerClass) # 終了処理 dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 既存の有効取引が存在する場合は損切り、利益確定判定を実施する。 if resultevtr['resultNum'] != 0: # 損切り/利益確定判定を実施する。 resultlptd = TradeClass.lptdService(resultftpg, resultevtr, resultdnns) if resultlptd is None or len( resultlptd) == 0 or resultlptd['resultCode'] == 9: utilClass.loggingWarn( 'TradeClass.lptdService is abnormal termination') # エラー管理サービスを呼び出す service = 'lptdService' TradeClass.ercrService('91', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスが失敗しました') dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 損切利益判定の処理結果をログに出力する。 utilClass.logging('resultlptd is having ' + str(resultlptd), 2) if resultlptd['executeflg'] == 1: # 新規取引と新規取引完了確認 neworder(key, secret, resultlptd['side'], resultlptd['price'], resultlptd['size'], utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass, exefile, inifile, resultevtr, resultlptd['lossgain']) # 証拠金変動確認と更新 call_cchrService(key, secret, utilClass, TradeClass, MASSClass, bitflyerClass) # 終了処理 dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) else: # 証拠金変動確認と更新 call_cchrService(key, secret, utilClass, TradeClass, MASSClass, bitflyerClass) # 終了処理 dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 新規取引判定を行う resultntrd = TradeClass.ntrdService(resultftpg, resultdnns) if resultntrd is None or len( resultntrd) == 0 or resultntrd['resultCode'] == 9: # 警告ログを出力する。 utilClass.loggingWarn( 'DNNSigmoidClass.dnnsService is abnormal termination') # エラー管理サービス service = 'ntrdService' TradeClass.ercrService('91', className=exefile, service=service, msg=inifile.get('service', service) + 'サービスが失敗しました') dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass) # 新規取引判定結果ログ出力 utilClass.logging('ntrdService is having ' + str(resultntrd), 2) # 新規取引判定が有りの場合は新規予約取引サービスを呼び出す if resultntrd['newOrderFlg'] == 1: # 新規取引と新規取引完了確認 neworder(key, secret, resultntrd['side'], resultntrd['price'], resultntrd['size'], utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass, exefile, inifile, resultevtr, 0) # 証拠金確認サービスを呼び出す. call_cchrService(key, secret, utilClass, TradeClass, MASSClass, bitflyerClass) # バッチ終了ログ dofinish(utilClass, TradeClass, MASSClass, bitflyerClass, standardTime, daoClass)