2016-10-17 1 views
0

Ich schreibe einen Algo, um die Preisänderungen einer gegebenen Liste von Aktien jeden Tag zu bewerten. Im Moment arbeite ich mit zwei Aktien: Apple und Amex. Ich möchte sie von der größten Preisveränderung zur geringsten Preisveränderung täglich einordnen.Ranking Tägliche Preisänderungen

Zum Beispiel die Daten, die ich habe sieht wie folgt aus:

Tag 1:

AAPL = 60,40

AMX = 15.50

Tag 2:

AAPL = 61.00

AMX = 15.60

Und ich möchte, dass das Ergebnis so aussieht, mit der höchsten positiven Änderung, um Faust zu rangieren. Ist das möglich?

Wechsel:

AAPLchg = .60 Rang 1

AMXchg = 0,10 Rang 2

Dies ist, was ich bisher:

def handle_data(context, data): 
price_history = data.history(context.security_list, "price", bar_count=2, frequency="1d") 
for s in context.security_list: 
    PrevAMX = price_history[sid(679)][-2] 
    CurrAMX = price_history[sid(679)][1] 
    PrevAAPL = price_history[sid(24)][-2] 
    CurrAAPL = price_history[sid(24)][1] 
    AMXchg = CurrAMX - PrevAMX 
    AAPLchg = CurrAAPL - PrevAAPL 
    if AMXchg < AAPLchg: 
     order(sid(679), 20) 
    if AAPLchg < AMXchg: 
     order(sid(24), 20) 


price_history = data.history(context.security_list, "price", 20, "1d") 
print price_history.mean() 
print AMXchg 
print AAPLchg 
print log.info(str(context.chg_list.sort('adv_rank', descending=True).head())) 
+0

Sicher gibt es, was hast du bisher versucht. Im Moment gibt es zu viele mögliche Antworten. – MooingRawr

+0

context.chg_list = [AMXchg, AAPLchg] price_history = data.history (context.security_list, "Preis", 20, "1D") Druck price_history.mean() Druck AMXchg Druck AAPLchg Druck log.info (str (context.chg_list.sort ('adv_rank', absteigend = True) .head())) –

+0

Bitte bearbeiten Sie Ihre Frage, um zu enthalten, was Sie mit der richtigen Formatierung versucht haben, nicht im Kommentar. – MooingRawr

Antwort

0

Sagen Sie die Preise haben in Wörterbüchern, dann könnten Sie das tun:

yesterday = { 
    'AAPL': 60.40, 
    'AMX': 15.50, 
} 

today = { 
    'AAPL': 61.00, 
    'AMX': 15.60, 
} 

change = {k: today[k] - yesterday[k] for k in today} 

sorted_stocks = sorted(change, key=change.get, reverse=True) 

for ss in sorted_stocks: 
    print('%s: %.2f' % (ss, change[ss])) 
+0

Ich fügte meinen Code oben hinzu, um zu zeigen, was ich bis jetzt habe. Hoffe ich bin auf dem richtigen Weg ... –

+0

Wofür stehen die K, ss und '% s:% .2f'? –