Стохастическая функция застряла [Python]

Можете ли вы указать мне, что я делаю неправильно?

import time
import math
import numpy as np
import datetime
import pandas as pd

import ccxt
exchange = ccxt.kraken()
symbol = 'BTC/USD'
timeframe = '1h'


def get_candle(exchange,symbol,timeframe): # timeframe = 1m 5m 15m 30m 1h 2h... etc. 
    return exchange.fetch_ohlcv(symbol, timeframe)

ohlcv = get_candle(exchange,symbol,timeframe)
source = ohlcv


def sort_candle_highest(ohlcv,n,z):
    i = 0
    results = []
    while i < z:
        series = [x[2] for x in ohlcv]
        series = series[:len(series)-i]
        hh = highest(series,n)
        print(hh)
        results.append(hh)

        i += 1
    results.reverse()
    return results

def sort_candle_lowest(ohlcv,n,z):
    i = 0
    results = []
    while i < z:
        series = [x[3] for x in ohlcv]
        series = series[:len(series)-i]
        ll = lowest(series,n)
        print(ll)
        results.append(ll)

        i += 1
    results.reverse()
    return results

def sort_candle_lastclose(ohlcv,z): 
    i = 0
    results = []
    while i < z:
        series = [x[4] for x in ohlcv]
        series = series[:len(series)-i]
        results.append(series[-1])
    results.reverse()
    return results



def lowest(source, n):
    return np.amin(source[-n:])
def highest(source,n):
    return np.amax(source[-n:])

class indicators:

    print("noerroryet1")
    def stochastic_k(source,n,smoothK,smoothD): #for source here ohlcv (get_candle)
        print("noerroryet2")
        if smoothK > smoothD:
            ticksback = smoothK
        if smoothD > smoothK:
            ticksback = smoothD
        def stoch(source,n,ticksback):
            print("noerroryet3")
            i = 0
            close = sort_candle_lastclose(source,ticksback)
            hh = sort_candle_highest(source,n,ticksback)
            ll = sort_candle_lowest(source,n,ticksback)
            print("noerroryet3b")
            while i < ticksback:
                print("noerroryet3c")
                results.append(( 100 * (close[-ticksback+i-1]-ll[-ticksback+i-1]) ) / ( hh[-ticksback+i-1] - ll[-ticksback+i-1] ))
                i += 1
                print("noerroryet4")

            return results


        print(stoch(source,n,ticksback)+'lol')
    stochastic_k(source,15,1,5)

Поэтому я пытаюсь вычислить некоторые классные показатели, и функция застревает просто, не останавливаясь, никогда не печатая ничего. Я понятия не имею, где ошибка, хотя это определенно связано со стохастическими вычислениями, мне нужно получить список значений стох, чтобы вычислить SMA, я думаю, [-ticksback+i-1] должен дать мне правильное значение в списке, не уверен, хотя, потому что это не выплюнет ничего...

0 ответов

Другие вопросы по тегам