A. 高頻交易和統計/機器學習套利模型,哪個技術含量高
高頻交易並非只拼速度就可以。 數據流上有很多東西需要處理,交易所發給你的一團亂麻似的玩意裡面有不少信息是需要自己提取的。速度水平相近的情況下,比拼的就是誰能更好地理解數據。
現階段大家對高頻的光速小子印象,主要是因為在速度方面有很多容易做的工作(比方說鑿個山洞讓通信線路變直來縮短距離省上幾個微秒,是不是比絞盡腦汁搞模型更簡單粗暴?),既然這塊大礦還沒采完,自然對其他智能化模型的需求不高。但是在可見的將來,當系統速度達到性能瓶頸的時候,肯定是會需要更多智能方面的研發,對此有興趣的朋友不用著急。
至於挖掘機技術哪家強,我的看法是理解業務始終是第一位的。我們需要清楚的知道自己在做什麼,技術性能等無非是為解決問題的手段,而非問題本身。而理解業務找到核心問題所在,往往才是最困難的部分。
B. 常見JAVA運行時異常有哪些
1,java.lang.NullPointerException
這個異常的解釋是 "程序遇上了空指針 ",簡單地說就是調用了未經初始化的對象或者是不存在的對象,這個錯誤經常出現在創建圖片,調用數組這些操作中,比如圖片未經初始化,或者圖片創建時的路徑錯誤等等。
2,java.lang.ClassNotFoundException
異常的解釋是"指定的類不存在",這里主要考慮一下類的名稱和路徑是否正確即可
3,java.lang.
這個異常的解釋是"數組下標越界",現在程序中大多都有對數組的操作,因此在調用數組的時候一定要認真檢查,看自己調用的下標是不是超出了數組的范圍,一般來說,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(即用變數表示下標)調用就經常出錯了.
4,java.lang.NoSuchMethodError
方法不存在錯誤。當應用試圖調用某類的某個方法,而該類的定義中沒有該方法的定義時拋出該錯誤。
5,java.lang.IndexOutOfBoundsException
索引越界異常。當訪問某個序列的索引值小於0或大於等於序列大小時,拋出該異常。
6,java.lang.NumberFormatException
數字格式異常。當試圖將一個String轉換為指定的數字類型,而該字元串確不滿足數字類型要求的格式時,拋出該異常。
7,java.sql.SQLException
Sql語句執行異常
8,java.io.IOException
輸入輸出異常
9,java.lang.IllegalArgumentException
方法參數錯誤
10java.lang.IllegalAccessException
無訪問許可權異常
(2)高頻交易通信擴展閱讀:
Java技術應用領域:
1、Android應用
許多的 Android應用都是Java程序員開發者開發。雖然 Android運用了不同的JVM以及不同的封裝方式,但是代碼還是用Java語言所編寫。相當一部分的手機中都支持JAVA游戲,這就使很多非編程人員都認識了JAVA。
2、在金融業應用的伺服器程序
Java在金融服務業的應用非常廣泛,很多第三方交易系統、銀行、金融機構都選擇用Java開發,因為相對而言,Java較安全 。大型跨國投資銀行用Java來編寫前台和後台的電子交易系統,結算和確認系統,數據處理項目以及其他項目。
3、網站
Java 在電子商務領域以及網站開發領域占據了一定的席位。開發人員可以運用許多不同的框架來創建web項目,SpringMVC,Struts2.0以及frameworks。即使是簡單的 servlet,jsp和以struts為基礎的網站在政府項目中也經常被用到。例如醫療救護、保險、教育、國防以及其他的不同部門網站都是以Java為基礎來開發的。
4、嵌入式領域
Java在嵌入式領域發展空間很大。在這個平台上,只需130KB就能夠使用Java技術(在智能卡或者感測器上)。
5、大數據技術
Hadoop以及其他大數據處理技術很多都是用Java,例如Apache的基於Java的HBase和Accumulo以及 ElasticSearchas。
6、高頻交易的空間
Java平台提高了這個平台的特性和即使編譯,他同時也能夠像 C++ 一樣傳遞數據。正是由於這個原因,Java成為的程序員編寫交易平台的語言,因為雖然性能不比C++,但開發人員可以避開安全性,可移植性和可維護性等問題。
7、科學應用
Java在科學應用中是很好選擇,包括自然語言處理。最主要的原因是因為Java比C++或者其他語言相對其安全性、便攜性、可維護性以及其他高級語言的並發性更好。
C. 學Java之後可以從事什麼工作
1、Android應用
許多的 Android應用都是Java程序員開發者開發。雖然 Android運用了不同的JVM以及不同的封裝方式,但是代碼還是用Java語言所編寫。相當一部分的手機中都支持JAVA游戲,這就使很多非編程人員都認識了JAVA。
2、在金融業應用的伺服器程序
Java在金融服務業的應用非常廣泛,很多第三方交易系統、銀行、金融機構都選擇用Java開發,因為相對而言,Java較安全[39] 。大型跨國投資銀行用Java來編寫前台和後台的電子交易系統,結算和確認系統,數據處理項目以及其他項目。大多數情況下,Java被用在伺服器端開發,但多數沒有任何前端,它們通常是從一個伺服器(上一級)接收數據,處理後發向另一個處理系統(下一級處理)。
3、網站
Java 在電子商務領域以及網站開發領域占據了一定的席位。開發人員可以運用許多不同的框架來創建web項目,SpringMVC,Struts2.0以及frameworks。即使是簡單的 servlet,jsp和以struts為基礎的網站在政府項目中也經常被用到。例如醫療救護、保險、教育、國防以及其他的不同部門網站都是以Java為基礎來開發的。
4、嵌入式領域
Java在嵌入式領域發展空間很大。在這個平台上,只需130KB就能夠使用Java技術(在智能卡或者感測器上)。
5、大數據技術
Hadoop以及其他大數據處理技術很多都是用Java,例如Apache的基於Java的HBase和Accumulo以及 ElasticSearchas。
6、高頻交易的空間
Java平台提高了這個平台的特性和即使編譯,他同時也能夠像 C++ 一樣傳遞數據。正是由於這個原因,Java成為的程序員編寫交易平台的語言,因為雖然性能不比C++,但開發人員可以避開安全性,可移植性和可維護性等問題。
7、科學應用
Java在科學應用中是很好選擇,包括自然語言處理。最主要的原因是因為Java比C++或者其他語言相對其安全性、便攜性、可維護性以及其他高級語言的並發性更好。
D. 高頻交易系統怎樣在多線程和埠通訊之間取捨
首先, 系統各業務功能的模塊化與主程序採用什麼樣的部署運行狀態(多線程或多進程)是不矛盾的,在各部分系統用同一種編程語言的前提下,兩者可以輕松地同時得到。這也是大家在答案中都提到過的解耦,但如果是多語言開發的系統,彼此之間還是需要數據通訊,或者是多個策略需要共用一個前端數據源,比如交易所只允許接一個連接,多個策略系統要用,可能沒辦法部署在一台機器上,這樣的情況下網路通訊都不可避免,可以升級通過內部網路和機器硬體來處理,換句話說,得具體問題具體分析和優化。
最後,一點建議,跟我們最近的一個R語言的策略開發SDK實例相關,R語言層面寫的策略只能是單線程的,而後端需要支持多個交易所的行情數據採集源、交易通道介面,必須是多線程,前後之間通過用C++開發R語言擴展包來銜接,中間就是採用的共享內存數據來通訊的,供借鑒參考。
E. 學習java以後可以做哪些事情呢
Java是一種廣泛使用的計算機編程語言,擁有跨平台、面向對象、泛型編程的特性,廣泛應用於企業級Web應用開發和移動應用開發。
對於很多新手來說,剛開始接觸Java會很迷惘,不知道Java可以做什麼。其實Java 可以做的東西太多了,手機游戲、中間件、軟體、網站,電腦游戲,以及現在流行的安卓手機app等,都是由java語言編寫的。由於Java擁有很高的安全性、平台移植性等,所以受到廣大程序員的喜愛。
一般編程語言都可以做軟體的,Java 也不例外,例如Eclipse,MyEclipse等知名Java開發工具。有關開發軟體組件,可以了解Java Swing編程 或者 awt 相關知識。
對於學生來說,最關心的是java能做什麼,市場上找什麼工作都跟java有關。現在很多大型網站都用jsp寫的,JSP 全名為 Java Server Pages。它是一種動態網頁技術,比如我們熟悉的163,一些政府網站都是採用JSP編寫的。所以學習Java的同學可以找編寫網站方面的工作,而且現在找這方面的崗位比較多。
除了這些Java還有很多用途,家裡的洗衣機、微波爐等家電有可能是java控制的,這是單片機的知識。找到自己喜歡的一個方向,專攻一個領域,才會做出成績。
F. 高頻交易軟硬體是怎麼架構的
首先,高頻交易不一定是套利演算法。事實上HFT做的最多的業務是做市(market making),可以是把商品從一個交易所倒賣到另一個交易所,也可以是在同一個交易所內部提供某種商品的流動性。這兩種方式的共同點都是讓人們可以特定地點買到本來買不到的商品,所以本身就是有價值的,收服務費就可以盈利。
二,延遲和流量是不同的概念。低延遲不等於高數據量,事實上大部分時間交易數據流量並不大,一個market一天最多也就幾個GB。但HFT系統需要在流量高峰時也能快速響應,所以更看重延遲。這也是HFT系統和互聯網系統最大的區別所在,HFT系統的精髓在於把單機的軟硬體系統的性能發揮到極致,而不是像互聯網那樣強調高負載和延展性,動輒用幾千台機器搭集群的做法在這里是不適用的。用互聯網系統的性能指標來認知HFT系統也是沒有意義的,像淘寶這樣的應用需要保證交易的正確和一致性,包括從終端用戶的瀏覽器到淘寶後台到銀行介面之間一系列復雜的事務性數據操作,這個場景和HFT直接對接交易所走高速線路收發交易指令有天壤之別,不能用同樣的思維去理解。
三,一個HFT業務包括從主機到交易所的整條通信線路,在這條線路上有很多段不同的延遲,是需要分開討論的。如果是做跨交易所的交易,首先需要考慮的是兩個交易所之間的網路延遲。當數據通過網路到達主機的時候,有一個最基本的tick-to-trade延遲,是指主機接收到數據到做出響應所需的時間。但這個東西的測量很有技術含量,根據不同的測量方式,它可能包括或不包括網卡及網路棧的處理時間。所以拿到一個HFT系統的延遲數據時,首先要搞清楚它指的是什麼,然後再來討論。
題主提到從一個直連計算節點的router的角度來觀測,這是一個理論上看起來可行但實際仍然很模糊的概念,因為一般router本身是不做存儲和處理的,一個router會收發大量不同的數據,要理解一個接收到的包是對之前發出去的某個包的「回應」,是需要相當的處理邏輯的,一般很難這樣測。比較合理的測試仍然是在主機端做記錄,測試從收到市場數據(tick)的TCP/UDP包到發送交易指令(trade)包的時差。目前(2014)的情況是,這個延遲如果平均控制在個位數字微秒級就是頂級了。因為網路傳輸才是延遲的大頭,如果網路上的平均延遲是1毫秒(1000微秒)以上,你的單機延遲是2微秒還是20微秒其實是沒有區別的。一般單機比網路低一個數量級就可以了,比如網路上需要100微秒(很現實的數字),單機控制在10微秒足以保證速度上沒有劣勢。至於公眾報道,有時是為搏人眼球,難免有誇大的成分,不必太當真。
G. 期貨中說的高頻交易 高頻對沖是怎麼樣的他們都沒有手續費嗎利用微小的利潤能賺錢怎麼做的
符合以下三點的,就可以叫做高頻交易(或高頻對沖):
1、交易指令完全由電腦發送,對市場數據的響應延時在微秒級(VBA退散)。
2、系統由專用的軟硬體組成,研發時需要大量計算機專家級的工作。
3、系統的硬體需要放在離交易所主機很近的位置上,所謂co-location。並且得到專門的准入許可證,交易指令直接發送至交易所(而不是通過券商中轉)。
高頻交易照樣要交手續費,每次交易收益雖低,但由於交易頻率高,收益也很可觀,但是實際上高頻交易不一定能賺錢。
1、高頻交易賺錢的的確有,賠錢的也大把存在。因為高頻交易系統對低延遲的敏感性,研發時需要投入大量的人力物力,要高薪聘專業的計算機專家,花錢買昂貴的硬體,租用專門的微波通信線路。但這一切也不能保證你得到一個預想中的「低延遲」系統。整個系統的設計和開發是一個非常復雜的工程。而且交易系統對於准確性和穩定性要求極高,不夠精密的話上線後會出現各種問題,根本無法使用。如此大規模的投入,很多時候換來的是一個殘次品系統,非常非常多的公司因為搞不定技術問題而賠錢關門。
2、這里有一個深遠的問題是,高頻交易是一個金融和計算機結合的產業,但同時精通這兩者的人才是非常稀少的。金融人士主導的項目會缺乏對技術的判斷能力,IT人士主導又會對需求把握不清。在對性能不敏感的行業這可能不是太大問題,可以按照傳統的甲方乙方方式解決,有問題慢慢扯皮。但在這個高競爭行業,沒有太多時間可以用來浪費在扯皮上。投產的系統可能慢上幾微秒就是廢物,而那時往往會發現基本的設計就有問題,根本無力回天。這種超高難度的研發壓力,其實才是高回報的來源。
注意:高頻交易並不適合普通投資者。
H. 學完java以後能做什麼工作
Java就業方向主要分為Java網站建設、Java企業級應用開發、Java游戲開發、Java大數據開發四個方向
1、Java網站建設
近幾年來,網站建設業務一直呈快速上升勢頭,行業市場越來越大。新技術的應用將促使企業網站建設更具魅力。Java編程語言也將使網站結構更緊密,訪問更流暢,更能適應新的要求。但是以目前的市場分析Java做網站成本太高,對硬體要求比較高,中小企業大都會選擇使用PHP語言進行開發,但是像大企業還是比較喜愛Java技術。
2、Java 企業級應用開發
目前Java在許多行業的企業信息應用方面的應用非常多,比如OA、郵箱、股票、金融、考試、物流、醫療、礦山等信息方面的系統。該方向和行業密切相關,所以,這是一個經驗型的發展方向。Java開發者在這方面的需求也非常大,待遇也相當不錯,工資水平與Java互聯網方向的差不多,很容易在一些大型企業就業。
3、Java游戲開發
Java本身就可以用來編寫游戲腳本,目前也有例如beanshellgroovy等腳本語言可以方便的無縫的和Java語言進行交互,這些都極大的方便了Java游戲編程。國內游戲專業人才的需求一直存在缺口。
4、Java大數據開發
大數據無疑是目前IT領域的最受關注的熱詞之一,雖然大數據框架的編寫支持很多開發語言,但是Java在大數據開發方面有很大的優勢,目前流行的大數據Hadoop框架、map-rece框架,很多部分都是用開源的Java語言編寫,因此Java在大數據方面有很大優勢!
I. 高頻交易系統怎樣在多線程和埠通訊之間取捨
果通訊方式一樣,比如都用共享內存,那麼多線程和多進程間的主要區別就只有程序崩潰時的隔離特性,多線程一崩潰就全完蛋,多進程只會影響一部分。
如果還考慮軟體工程意義,不同進程通常意味著不同的程序,甚至不同的項目,操作風險會降低,這是很多交易系統做兩個進程而不是一個進程的重要原因,風控進程和策略進程軟體工程意義上隔離,改策略不會增加亂報單的可能性。
這兩點考慮到了之後,進程數越少越好。不同邏輯流(線程)間的同步越少越好。低計算量下,最低延遲通常是單線程邏輯得到的。
J. Java學會之後工作方向都有哪些呢
1:Web開發
Web開發語言很多,Java是其中之一。Java在開發高訪問、高並發、集群化的大型網站方面有很大的優勢,例如人人網、去哪兒網、美團等。
2:Android開發
Android是全球最大的智能手機操作系統,根據Strategy Analytics最新研究報告顯示,全球智能手機出貨量在2016年第三季度達到3.75億台。Android操作系統獲得了創紀錄的88%全球市場份額,擠壓了蘋果iOS和其他平台。Android應用的主要開發語言就是Java。
Android 從2010年才開始走入大眾視野,雖然最近幾年發展非常快速,但人才積累卻沒有跟上,優秀的Android開發工程師仍然存在不小的缺口,這也是導致Android開發人員工資高,難招人的原因。
3:客戶端開發
Java客戶端開發主要面向政府、事業單位和大型企業,如醫療、學校、OA、郵箱、投票、金融、考試、物流、礦山等信息方面的系統。
但是客戶端開發往往不是這些企業的主要業務,而是為主要業務提供輔助,以便企業能夠更加高效的運營,因此必然不是企業的主要部門,雖然待遇可能和前面兩者差不多,但是前景卻不看好,企業沒有精心打磨這些產品並推向市場的動力,都是內部員工使用,能用就好。