在量化投資的過程中,我們經(jīng)常會(huì)遇到定期執(zhí)行某個(gè)任務(wù)的需求。 例如在每天股市收盤后,需要定期收集今天的個(gè)股數(shù)據(jù)。 例如幣圈中BTC在場(chǎng)外交易的最新價(jià)格,我希望每隔1小時(shí)能監(jiān)測(cè)并記錄一次。 再例如我希望程序每隔5分鐘能監(jiān)測(cè)下某個(gè)資產(chǎn)的價(jià)格,若達(dá)到了我的止盈條件就自動(dòng)賣出。 以上都是定期執(zhí)行任務(wù)的需求場(chǎng)景,如果是每次都手動(dòng)去運(yùn)行程序,不僅繁瑣,而且會(huì)經(jīng)常忘記。 本篇文章演示在交易時(shí)間,每隔1小時(shí)自動(dòng)獲取萬科這個(gè)股票的最新價(jià)格,并保存到指定文件中。希望通過這個(gè)案例,讓大家學(xué)會(huì)如何在windows下自動(dòng)定期運(yùn)行任務(wù)。 使用python獲取股票數(shù)據(jù) 首先我們需要想辦法獲取當(dāng)前時(shí)刻股票的價(jià)格,這個(gè)在我們的課程中有提過。 現(xiàn)在簡(jiǎn)單的分享其中部分代碼,具體見下方截圖: ![]() 抓取萬科股票當(dāng)前時(shí)間價(jià)格的代碼截圖 可以看到,只需要6行代碼就可以實(shí)現(xiàn)這個(gè)功能。我們將上面的代碼保存在“獲取股票當(dāng)前時(shí)刻數(shù)據(jù).py”文件中。運(yùn)行一下腳本,會(huì)發(fā)現(xiàn)在python腳本的文件夾中會(huì)出現(xiàn)一個(gè)“sz000002.txt”文件。輸出結(jié)果為下面的截圖。 ![]() “sz000002.txt” 文件內(nèi)容截圖 另外值得一提的是,這部分代碼都是可以分享給大家的。 現(xiàn)在我們已經(jīng)有辦法獲取最新的價(jià)格了,那么接下來要做的就是在每天股票交易時(shí)間里,每隔一小時(shí)自動(dòng)運(yùn)行一次該函數(shù)。 自己每天定期手工運(yùn)行程序肯定比較麻煩,接下來會(huì)介紹如何讓程序每天定時(shí)自動(dòng)運(yùn)行。 使用任務(wù)計(jì)劃程序完成自動(dòng)化 在Windows 10 系統(tǒng)中都有一個(gè)自帶的應(yīng)用程序叫做“任務(wù)計(jì)劃程序” (Task Scheduler)。通過這個(gè)程序就可以實(shí)現(xiàn)每日定時(shí)運(yùn)行特定程序的功能。 ![]() 任務(wù)計(jì)劃程序截圖 1 如何打開任務(wù)計(jì)劃程序 首先我們來看看如何打開任務(wù)計(jì)劃程序。 敲擊鍵盤的windows鍵,然后輸入“任務(wù)計(jì)劃程序”??梢钥吹匠霈F(xiàn)了下面第二張截圖的樣子。 ![]() 鍵盤上面的windows鍵 輸入“任務(wù)計(jì)劃程序”之后的屏幕截圖 這個(gè)時(shí)候我們?cè)偾脫艋剀囨I就可以打開這個(gè)程序。 ![]() 2 準(zhǔn)備bat腳本 由于任務(wù)計(jì)劃程序是沒有辦法直接運(yùn)行python腳本。所以我們還需要準(zhǔn)備一個(gè)bat腳本來運(yùn)行python腳本。 不要被腳本這種名字給嚇到。其實(shí)這個(gè)文件很簡(jiǎn)單。只需要一行代碼就可以實(shí)現(xiàn)我們想要的功能。 首先我們在桌面空白位置右鍵新建一個(gè)文本文檔。完成之后會(huì)發(fā)現(xiàn)文件夾中多出來一個(gè)“新建文本文檔.txt”。 ![]() 在文件夾中新建腳本文件的截圖 將文本文件命名為“獲取股票當(dāng)前時(shí)刻數(shù)據(jù).bat”?!?bat”之前的文字都可以根據(jù)要實(shí)現(xiàn)的功能來命名。 命名完成之后會(huì)跳出詢問是否更改文件擴(kuò)展名的警告。點(diǎn)擊“是”就可以完成重命名。 ![]() 修改文件名稱時(shí)會(huì)遇到的警告 然后用記事本打開“獲取股票當(dāng)前時(shí)刻數(shù)據(jù).bat”文件,并在里面輸入下面這行代碼: ![]() 自動(dòng)運(yùn)行python腳本的代碼截圖 這行代碼的格式是python(空格),后面加上要運(yùn)行的python腳本的地址。即'python 文件地址\文件名'。 在截圖的這個(gè)示例中文件地址為'C:\Users\xbx\Desktop\獲取分鐘k線數(shù)據(jù)'。文件名為'獲取股票當(dāng)前時(shí)刻數(shù)據(jù).py'。要注意里面的分隔符號(hào)都是“\” 而不是 “/”。 3 設(shè)置任務(wù)計(jì)劃程序 準(zhǔn)備好了bat文件就可以開始設(shè)置第一步中打開的任務(wù)計(jì)劃程序,來部署我們的bat文件。 ![]() 新建任務(wù) 然后輸入每日自動(dòng)運(yùn)行任務(wù)的名稱。如果該任務(wù)比較復(fù)雜,也可以在描述中輸入該任務(wù)的具體介紹。完成之后點(diǎn)擊下一步。 ![]() 設(shè)置任務(wù)名稱 這里是設(shè)置該任務(wù)的運(yùn)行頻率。因?yàn)槲覀兪敲咳斩家庐?dāng)日的股票數(shù)據(jù),所以這里設(shè)置為每天。然后點(diǎn)擊下一步。 ![]() 設(shè)置任務(wù)運(yùn)行頻率 這里是設(shè)置第一次運(yùn)行程序的時(shí)間及其任務(wù)之間的時(shí)間間隔,這里將其設(shè)置為上午10點(diǎn)30運(yùn)行,并且每隔一天運(yùn)行一次。完成之后點(diǎn)擊下一步。 ![]() 設(shè)置任務(wù)開始時(shí)間 這里是選擇操作類型,我們這里選擇默認(rèn)的啟動(dòng)程序,選擇好之后點(diǎn)擊下一步 ![]() 設(shè)置執(zhí)行任務(wù)類型 在這里就要用到我們第二步準(zhǔn)備的bat腳本。點(diǎn)擊瀏覽,然后找到我們要運(yùn)行的bat腳本文件,點(diǎn)擊確定。設(shè)置完成之后點(diǎn)擊下一步。然后再點(diǎn)擊完成。 經(jīng)過這幾個(gè)步驟就完成了任務(wù)計(jì)劃程序的設(shè)置。 ![]() 設(shè)置要執(zhí)行的任務(wù) 我們會(huì)發(fā)現(xiàn)任務(wù)計(jì)劃程序中有了我們?cè)O(shè)置的“每日10:30更新股票數(shù)據(jù)”的自動(dòng)運(yùn)行任務(wù)。如果想要測(cè)試一下有沒有正確設(shè)置,可以點(diǎn)擊右邊的運(yùn)行按鈕來試運(yùn)行一下。 ![]() 設(shè)置好自動(dòng)運(yùn)行任務(wù)的任務(wù)計(jì)劃程序截圖 可以看到點(diǎn)擊了運(yùn)行按鈕之后會(huì)跳出命令行。命令行運(yùn)行的就是我們的下載每日分鐘級(jí)股票數(shù)據(jù)的python腳本。下面就是運(yùn)行程序的截圖: ![]() 自動(dòng)運(yùn)行程序截圖 到這里我們就設(shè)置好了一個(gè)每日自動(dòng)運(yùn)行的程序。為了獲取每小時(shí)的萬科價(jià)格,我們只需要在再設(shè)置另外三個(gè)自動(dòng)運(yùn)行程序,分別將其運(yùn)行時(shí)間設(shè)置在每天的11:30,2:00,3:00。 總結(jié) 其實(shí)要獲取股票每小時(shí)的數(shù)據(jù)并不需要這么麻煩,有其它更簡(jiǎn)單的方法。本文只是用這個(gè)作為案例,來講解如何在windows10上自動(dòng)運(yùn)行腳本。大家可以根據(jù)具體的需求,來靈活的使用任務(wù)計(jì)劃程序。 另外有的朋友使用的是Mac OS和Linux,在這兩個(gè)上面自動(dòng)運(yùn)行程序其實(shí)更簡(jiǎn)單。如果有感興趣可以多多留言,之后可能會(huì)出一期Mac OS和Linux版本的文章。 |
|