您现在的位置: 比特财富网 >> 财经 >  >> 外匯
一個案例看懂外匯交易中的機器學習
外_匯_邦 WaiHuiBang.com

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

 

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

 

廢話不多說,直接上貨吧:

 

1. 首先,把需要處理的數據准備好,

 

前三根k線漲幅

當前k線漲幅

下一根大跌(0) /跌(1)/漲(2) /大漲(3)

10.36787091

14.01653763

1

0.56490792

-10.0514786

1

6.024039683

7.334618459

1

14.01653763

-4.792107118

1

-10.0514786

14.47722188

2

7.334618459

31.2593872

3

-4.792107118

11.13596167

0

 

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

 

一個案例看懂外匯交易中的機器學習.png

 

1. 用邏輯回歸模型預測漲跌

 

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

 

看看學習之後的曲線:

 

一個案例看懂外匯交易中的機器學習2.png

 

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

 

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

 

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

 

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

 

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

 

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

 

一個案例看懂外匯交易中的機器學習3.jpg

外_匯_邦 WaiHuiBang.com
  風險提示:比特財富網的各種信息資料僅供參考,不構成任何投資建議,不對任何交易提供任何擔保,亦不構成任何邀約,不作為任何法律文件,投資人據此進行投資交易而產生的後果請自行承擔,本網站不承擔任何責任,理財有風險,投資需謹慎。
比特財富網 版權所有 © www.emoneybtc.com