0

Guten Tag,Warum passiert dieser AttributeError?

Ich bin ein Student, und ich versuchte, die Wavetrend Oscillator Strategie auf der Quantopian Plattform zu implementieren: https://www.tradingview.com/script/2KE8wTuF-Indicator-WaveTrend-Oscillator-WT/ , was ich verkauft AAPL tun wollte, als der Indikator hoch ist und es zu kaufen, wenn niedrig ist.

Es hält mich diesen Fehler geben:

AttributeError: 'zipline.assets._assets.Equity' object has no attribute 'history' 

Kann mir jemand helfen?

import talib 
import pandas 

# --------------------------------------------------- 
n1, n2, period, stock = 10, 21, 12, sid(24) 
# --------------------------------------------------- 
def initialize(context): 
    schedule_function(open_positions, date_rules.week_start(), time_rules.market_open()) 

def handle_data(context, data): 
    if get_open_orders(): return 
    close = stock.history(stock, 'close', period + 1, '1d') 
    low = stock.history(stock, 'low', period + 1, '1d') 
    high = stock.history(stock, 'high', period + 1, '1d') 
    ap = (high+low+close)/3 
    esa = talib.EMA(ap, timeperiod=n1) 
    d = talib.EMA(abs(ap - esa), timeperiod=n1) 
    ci = (ap - esa)/(0.015 * d)  
    wt1 = talib.EMA(ci, timeperiod=n2) 
    wt1 = wt1.dropna() 
    wt2 = talib.SMA(wt1, timeperiod=4) 
    wt2 = wt2.dropna() 

def open_positions(context, data): 
    if data.can_trade(stock < wt1): 
     order_target_percent(stock, 2) 
    elif data.can_trade(stock > wt2): 
     order_target_percent(stock, -1) 
+1

aus dem Code und die Fehler, die ich annehmen würde, dass 'stock' nicht die' history' Methode hat, die Sie versuchen zu benutze – Roars

+0

@Roars ist richtig - die Methode 'sid (...)' gibt ein Objekt zurück, das keine Methode 'history()' hat. Hilft https://www.quantopian.com/help#ide-history? – gtmtg

Antwort

0

ok, ich glaube, ich es richtig funktionieren gemacht:

import talib 

# --------------------------------------------------- 
n1, n2, period, stock = 10, 21, 60, sid(24) 
# --------------------------------------------------- 
def initialize(context): 
    schedule_function(trade, date_rules.week_start(), time_rules.market_open()) 

def trade(context, data): 
    ob = 80 #"Over Bought Level" 
    os = -80 #"Over Sold Level" 
    if get_open_orders(): return 
    close = data.history(stock, 'close', period + 1, '1d').dropna() 
    low = data.history(stock, 'low', period + 1, '1d').dropna() 
    high = data.history(stock, 'high', period + 1, '1d').dropna() 
    ap = (high + low + close)/3 
    esa = talib.EMA(ap, timeperiod=n1) 
    d = talib.EMA(abs(ap - esa), timeperiod=n1) 
    ci = (ap - esa)/(0.015 * d) 
    wt1 = talib.EMA(ci, timeperiod=n2) 
    record(wt1 = wt1[-1], ob = ob,os = os) 
    if data.can_trade(stock): 
     if wt1[-1] > os: 
      order_target_percent(stock, 2) 
     elif wt1[-1] < ob: 
      order_target_percent(stock, 0)