我已授權

                                                                                  注冊

                                                                                  【Hcita視角】 一個案例看懂外匯交易中的機器學習

                                                                                  2018-01-17 13:34:26 和訊 

                                                                                    本文首發于微信公眾號:GOE提風。文章內容屬作者個人觀點,不代表和訊網立場。投資者據此操作,風險請自擔。

                                                                                    隨著“AlphaGo”、“無人駕駛”、“大數據處理”等名詞不斷出現在公眾的視野中的時候,人工智能和機器學習這些詞被不斷的提起。甚至很多人認為:2016年是算法時代的元年,2017年人工智能將會得到更加快速的發展。筆者也相信這是一個趨勢,因為基于算法的機器學習是人工智能的核心,運用恰當的話,的確非常強大,給各行各業帶來全新的面貌。

                                                                                    目前,在國內外量化交易領域已經有少數CTA策略或者外匯EA會涉及一部分機器學習。那么機器學習到底是如果運作的呢?今天就給大家演示下用簡單機器學習去做外匯行情預測。

                                                                                    1、首先,把需要處理的數據準備好

                                                                                  【Hcita視角】 一個案例看懂外匯交易中的機器學習

                                                                                    Mt4中用腳本處理好數據,再寫入csv里,作為我們的訓練數據。

                                                                                    數據量為1.8萬條,數據取樣為XAUUSD 1h周期。

                                                                                    2、導入數據,進行處理

                                                                                    import pandas as pd

                                                                                    import numpy as np

                                                                                    from sklearn.cross_validation import train_test_split

                                                                                    from sklearn.preprocessing import StandardScaler

                                                                                    #獲取經過mt4處理的數據集

                                                                                    data = pd.read_csv('XAUUSDtick.csv')

                                                                                    #數據x,y分類

                                                                                    X = data.iloc[:,[1,2]].values

                                                                                    y = data.iloc[:,[3]].values

                                                                                    y = y.ravel()

                                                                                    X_train,X_test,y_train,y_test = train_test_split(X , y , test_size = 0.35, random_state = 0)

                                                                                    sc = StandardScaler()

                                                                                    sc.fit(X_train)

                                                                                    X_train_std = sc.transform(X_train)

                                                                                    X_test_std = sc.transform(X_test)

                                                                                    3、用sklearn的感知機模型訓練數據

                                                                                    from sklearn.linear_model import Perceptron

                                                                                    #迭代次數1000次,學習率0.3

                                                                                    ppn = Perceptron(n_iter = 1000, eta0 = 0.3, random_state = 0)

                                                                                    ppn.fit(X_train_std,y_train)

                                                                                    y_pred = ppn.predict(X_test_std)

                                                                                    print 'Misclassified samples:%d' % (y_test != y_pred).sum()

                                                                                    print 'Accuracy:%.2f'% accuracy_score(y_test,y_pred)

                                                                                    好,我們運行代碼,得到結果:

                                                                                    Misclassified samples:2942

                                                                                    Accuracy:0.47

                                                                                    4、用邏輯回歸模型預測漲跌

                                                                                    from sklearn.linear_model import LogisticRegression

                                                                                    lr = LogisticRegression(C=1000.0 , random_state =0)

                                                                                    lr.fit(X_train_std,y_train)

                                                                                    y_pred = lr.predict(X_test_std)

                                                                                    print 'Misclassified samples:%d' % (y_test != y_pred).sum()

                                                                                    print 'Accuracy:%.2f'% accuracy_score(y_test,y_pred)

                                                                                    運行下:

                                                                                    Misclassified samples:2852

                                                                                    Accuracy:0.49

                                                                                    看看學習之后的曲線:

                                                                                  【Hcita視角】 一個案例看懂外匯交易中的機器學習

                                                                                    好了,以上就是一個簡單的機器學習案例。如果你能看懂的話,就會發現它不是那么的高深莫測,寫一個機器學習的程序也是比較簡單,但是想要得到一個比較好的結果,確是相當困難的。如果你還是不能看懂的話,那就可以通俗的理解為:機器學習就是一個黑匣子(Black Box),你扔一堆數據進去學習下,然后如果效果好的話,你就可以把實時的數據交給它,讓它給你一個預測,如果效果不好的話,那就只能繼續努力了。

                                                                                    我們從上面這個簡單的機器學習可以看到,這個模型是不具有預測性,也就是說效果是不好的。其實,拿機器學習來做金融市場時間序列的預測,結果基本上也是不行的。很多實證的研究也表明金融時間序列的收益都是隨機波動的,不具有自相關的特性。

                                                                                    那既然機器學習在預測未來行情上,不具備顯著性。那么為什么還要用它呢?

                                                                                    我們都知道,AlphaGO自稱一天能和自己下幾百萬盤棋,它是通過無數次的自我學習戰勝了人類棋手。其實,從統計學上來說,機器學習就是能夠不斷訓練,不斷的犯錯,不斷的學習,從而提高估計的精度和概率。那么對于外匯交易來講,機器學習可以很好的用在交易策略開發上,比如說在策略參數的選擇上,我們就可以嘗試用機器學習來幫助我們根據行情選擇較好的參數。

                                                                                    機器學習還在不斷的發展,各種已有的積累也容易被很快的更新和淘汰,想要了解這項技術,不斷的學習最前沿的相關知識和理論是必要的。至少能夠讓我們知道,外匯市場中很多宣傳自己的EA是使用人工智能來預測行情的基本上都是在做“銷售”。

                                                                                    還是那句話,機器學習沒有那么高深莫測,重點是用到合適的地方。

                                                                                  (責任編輯:何美鈴 HF117)

                                                                                     【免責聲明】本文僅代表合作供稿方觀點,不代表和訊網立場。投資者據此操作,風險請自擔。

                                                                                  看全文
                                                                                  寫評論已有條評論跟帖用戶自律公約
                                                                                  提 交還可輸入500

                                                                                  最新評論

                                                                                  查看剩下100條評論

                                                                                  熱門新聞排行榜

                                                                                  和訊熱銷金融證券產品

                                                                                  【免責聲明】本文僅代表作者本人觀點,與和訊網無關。和訊網站對文中陳述、觀點判斷保持中立,不對所包含內容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

                                                                                  狠狠噜天天噜日日噜