類 的定義
class AbuPickTimeWorker(AbuPickTimeWorkBase):
def __init__(self, cap, kl_pd, benchmark, buy_factors, sell_factors):
self.capital = cap
self.kl_pd = kl_pd
self.combine_kl_pd = ABuSymbolPd.combine_pre_kl_pd(self.kl_pd, n_folds=1
self.benchmark = benchmark
self.init_buy_factors(buy_factors)
self.init_sell_factors(sell_factors)
self.filter_long_task_factors()
#不初始化
self.orders = list()
self.task_pg = None
def _day_task(self, today):
sell = mockTrading()
self._task_attached_sell(today, how='day')
for sell_factor in self.sell_factors:
sell_factor.read_fit_day(today, self.orders)
for buy_factor in self.buy_factors:
if not buy_factor.lock_factor:
order = buy_factor.read_fit_day(today)
if order and order.order_deal:
self.orders.append(order)
函數(shù)調(diào)用類的方法,類初始化多次,如何不初始化多次,使得self.orders不初始化,使用單例模式,回導(dǎo)致orders一直不變,想實(shí)現(xiàn)每個(gè)實(shí)例初始化一次.
def stockBuy(read_cash, buy_factors, sell_factors, choice_symbol,date,env=None):
abupy.env.g_enable_ml_feature = True
abupy.env.g_market_target = EMarketTargetType.E_MARKET_TARGET_CN
commission_dict = {
'buy_commission_func': buy_commission_ch,
'sell_commission_func':sell_commission_ch}
benchmark = AbuBenchmark()
capital = AbuCapital(
read_cash,
benchmark,
commission_dict)
kl_pd_manager = AbuKLManager(benchmark, capital)
kl_pd = kl_pd_manager.get_pick_time_kl_pd(choice_symbol)
#初始化多次???
time_work = stockSell(
capital,
kl_pd,
benchmark,
buy_factors,
sell_factors)
try:
if date == datetime.datetime.today().strftime('%Y%m%d'):
today_time = kl_pd[:date].iloc[-1]
# print (today_time)
# 調(diào)用類的方法
time_work._day_task(today_time)
return time_work.orders
else:
today_time = kl_pd[:date].iloc[-2]
# print (today_time)
time_work._day_task(today_time)
return time_work.orders
except TypeError:
pass
調(diào)用函數(shù)
if __name__ == '__main__':
stock_300 = pd.read_csv(
'../src/000300closeweight.csv',
encoding='gbk',
dtype={
'成分券代碼Constituent Code': str})
stock_300.sort_values(by='權(quán)重(%)Weight(%)', ascending=False, inplace=True)
choice_symbols = stock_300[:100]['成分券代碼Constituent Code'].tolist()
choice_symbols = list(set(choice_symbols))
print(choice_symbols)
read_cash = 200000
buy_factors = [
{
'fast': 5, 'slow': 20, 'class': AbuDoubleMaBuy}, {
'xd': 60, 'class': AbuFactorBuyBreak}, {
'xd': 42, 'class': AbuFactorBuyBreak, 'position': {
'class': AbuKellyPosition}, }]
sell_factors = [
{'stop_loss_n': 1.0, 'stop_win_n': 3.0,
'class': AbuFactorAtrNStop},
{'class': AbuFactorPreAtrNStop, 'pre_atr_n': 1.5},
{'class': AbuFactorCloseAtrNStop, 'close_atr_n': 1.5}]
commission_dict = {
'buy_commission_func': buy_commission_ch,
'sell_commission_func': sell_commission_ch}
benchmark = AbuBenchmark()
capital = AbuCapital(
read_cash,
benchmark,
commission_dict)
kl_pd_manager = AbuKLManager(benchmark, capital)
kl_pd = kl_pd_manager.get_pick_time_kl_pd(choice_symbol)
buy = stockSell(cap, kl_pd, benchmark, buy_factors, sell_factors)
start_day = datetime.date(2017, 6, 1)
?。J褂胒or 的時(shí)候調(diào)用函數(shù)多次,導(dǎo)致類初始化多次,然而類的初始化參數(shù)又依賴于傳參.如何改進(jìn)思路.
for i in range(300):
start_day += datetime.timedelta(days=1)
"""
methods:
buy.singnal_sell(code,date)
buy.mulit_process_sell(code_list,date,n_jobs)
"""
result = stockBuy(read_cash,buy_factors,sell_factors,choice_symbols[0],str(
start_day.strftime('%Y%m%d')),env=None)
print ('result',[r for r in list(result) if r])
單例模式代碼
def singleton(cls):
instances = {}
def wrapper(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return wrapper
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。