使用OANDA分析外匯數(shù)據(jù)

剛開始準(zhǔn)備在MT4中寫EA。MQL4語言有點像C,讀起來還相對簡單。

比較有意思的是通過OANDA下載的MT4客戶端,會給你提供兩個應(yīng)用程序,一個editor,一個交易窗口。

editor中有非常詳細(xì)的幫助文檔,強(qiáng)調(diào)一遍,非常詳細(xì)。而且還支持中文。

在editor里面編寫完成之后,調(diào)試的內(nèi)容都會反應(yīng)在你的交易窗口中,非常方便。

但是對于python,沒有像MT4那么完整的一套外匯交易框架,起碼現(xiàn)在我沒有找到。

我尋思著,反正學(xué)習(xí)MQL4和ORANDA?v20的接口都是學(xué),倒不如用一個現(xiàn)成的框架,因為調(diào)試起來真是太方便了,如果有兩三塊屏幕的話就更是錦上添花了。

之后逛了些外匯論壇,呵呵,MT4可以掛在專用的VPS執(zhí)行,但是要是布在自己搭的服務(wù)器上可能要費點事,甚至我根本不會完成這件事。

算了,畢竟python相對還算熟,在一陣選擇恐懼癥過后,堅決選擇了python,開始學(xué)習(xí)OANDA的接口v20

分析思路

上篇文章我通過分析外匯市場每天的交易量,得到了一些規(guī)律。通過這些規(guī)律,我們可以設(shè)計一個策略。

首先需要糾正一下。上篇文章在解釋這張圖的時候有些不準(zhǔn)確。我上網(wǎng)查了些資料

The foreign exchange ("forex" or "FX") currency market is not traded on a regulated exchange like stocks and commodities.

?Rather, the market consists of a network of financial institutions and retail trading brokers which each have their own individual hours of operation. Since most participants trade between the hours of 8:00 a.m. and 4:00 p.m. in their local time zone, these times are used as the market open and close times, respectively.

通過以上信息可知,大部分交易所的開放時間都在本地的8:00AM至4:00PM。所以對于那張趨勢圖,我簡單修改下。

圖中的5點,其實是紐約的本地時間3點,也就是說倫敦的8點,正是倫敦交易所開始營業(yè)的時間,圖中的10點,是紐約的8點,是紐約交易所營業(yè)的時間。

可以看到,在倫敦時間12點的時候,交易量已經(jīng)有上升的趨勢。在紐約開盤的時候,交易量達(dá)到了以小峰值。

之后的時間,之后英鎊/美元貨幣對仍然會活躍交易,其他的貨幣對都會出現(xiàn)下降趨勢。倫敦交易所在圖中的13點閉市。之后交易量開始上升,直至紐約時間的13點,達(dá)到全天的峰值。

但是沒有維持太長時間就迅速回落。之后在紐約時間19點的時候,東京開始交易,交易量達(dá)到峰值,balabala....

這次分析和之前的分析還是有些出入的。之前說交易量的最高峰在歐洲市場和北美市場重疊的部分,不過今天來看,情況不是這樣的。

在紐約時間13點的時候,交易量達(dá)到了全天的峰值,對此我又展開一次分析調(diào)查。也不知道分析得對不對,看到這里的朋友,覺得有錯誤請指正,謝謝。

我看了下Economic Calendar。發(fā)現(xiàn)美國發(fā)生經(jīng)濟(jì)活動的時間大多在紐約時間10點至16點,而歐洲大多發(fā)生在倫敦時間8點至13點。

看出來了吧?


理由有些牽強(qiáng),但感覺還是有些道理的。

ok,我們撇開基本面分析,回到結(jié)論來。不管分析如何,規(guī)律反正已經(jīng)反映在了圖上。

我們就利用這個規(guī)律來分析下交易數(shù)據(jù)。

數(shù)據(jù)采集

