Как я могу взять значение из списка, а затем использовать его в базовом математическом уравнении? - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь получить значение с плавающей точкой из списка API.Я смог сделать так, чтобы при печати я выглядел как значение с плавающей точкой, но я не думаю, что это истинное число, потому что я не могу использовать его в своем математическом уравнении.Есть другие функции для получения trailTrigger и stopLoss, но я рад, что они работают.Я просто не могу заставить lastTradePrice быть плавающей точкой, которую я могу использовать.

    # Call My last trade from Coinbase
def coinBaseMyLastTrade():
    global lastTradePrice
    global lastTradeSize
    global lastTradeFee
    global lastTradeSide
    global lastTradeSettled
    myLastTrade = requests.get(api_url + 'fills?product_id=BTC-USDC&limit=1', auth=auth)
    lastTradeList = myLastTrade.json()
    lastTradePrice = [float(lastTradeList_item['price']) for lastTradeList_item in lastTradeList]
    lastTradeSize = [float(lastTradeList_item['size']) for lastTradeList_item in lastTradeList]
    lastTradeFee = [float(lastTradeList_item['fee']) for lastTradeList_item in lastTradeList]
    lastTradeSide = [str(lastTradeList_item['side']) for lastTradeList_item in lastTradeList]
    lastTradeSettled = [lastTradeList_item['settled'] for lastTradeList_item in lastTradeList]
    print 'My Last Trade Price =',lastTradePrice
    print 'My Last Trade Size =',lastTradeSize
    print 'My Last Trade Fee =',lastTradeFee
    print 'My Last Trade Side =',lastTradeSide
    print 'My Last Trade Settled =',lastTradeSettled
    return

# Work out the value to use to trigger the trail loop
def calculateTrailTriggerValue():
    global triggerValue
    global stoplossValue
    if "buy" in lastTradeSide:
        triggerValue = lastTradePrice * ((100+trailTrigger)/100)
        stoplossValue = lastTradePrice * ((100-stoploss)/100)
    elif "sell" in lastTradeSide:
        triggerValue = lastTradePrice * ((100-trailTrigger)/100)
        stoplossValue = lastTradePrice * ((100+stoploss)/100)
    print 'Trail Trigger $=',triggerValue
    print 'Stop Loss $=',stoplossValue
    return

Когда я запускаю код, я получаю ошибку

triggerValue = lastTradePrice * ((100-trailTrigger)/100)
TypeError: can't multiply sequence by non-int of type 'float'

Это странно, потому что я использовал этот код надругой список, и я смог использовать значения, но он не работает с кодом, мне нужна помощь с

# Call 24hour stats
def coinBasePastDayStats():
    dayStats = requests.get('https://api.pro.coinbase.com/products/BTC-USDC/stats')
    dayHigh = float(dayStats.json()['high'])
    dayLow = float(dayStats.json()['low'])
    dayChange = dayHigh - dayLow
    global dayChangePercent
    dayChangePercent = (dayChange / dayHigh) * 100
    print 'Last 24hr High =', dayHigh
    print 'Last 24hr Low =', dayLow
    print 'Last 24hr Change =', dayChange
    print 'Last 24hr Change Percent =', {:.2f}".format(dayChangePercent),'%'
    return

Если кто-то может помочь мне взять значение списка и использовать его в базовом математическом уравненииЯ был бы очень признателен.Приветствия

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Похоже, вы на правильном пути.Но, как говорили другие, вы выполняете операцию над самим списком, а python не поддерживает это.

Без использования numpy вы должны перебирать список и выполнять операции с каждым значением по очереди..

0 голосов
/ 20 декабря 2018

Если вы хотите умножить весь список таким образом, я бы предложил использовать числовые массивы

import numpy as np
arr = np.array([ i for i in range(10)])
arr *= 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...