本文整理汇总了Python中zipline.algorithm.TradingAlgorithm.get_datetime方法的典型用法代码示例。如果您正苦于以下问题:Python TradingAlgorithm.get_datetime方法的具体用法?Python TradingAlgorithm.get_datetime怎么用?Python TradingAlgorithm.get_datetime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类zipline.algorithm.TradingAlgorithm
的用法示例。
在下文中一共展示了TradingAlgorithm.get_datetime方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: handle_data
# 需要导入模块: from zipline.algorithm import TradingAlgorithm [as 别名]
# 或者: from zipline.algorithm.TradingAlgorithm import get_datetime [as 别名]
def handle_data(self, data): # overload handle_data() method
#print self.day_count
date = TradingAlgorithm.get_datetime(self)
self.dates.append(date)
#print self.portfolio
#print str(date)[0:10]
# Get price and trend data
for sym in sym_list:
#print self.portfolio
# Price
sym_price = data[sym].price
sym_high = data[sym].high
sym_low = data[sym].low
sym_volume = data[sym].volume
self.prices[sym] = np.append(self.prices[sym],sym_price)
self.lows[sym] = np.append(self.prices[sym],sym_low)
self.highs[sym] = np.append(self.prices[sym],sym_high)
# Volume
self.volume[sym] = np.append(self.volume[sym],sym_volume)
# RSI, MACD, Chaikin, MFI
mfi = self.get_mfi(sym)
cmf = self.get_chaikin(sym)
self.chaikin_plot[sym] = np.append(self.chaikin_plot[sym],cmf)
rsi = self.get_rsi(sym)[-1]
self.rsi_plot[sym] = np.append(self.rsi_plot[sym],rsi)
macd, macdsignal, macdhist = self.get_macd(sym)
# Trend
trend = self.trend_dfs[sym]['sum'][self.dates[-1]]
self.trends[sym].append(float(trend))
# Get gains
gain = self.trade_gain(sym)
self.gains[sym] = np.append(self.gains[sym],gain)
# Get RS and zscore
if self.day_count >= window_long:
rs = self.get_rs
zscore = self.trend_zscore(sym,date,window_long)
zscore_s = self.trend_zscore(sym,date,window_short)
self.zscores[sym].append(zscore)
self.zscores_s[sym].append(zscore_s)
# Execute trades
if self.portfolio.positions[sym].amount == 0 and self.zscores[sym][-1] >= 2 and mfi > 40: # cmf > -0.1 and :# and rsi <= 30: # and cmf > -0.05:
#if self.zscores_s[sym][-1] > self.zscores[sym][-1] and self.zscores_s[sym][-2] < self.zscores[sym][-2]:
if 1 == 1:
self.long(data,sym)
print str(date)[0:10],'LONG:',sym
elif self.portfolio.positions[sym].amount != 0:
if sym_price >= self.atr_plot[sym]['profit'][-1] or sym_price <= self.atr_plot[sym]['loss'][-1]:
q = self.portfolio.positions[sym].amount
self.order(sym,-q)
print str(date)[0:10],'Exit:',sym
else:
self.zscores[sym].append(0)
self.zscores_s[sym].append(0)
atr = self.get_atr(sym)[-1]
self.atr_plot[sym]['profit'].append((atr*3)+sym_price)
self.atr_plot[sym]['loss'].append(-(atr*3)+sym_price)
self.day_count += 1
示例2: handle_data
# 需要导入模块: from zipline.algorithm import TradingAlgorithm [as 别名]
# 或者: from zipline.algorithm.TradingAlgorithm import get_datetime [as 别名]
def handle_data(self, data): # overload handle_data() method
day = TradingAlgorithm.get_datetime(self)
self.dates.append(day)
#print self.day_count
#print self.portfolio
# Get price data
for sym in sym_list:
sym_price = data[sym].price
sym_high = data[sym].high
sym_low = data[sym].low
self.prices[sym] = np.append(self.prices[sym],sym_price)
self.lows[sym] = np.append(self.prices[sym],sym_low)
self.highs[sym] = np.append(self.prices[sym],sym_high)
# Execute trades
for sym in sym_list:
if self.day_count >= 0:
atr = self.get_atr(sym)[-1]
rsi = self.get_rsi(sym)[-1]
macd, macdsignal, macdhist = self.get_macd(sym)
slowk, slowd = self.get_stoch(sym)
#
if self.portfolio.positions[sym].amount == 0:
if macd[-1] > 0 and rsi > 70 and 50 <= slowk[-1] <= 80:
print day,' Long ',sym
self.long(data,sym)
self.buy_plot[sym].append(self.day_count)
take = (atr*5)+sym_price
stop = -(atr*2)+sym_price
self.stops[sym] = [take,stop]
elif macd[-1] < 0 and rsi < 30 and 20 <= slowk[-1] <= 50:
print day,' Short ',sym
self.short(data,sym)
self.sell_plot[sym].append(self.day_count)
take = -(atr*5)+sym_price
stop = (atr*2)+sym_price
self.stops[sym] = [take,stop]
else:
pass
elif self.portfolio.positions[sym].amount > 0:
if sym_price >= self.stops[sym][0] or sym_price <= self.stops[sym][1]:
print day,' Exit Long ',sym
q = self.portfolio.positions[sym].amount
self.order(sym,-q)
self.sell_plot[sym].append(self.day_count)
elif self.portfolio.positions[sym].amount < 0:
if sym_price <= self.stops[sym][0] or sym_price >= self.stops[sym][1]:
print day,' Exit Short ',sym
q = self.portfolio.positions[sym].amount
self.order(sym,-q)
self.buy_plot[sym].append(self.day_count)
self.day_count += 1
示例3: handle_data
# 需要导入模块: from zipline.algorithm import TradingAlgorithm [as 别名]
# 或者: from zipline.algorithm.TradingAlgorithm import get_datetime [as 别名]
def handle_data(self, data): # overload handle_data() method
print self.day_count
print self.portfolio
month = int(str(TradingAlgorithm.get_datetime(self))[5:7])
# Get price data
spy_price = data[index].price
self.prices[index].append(spy_price)
for sym in sym_list:
sym_price = data[sym].price
self.prices[sym].append(sym_price)
# Execute trades
if len(self.dates) < spy_window or len(self.dates) < window:
pass
else:
spySMA = self.spy_sma()
if self.last_order == 0 or self.day_count >= self.last_order+22:
# Exit existing positions
for sym in feed:
if self.portfolio.positions[sym].amount != 0:
q = self.portfolio.positions[sym].amount
self.order(sym,-q)
if spy_price > spySMA:
# Enter new position
self.get_rs(data)
sorted_rs = sorted(self.rs_list.iteritems(), key=operator.itemgetter(1))
print sorted_rs
#print 'SHORT: ', sorted_rs[0][0], sorted_rs[1][0], sorted_rs[2][0]
#print 'LONG: ', sorted_rs[-3][0], sorted_rs[-2][0], sorted_rs[-1][0]
#self.short(data,sorted_rs[0][0])
#self.short(data,'SPY')
#self.short(data,sorted_rs[1][0])
#self.short(data,sorted_rs[2][0])
self.long(data,sorted_rs[-1][0])
self.long(data,sorted_rs[-2][0])
#self.long(data,sorted_rs[-3][0])
self.last_order = self.day_count
else:
pass
else:
pass
self.dates.append(month)
self.day_count += 1
示例4: handle_data
# 需要导入模块: from zipline.algorithm import TradingAlgorithm [as 别名]
# 或者: from zipline.algorithm.TradingAlgorithm import get_datetime [as 别名]
def handle_data(self, data): # overload handle_data() method
#print self.day_count
date = TradingAlgorithm.get_datetime(self)
self.dates.append(date)
#print self.portfolio
#print str(date)[0:10]
# Get price and trend data
for sym in sym_list:
# Price
sym_price = data[sym].price
sym_high = data[sym].high
sym_low = data[sym].low
self.prices[sym] = np.append(self.prices[sym],sym_price)
self.lows[sym] = np.append(self.prices[sym],sym_low)
self.highs[sym] = np.append(self.prices[sym],sym_high)
# RSI, MACD
rsi = self.get_rsi(sym)[-1]
macd, macdsignal, macdhist = self.get_macd(sym)
# Trend
trend = self.trend_df[sym][self.dates[-1]]
self.trends[sym].append(float(trend))
# Get RS and zscore
if self.day_count >= window:
rs = self.get_rs
zscore = self.trend_zscore(sym,date)
self.zscores[sym].append(zscore)
# Execute trades
if self.portfolio.positions[sym].amount == 0 and zscore >= 3:
self.long(data,sym)
print str(date)[0:10],'LONG:',sym
elif self.portfolio.positions[sym].amount != 0:
if sym_price >= self.atr_plot[sym]['profit'][-1] or sym_price <= self.atr_plot[sym]['loss'][-1]:
q = self.portfolio.positions[sym].amount
self.order(sym,-q)
print str(date)[0:10],'Exit:',sym
else:
self.zscores[sym].append(0)
atr = self.get_atr(sym)[-1]
self.atr_plot[sym]['profit'].append((atr*3)+sym_price)
self.atr_plot[sym]['loss'].append(-(atr*1.5)+sym_price)
self.day_count += 1
示例5: handle_data
# 需要导入模块: from zipline.algorithm import TradingAlgorithm [as 别名]
# 或者: from zipline.algorithm.TradingAlgorithm import get_datetime [as 别名]
def handle_data(self, data):
####################################################################
day = TradingAlgorithm.get_datetime(self)
self.dates.append(day)
print self.dates[-1]
#print 'Progress: ' + str(PerformanceTracker.to_dict(self))
####################################################################
# Get the prices and do some calculations
for sym in sym_list:
etf = sym_list[sym]
sym_price = data[sym].price
etf_price = data[etf].price
ratio = sym_price - etf_price
self.trade_return(sym, ratio)
self.ratios[sym]['SPREAD'].append(ratio)
####################################################################
# Calculate the trade return for analysis purposes
####################################################################
# Trade related calculations loop
self.day_count += 1
for sym in sym_list:
etf = sym_list[sym]
sym_price = data[sym].price
etf_price = data[etf].price
################################################################
# 1. Compute regression coefficients between the two instruments
params = self.ols_transform.handle_data(data, sym, etf)
if params is None: # Exits before
for sym in sym_list: # place_orders
self.zscores[sym]['ZSCORE'].append(0)
action = '---'
self.actions[sym]['ACTION'].append(action)
return
intercept, slope = params
################################################################
# 2. Compute spread and z-score
zscore = self.compute_zscore(data, sym, etf, sym_price, etf_price, slope, intercept)
################################################################
# 3. Place orders
self.place_orders(data, sym, etf, sym_price, etf_price, zscore)
示例6: place_orders
# 需要导入模块: from zipline.algorithm import TradingAlgorithm [as 别名]
# 或者: from zipline.algorithm.TradingAlgorithm import get_datetime [as 别名]
def place_orders(self, data, sym, etf, sym_price, etf_price, zscore):
####################################################################
day = TradingAlgorithm.get_datetime(self)
# Buy spread if z-score is > 2, sell if z-score < .5.
etf = sym_list[sym]
sym_price = data[sym].price
etf_price = data[etf].price
if zscore >= 2 and self.portfolio.positions[sym].amount == 0:
sym_quantity = -int(trade_size / sym_price)
etf_quantity = int(trade_size / etf_price)
self.order(sym, sym_quantity)
self.order(etf, etf_quantity)
self.trade_log[sym] = self.trade_log[sym] + 1
action = 'SELL'
self.set_log(day, sym, etf, zscore, action, (sym_price-etf_price))
elif zscore <= -2 and self.portfolio.positions[sym].amount == 0:
sym_quantity = int(trade_size / sym_price)
etf_quantity = -int(trade_size / etf_price)
self.order(sym, sym_quantity)
self.order(etf, etf_quantity)
self.trade_log[sym] = self.trade_log[sym] + 1
action = 'BUY'
self.set_log(day, sym, etf, zscore, action, (sym_price-etf_price))
elif abs(zscore) < .5 and self.portfolio.positions[sym].amount != 0:
etf_amount = self.portfolio.positions[etf].amount
self.order(etf, -1 * etf_amount)
sym_amount = self.portfolio.positions[sym].amount
self.order(sym, -1 * sym_amount)
if sym_amount > 0:
action = 'SELL'
self.set_log(day, sym, etf, zscore, action, (sym_price-etf_price))
else:
action = 'BUY'
self.set_log(day, sym, etf, zscore, action, (sym_price-etf_price))
else:
action = '---'
self.actions[sym]['ACTION'].append(action)
return