def campaigns(self, filter_id='', filter_folder=None, filter_fromname='', filter_fromemail='', filter_title='', filter_subject='', filter_sendtimestart=None, filter_sendtimeend=None, filter_exact=False, start=0, limit=50): """Get the list of campaigns and their details matching the specified filters. Timestamps should be passed as datetime objects. http://apidocs.mailchimp.com/api/1.3/campaigns.func.php """ filter_sendtimestart = transform_datetime(filter_sendtimestart) filter_sendtimeend = transform_datetime(filter_sendtimeend) return self._api_call(method='campaigns', filter_id=filter_id, filter_folder=filter_folder, filter_fromname=filter_fromname, filter_fromemail=filter_fromemail, filter_title=filter_title, filter_subject=filter_subject, filter_sendtimestart=filter_sendtimestart, filter_sendtimeend=filter_sendtimeend, filter_exact=filter_exact, start=start, limit=limit)
def campaign_schedule(self, cid, schedule_time, schedule_time_b=None): """Schedule a campaign to be sent in the future. http://apidocs.mailchimp.com/api/1.3/campaignschedule.func.php """ schedule_time = transform_datetime(schedule_time) if schedule_time_b: schedule_time_b = transform_datetime(schedule_time_b) return self._api_call(method='campaignSchedule', cid=cid, schedule_time=schedule_time, schedule_time_b=schedule_time_b)
def is_between(dfm): """ func 日付fireがstartとendの範囲内にあるか無いか真偽値を末尾にchkという列に追加 - fireがstart, endの境界上にある場合、「ある」と判定 In dfm : pd.DataFrame(変換用) Out added_dfm : chk列を追加した後のpd.DataFrame """ # fire, start, end列をdatetime64型に変換する date_columns = ["fire", "start", "end"] added_dfm = transform_datetime(dfm, date_columns) # 日付fireがstartとendの範囲内にあるか無いか真偽値を末尾にchkという列に追加 added_dfm["chk"] = (added_dfm["start"] <= added_dfm["fire"]) & (added_dfm["fire"] <= added_dfm["end"]) # fire, start, end列を元の文字列型に直す added_dfm = transform_object(added_dfm, date_columns) return added_dfm
def add_to_end(dfm): """ func 行毎にend列にadd列の日数を加算してend列を更新 In dfm : pd.DataFrame(変換用) Out added_dfm : end列を更新した後のpd.DataFrame """ # end列をdatetime64型に変換する date_columns = ["end"] added_dfm = transform_datetime(dfm, date_columns) # end列にadd列分の日数を加算してend列を更新する added_dfm["end"] = added_dfm["end"] + added_dfm["add"].map( datetime.timedelta) # end列を元の文字列型に直す added_dfm = transform_object(added_dfm, date_columns) return added_dfm
pre_close_dict = zhuli.get_info(trade_dates) if backtest: print('a new day: %s' % trade_date) klines = [] # 所有K线保存在这 target_pos = [] # 所有任务TargetPossTask放这 hold_pos = [] # 持仓变换情况 names = [] # 名字 last_times = [] # 上一交易日时刻, 不同合约交易时段不同 for kind in df_list['code'].unique(): tmp_k = api.get_kline_serial([kind], 60, data_length=1200) if 'ag' in kind: # 应该每天都会有ag合约,否则程序会出错 sp_kline = tmp_k last_time_ = utils.transform_datetime( sp_kline['datetime'].values[-1]) target_pos.append(TargetPosTask(api, kind)) names.append(kind) klines.append(tmp_k) last_times.append( utils.transform_datetime(tmp_k['datetime'].values[-1])) hold_kind = [] hold_time = [] direction = [] t1 = time.time() while True: api.wait_update() t2 = time.time()