2016-10-17 4 views
0

Я пишу алго, чтобы оценивать изменения цены данного списка акций каждый день. Сейчас я работаю с двумя акциями: Apple и Amex. Я хотел бы ранжировать их от наибольшего изменения цены до минимального изменения цены, ежедневно.Оценка ежедневных изменений цен

Например, данные у меня есть выглядит следующим образом:

День 1:

AAPL = 60,40

AMX = 15,50

День 2:

AAPL = 61,00

AMX = 15.60

И я хотел бы, чтобы результат выглядел так, с самым высоким положительным изменением, которое должно быть оценено кулаком. Это возможно?

Изменение:

AAPLchg = 0,60 Уровень 1

AMXchg = 0,10 Уровень 2

Это то, что я до сих пор:

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

Конечно, есть, что вы пробовали до сих пор. Сейчас есть слишком много возможных ответов. – MooingRawr

+0

context.chg_list = [AMXchg, AAPLchg] price_history = data.history (context.security_list, "цена", 20, "1d") печати price_history.mean() печати AMXchg печати AAPLchg печати log.info (str (context.chg_list.sort ('adv_rank', descending = True) .head())) –

+0

Измените свой вопрос, чтобы включить то, что вы пробовали при правильном форматировании, а не в комментарии. – MooingRawr

ответ

0

Скажем, у вас цены в словарях, вы можете сделать это:

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

Я добавил свой код выше, чтобы показать, что у меня есть. Надеюсь, я на правильном пути ... –

+0

Что означают K, ss и% s:% .2f? –

Смежные вопросы