上篇文章已經(jīng)簡單介紹了下如何采集外匯的數(shù)據(jù)。不過用的是github上的樣本代碼,沒怎么仔細(xì)看。接下來我介紹下如何用v20接口來分析外匯數(shù)據(jù)。

我采集了在OANDA中所有以EUR為基礎(chǔ)貨幣的貨幣交易對的交易數(shù)據(jù)。

在采集交易數(shù)據(jù)之前,需要件創(chuàng)建一個session

from oandapyV20 import API

def client_session(token):

????return API(access_token=token)

為了以后方便分析,自己定義一個采集貨幣對的方法

import oandapyV20.endpoints.accounts as accounts

def get_symbol(client, account_id, select):

????r = accounts.AccountInstruments(accountID=account_id)

????ins = client.request(r)

????return [item['name'] for item in ins['instruments'] if item['name'][:3] == select]

這里需要說明一下的是,OANDA里面的數(shù)據(jù),返回類型都是json,什么json?

為了便于理解,我把它當(dāng)做就是一個大dict,dict里面的value是個list,list里面又裝了一些dict。你要是說你不懂dict,那我只能說你還是先看看python的基礎(chǔ)吧。

獲取完貨幣對之后,可以通過?InstrumentsCandlesFactory?類來獲取交易數(shù)據(jù),具體使用方法在

http://developer.oanda.com/rest-live-v20/introduction/

文檔寫得很有趣,感覺像是玩俄羅斯方塊,一直處于方塊被消除的狀態(tài),爽。

from oandapyV20.contrib.factories import InstrumentsCandlesFactory

def frame_factory(client, instr, params):

? ? ......

????for r in InstrumentsCandlesFactory(instrument=instr, params=params):

????????client.request(r)

????????rv = r.response.get('candles')

????????for candle in rv:

????????????tra_time = candle.get('time')[0:19]

????????????try:

? ? ? ? ? ? ? ? ......

????????????except Exception as e:

????????????????print(e, r)

????????????????pass

????return pd.DataFrame(structure, columns=['time', 'complete', 'open', 'high', 'low', 'close', 'volume'])

#?將數(shù)據(jù)存儲在hdf文件中

store = pd.HDFStore('./data/history.h5')

params = dict()

params['from'] = '2018-03-15T00:00:00Z'

params['to'] = '2018-03-16T00:00:00Z'

for item in ins:

? ? params['granularity'] = 'M1'

? ? instr = item

? ? store[item] = frame_factory(client, item, params)

store.close()

數(shù)據(jù)分析

數(shù)據(jù)已經(jīng)采集完成,接下來就是分析日內(nèi)交易數(shù)據(jù)。

這里倒沒有用到什么機(jī)器學(xué)習(xí)的知識,都是一些統(tǒng)計學(xué)的內(nèi)容。我計算了一些指標(biāo),還是通過可視化的手段將其展示出來,過濾掉一些小幣種:

根據(jù)上圖,我覺得,起碼均值回歸策略在外匯市場是行不通的,你根本阻擋不了它一通下跌的趨勢。我們不妨做以下策略(假設(shè))

如果在倫敦開盤至紐約開盤這段時間內(nèi),價格出現(xiàn)新高,就看多;出現(xiàn)新低,就看空。

在紐約閉市前進(jìn)行平倉。

為什么這么做?

成交量意味著趨勢的確定,如果開盤時歐洲人就不斷做空,拉低價格,隨著美洲人的蘇醒,交易量不斷擴(kuò)大,趨勢逐漸明確。

當(dāng)然,你不能確定當(dāng)天國際上又會出現(xiàn)什么幺蛾子新聞來影響匯率了。那就不在這篇粗鄙的文章討論范圍之內(nèi)了,那叫做NLP。

當(dāng)然,以上都只是假設(shè),具體方案我還不確定,畢竟接觸時間不長,還有好多東西要學(xué),日后研究下再繼續(xù)在文章里討論。

當(dāng)然,重要的是,得去實踐。真理都是實踐出來的。

下回繼續(xù)研究咯~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容