摘要:入門(mén)簡(jiǎn)單策略機(jī)器學(xué)習(xí)庫(kù)的使用什么是支持向量機(jī)。就是試圖把棍放在最佳位置,好讓在棍的兩邊有盡可能大的間隙。現(xiàn)在即使魔鬼放了更多的球,棍仍然是一個(gè)好的分界線(xiàn)。魔鬼看到大俠已經(jīng)學(xué)會(huì)了一個(gè),于是魔鬼給了大俠一個(gè)新的挑戰(zhàn)。
Python入門(mén)簡(jiǎn)單策略 sklearn 機(jī)器學(xué)習(xí)庫(kù)的使用
什么是 SVM ?
支持向量機(jī)/support vector machine (SVM)。
當(dāng)然首先看一下wiki.
Support Vector Machines are learning models used for classification: which individuals in a population belong where? So… how do SVM and the mysterious “kernel” work?
好吧,故事是這樣子的:
在很久以前的情人節(jié),大俠要去救他的愛(ài)人,但魔鬼和他玩了一個(gè)游戲。
魔鬼在桌子上似乎有規(guī)律放了兩種顏色的球,說(shuō):“你用一根棍分開(kāi)它們?要求:盡量在放更多球之后,仍然適用。”
于是大俠這樣放,干的不錯(cuò)?
然后魔鬼,又在桌上放了更多的球,似乎有一個(gè)球站錯(cuò)了陣營(yíng)。
SVM就是試圖把棍放在最佳位置,好讓在棍的兩邊有盡可能大的間隙。
現(xiàn)在即使魔鬼放了更多的球,棍仍然是一個(gè)好的分界線(xiàn)。
然后,在SVM 工具箱中有另一個(gè)更加重要的 trick。 魔鬼看到大俠已經(jīng)學(xué)會(huì)了一個(gè)trick,于是魔鬼給了大俠一個(gè)新的挑戰(zhàn)。
現(xiàn)在,大俠沒(méi)有棍可以很好幫他分開(kāi)兩種球了,現(xiàn)在怎么辦呢?當(dāng)然像所有武俠片中一樣大俠桌子一拍,球飛到空中。然后,憑借大俠的輕功,大俠抓起一張紙,插到了兩種球的中間。
現(xiàn)在,從魔鬼的角度看這些球,這些球看起來(lái)像是被一條曲線(xiàn)分開(kāi)了。
再之后,無(wú)聊的大人們,把這些球叫做 「data」,把棍子 叫做 「classifier」, 最大間隙trick 叫做「optimization」, 拍桌子叫做「kernelling」, 那張紙叫做「hyperplane」。
參考:
Please explain Support Vector Machines (SVM) like I am a 5 year old. : MachineLearning
Support Vector Machines explained well
https://www.youtube.com/watch...
[以上例子引用自 網(wǎng)絡(luò),侵刪]
一個(gè) SVM 應(yīng)用于 bitcoin trading 的 DEMO
回測(cè)系統(tǒng)自帶的庫(kù)有
實(shí)現(xiàn)語(yǔ)言 Python 2
numpy pandas TA-Lib scipy statsmodels sklearn cvxopt hmmlearn pykalman arch matplotlib
實(shí)盤(pán)需要在托管者所在機(jī)器安裝策略需要的庫(kù)
OK , Talk is cheap, Show code to you!
from sklearn import svm import numpy as np def main(): preTime = 0 n = 0 success = 0 predict = None pTime = None marketPosition = 0 initAccount = exchange.GetAccount() Log("Running...") while True: r = exchange.GetRecords() if len(r) < 60: continue bar = r[len(r)-1] if bar.Time > preTime: preTime = bar.Time if pTime is not None and r[len(r)-2].Time == pTime: diff = r[len(r)-2].Close - r[len(r)-3].Close if diff > SpreadVal: success += 1 if predict == 0 else 0 elif diff < -SpreadVal: success += 1 if predict == 1 else 0 else: success += 1 if predict == 2 else 0 pTime = None LogStatus("預(yù)測(cè)次數(shù)", n, "成功次數(shù)", success, "準(zhǔn)確率:", "%.3f %%" % round(float(success) * 100 / n, 2)) else: Sleep(1000) continue inputs_X, output_Y = [], [] sets = [None, None, None] for i in xrange(1, len(r)-2, 1): inputs_X.append([r[i].Open, r[i].Close]) Y = 0 diff = r[i+1].Close - r[i].Close if diff > SpreadVal: Y = 0 sets[0] = True elif diff < -SpreadVal: Y = 1 sets[1] = True else: Y = 2 sets[2] = True output_Y.append(Y) if None in sets: Log("樣本不足, 無(wú)法預(yù)測(cè) ...") continue n += 1 clf = svm.LinearSVC() clf.fit(inputs_X, output_Y) predict = clf.predict(np.array([bar.Open, bar.Close]).reshape((1, -1))) pTime = bar.Time Log("預(yù)測(cè)當(dāng)前Bar結(jié)束:", bar.Time, ["漲", "跌", "橫"][predict]) if marketPosition == 0: if predict == 0: exchange.Buy(initAccount.Balance/2) marketPosition = 1 elif predict == 1: exchange.Sell(initAccount.Stocks/2) marketPosition = -1 else: nowAccount = exchange.GetAccount() if marketPosition > 0 and predict != 0: exchange.Sell(nowAccount.Stocks - initAccount.Stocks) nowAccount = exchange.GetAccount() marketPosition = 0 elif marketPosition < 0 and predict != 1: while True: dif = initAccount.Stocks - nowAccount.Stocks if dif < 0.01: break ticker = exchange.GetTicker() exchange.Buy(ticker.Sell + (ticker.Sell-ticker.Buy)*2, dif) while True: Sleep(1000) orders = exchange.GetOrders() for order in orders: exchange.CancelOrder(order.Id) if len(orders) == 0: break nowAccount = exchange.GetAccount() marketPosition = 0 if marketPosition == 0: LogProfit(_N(nowAccount.Balance - initAccount.Balance, 4), nowAccount)
小樣本測(cè)試 預(yù)測(cè)對(duì)的概率是 三分之一, 是不是很有趣!(預(yù)測(cè)情況分三種 漲、跌、橫盤(pán))
原文鏈接 : https://www.botvs.com/strateg...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/41005.html
摘要:課程簡(jiǎn)介創(chuàng)建一個(gè)機(jī)器人機(jī)器人接受比特幣并立即退還用戶(hù)創(chuàng)建比特幣錢(qián)包買(mǎi)賣(mài)實(shí)時(shí)兌換買(mǎi)賣(mài)在自由市場(chǎng)掛單買(mǎi)賣(mài)買(mǎi)賣(mài)任意在自由市場(chǎng)掛單買(mǎi)賣(mài)其他編程語(yǔ)言比特幣開(kāi)發(fā)教程如下比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程 showImg(https://segmentfault.com/img/bVboFQ6?w=1200&h=659); 課程簡(jiǎn)介 PHP 創(chuàng)建一...
摘要:是一個(gè)免費(fèi)的極速的端對(duì)端加密數(shù)字貨幣交易系統(tǒng)官方資源匯總課程簡(jiǎn)介創(chuàng)建一個(gè)機(jī)器人比特幣開(kāi)發(fā)教程機(jī)器人接受比特幣并立即退還用戶(hù)比特幣開(kāi)發(fā)教程創(chuàng)建比特幣錢(qián)包買(mǎi)賣(mài)實(shí)時(shí)兌換買(mǎi)賣(mài)在自由市場(chǎng)掛單買(mǎi)賣(mài)買(mǎi)賣(mài)任意在自由市場(chǎng)掛單買(mǎi)賣(mài)其他編程語(yǔ)言匯總比特幣開(kāi)發(fā)教程 showImg(https://segmentfault.com/img/remote/1460000019234638?w=1200&h=659...
摘要:課程簡(jiǎn)介創(chuàng)建一個(gè)機(jī)器人機(jī)器人接受比特幣并立即退還用戶(hù)創(chuàng)建比特幣錢(qián)包買(mǎi)賣(mài)實(shí)時(shí)兌換買(mǎi)賣(mài)在自由市場(chǎng)掛單買(mǎi)賣(mài)買(mǎi)賣(mài)任意在自由市場(chǎng)掛單買(mǎi)賣(mài)其他編程語(yǔ)言比特幣開(kāi)發(fā)教程如下比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程比特幣開(kāi)發(fā)教程 showImg(https://segmentfault.com/img/bVboFQ6?w=1200&h=659); 課程簡(jiǎn)介 PHP 創(chuàng)建一...
摘要:區(qū)塊鏈最早出現(xiàn)在比特幣開(kāi)元項(xiàng)目中。了不起的社會(huì)學(xué)實(shí)驗(yàn)比特幣的誕生年化名中本聰?shù)娜税l(fā)布比特幣白皮書(shū),并在年公開(kāi)了實(shí)現(xiàn)代碼比特幣的意義和價(jià)值比特幣首次真正從實(shí)踐意義上實(shí)現(xiàn)了安全可靠的去中心化數(shù)字貨幣機(jī)制。 區(qū)塊鏈最早出現(xiàn)在比特幣開(kāi)元項(xiàng)目中。比特幣在誕生和發(fā)展過(guò)程中,借鑒了來(lái)自數(shù)字貨幣、密碼學(xué)、博弈論、分布式系統(tǒng)、控制論等多個(gè)領(lǐng)域的技術(shù)成果,作為核心支撐結(jié)構(gòu)的區(qū)塊鏈技術(shù)大放異彩。 從實(shí)體貨幣...
摘要:基于以太坊項(xiàng)目,以太坊團(tuán)隊(duì)目前運(yùn)營(yíng)了一個(gè)公開(kāi)的區(qū)塊鏈平臺(tái)以太坊網(wǎng)絡(luò)。主要特點(diǎn)以太坊區(qū)塊鏈底層也是一個(gè)類(lèi)似比特幣網(wǎng)絡(luò)的網(wǎng)絡(luò)平臺(tái),智能合約運(yùn)行在網(wǎng)絡(luò)中的以太坊虛擬機(jī)里。以太坊采用交易作為執(zhí)行操作的最小單位。 以太坊將比特幣針對(duì)數(shù)字交易的功能進(jìn)一步進(jìn)行了拓展,面向更為復(fù)雜和靈活的應(yīng)用場(chǎng)景,支持了智能合約這一重要特性。 以太坊項(xiàng)目簡(jiǎn)介 以太坊:項(xiàng)目最初的目標(biāo)是打造以個(gè)智能合約的平臺(tái),該平臺(tái)支持...
閱讀 1211·2021-11-23 09:51
閱讀 1990·2021-10-08 10:05
閱讀 2348·2019-08-30 15:56
閱讀 1908·2019-08-30 15:55
閱讀 2643·2019-08-30 15:55
閱讀 2497·2019-08-30 13:53
閱讀 3508·2019-08-30 12:52
閱讀 1256·2019-08-29 10:57