国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Python 機器學習之 SVM 預測買賣(標的物:比特幣)

andong777 / 1599人閱讀

摘要:入門簡單策略機器學習庫的使用什么是支持向量機。就是試圖把棍放在最佳位置,好讓在棍的兩邊有盡可能大的間隙。現在即使魔鬼放了更多的球,棍仍然是一個好的分界線。魔鬼看到大俠已經學會了一個,于是魔鬼給了大俠一個新的挑戰。

Python入門簡單策略 sklearn 機器學習庫的使用

什么是 SVM ?

支持向量機/support vector machine (SVM)。

當然首先看一下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?

好吧,故事是這樣子的:

在很久以前的情人節,大俠要去救他的愛人,但魔鬼和他玩了一個游戲。

魔鬼在桌子上似乎有規律放了兩種顏色的球,說:“你用一根棍分開它們?要求:盡量在放更多球之后,仍然適用。”

于是大俠這樣放,干的不錯?

然后魔鬼,又在桌上放了更多的球,似乎有一個球站錯了陣營。

SVM就是試圖把棍放在最佳位置,好讓在棍的兩邊有盡可能大的間隙。

現在即使魔鬼放了更多的球,棍仍然是一個好的分界線。

然后,在SVM 工具箱中有另一個更加重要的 trick。 魔鬼看到大俠已經學會了一個trick,于是魔鬼給了大俠一個新的挑戰。

現在,大俠沒有棍可以很好幫他分開兩種球了,現在怎么辦呢?當然像所有武俠片中一樣大俠桌子一拍,球飛到空中。然后,憑借大俠的輕功,大俠抓起一張紙,插到了兩種球的中間。

現在,從魔鬼的角度看這些球,這些球看起來像是被一條曲線分開了。

再之后,無聊的大人們,把這些球叫做 「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...

[以上例子引用自 網絡,侵刪]

一個 SVM 應用于 bitcoin trading 的 DEMO

回測系統自帶的庫有
實現語言 Python 2

numpy pandas TA-Lib scipy statsmodels sklearn cvxopt hmmlearn pykalman arch matplotlib

實盤需要在托管者所在機器安裝策略需要的庫

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("預測次數", n, "成功次數", success, "準確率:", "%.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("樣本不足, 無法預測 ...")
            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("預測當前Bar結束:", 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)
                

小樣本測試 預測對的概率是 三分之一, 是不是很有趣!(預測情況分三種 漲、跌、橫盤)
原文鏈接 : https://www.botvs.com/strateg...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41005.html

相關文章

  • php 比特教程大更新,包括交易和閃兌

    摘要:課程簡介創建一個機器人機器人接受比特幣并立即退還用戶創建比特幣錢包買賣實時兌換買賣在自由市場掛單買賣買賣任意在自由市場掛單買賣其他編程語言比特幣開發教程如下比特幣開發教程比特幣開發教程比特幣開發教程比特幣開發教程比特幣開發教程比特幣開發教程 showImg(https://segmentfault.com/img/bVboFQ6?w=1200&h=659); 課程簡介 PHP 創建一...

    avwu 評論0 收藏0
  • Ruby 比特開發教程匯總

    摘要:是一個免費的極速的端對端加密數字貨幣交易系統官方資源匯總課程簡介創建一個機器人比特幣開發教程機器人接受比特幣并立即退還用戶比特幣開發教程創建比特幣錢包買賣實時兌換買賣在自由市場掛單買賣買賣任意在自由市場掛單買賣其他編程語言匯總比特幣開發教程 showImg(https://segmentfault.com/img/remote/1460000019234638?w=1200&h=659...

    wangym 評論0 收藏0
  • php 比特教程大更新,包括交易和閃兌

    摘要:課程簡介創建一個機器人機器人接受比特幣并立即退還用戶創建比特幣錢包買賣實時兌換買賣在自由市場掛單買賣買賣任意在自由市場掛單買賣其他編程語言比特幣開發教程如下比特幣開發教程比特幣開發教程比特幣開發教程比特幣開發教程比特幣開發教程比特幣開發教程 showImg(https://segmentfault.com/img/bVboFQ6?w=1200&h=659); 課程簡介 PHP 創建一...

    andot 評論0 收藏0
  • 區塊鏈習之區塊鏈思想的誕生(一)

    摘要:區塊鏈最早出現在比特幣開元項目中。了不起的社會學實驗比特幣的誕生年化名中本聰的人發布比特幣白皮書,并在年公開了實現代碼比特幣的意義和價值比特幣首次真正從實踐意義上實現了安全可靠的去中心化數字貨幣機制。 區塊鏈最早出現在比特幣開元項目中。比特幣在誕生和發展過程中,借鑒了來自數字貨幣、密碼學、博弈論、分布式系統、控制論等多個領域的技術成果,作為核心支撐結構的區塊鏈技術大放異彩。 從實體貨幣...

    rozbo 評論0 收藏0
  • 區塊鏈習之以太坊(七)

    摘要:基于以太坊項目,以太坊團隊目前運營了一個公開的區塊鏈平臺以太坊網絡。主要特點以太坊區塊鏈底層也是一個類似比特幣網絡的網絡平臺,智能合約運行在網絡中的以太坊虛擬機里。以太坊采用交易作為執行操作的最小單位。 以太坊將比特幣針對數字交易的功能進一步進行了拓展,面向更為復雜和靈活的應用場景,支持了智能合約這一重要特性。 以太坊項目簡介 以太坊:項目最初的目標是打造以個智能合約的平臺,該平臺支持...

    xiongzenghui 評論0 收藏0

發表評論

0條評論

andong777

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<