簡體   English   中英

使用 SQL select 語句確定 Python 計划時間事件中的滾動移動平均線

[英]Determining a rolling Moving Average inPython scheduled time event with SQL select statement

我正在使用 python 腳本從價格數據庫中每小時報告一次滾動的 24 小時均線。

下面我使用 sched.scheduler 進行初始運行,然后每小時(3600 秒)重新運行一次。 我的問題是,在 24 小時后,這開始將每日 MA 報告為“無”,這讓我認為正在評估的時間(當前時間或間隔時間)是在腳本啟動時計算的,而不是在每次預定事件觸發時動態重新計算. 我試過用 python 變量替換 SQL"now()" 變量,以在每次偶數觸發無濟於事時捕獲當前時間。

def get_daily_ma():
    global get_daily_ma
    cursor.execute("SELECT AVG(price) AS DailyAvg FROM price_log.price WHERE date_time >= (now() - INTERVAL 24 HOUR)")
    get_daily_ma = cursor.fetchone()
    for row in get_daily_ma:
        print('Daily MA:' + str(row))



import sched, time
s = sched.scheduler(time.time, time.sleep)
def do_something(sc):
    try:
        get_daily_ma()           
    except Exception as error:
        if error is not None:
            print('Caught this error: ' + repr(error))
        else:
            print('Connected successfully to database')
        connect()
    s.enter(3600, 1, do_something, (sc,))

s.enter(1, 1, do_something, (s,))
s.run()

當前示例輸出:

Daily MA:706.600501
Daily MA:705.500622
Daily MA:705.633035
Daily MA:705.072559
Daily MA:704.854059
Daily MA:704.022256
Daily MA:703.536127
Daily MA:703.123755
Daily MA:702.689111
Daily MA:702.492884
Daily MA:701.039226
Daily MA:700.661540
Daily MA:698.483458
Daily MA:697.863890
Daily MA:697.453988
Daily MA:697.432582
Daily MA:696.884967
Daily MA:696.159034
Daily MA:696.399219
Daily MA:695.599022
Daily MA:695.254403
Daily MA:695.671413
Daily MA:695.474621
Daily MA:697.200574
Daily MA:None
Daily MA:None
Daily MA:None
Daily MA:None
Daily MA:None
Daily MA:None

感謝任何建議!

正如戈登所建議的那樣,這不是 SQL 評估,而是唯一的其他選項,即光標抓取要評估的記錄。 我將它更新為大約 this,它通過在循環中打開和關閉游標解決了這個問題。

def get_daily_ma():
    cnx = mysql.connector.connect(...)
    cursor = cnx.cursor()
    cursor.execute("SELECT AVG(price) AS DailyAvg FROM price_log.price WHERE date_time >= (now() - INTERVAL 24 HOUR)")
    get_daily_ma = cursor.fetchone()
    cursor.close()
    cnx.close()
    for row in get_daily_ma:
        print('Daily MA:' + str(row))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM