本文章隻說技術
本文章為原創文章,禁止轉載。該文章隻是技術交流,由此帶來的任何問題與文章作者無關,如有疑問聯系QQ3400262870。
思路:
MT4是由邁達克研發的一款交易軟體,該軟體可以對接很多種交易資料,也可以寫自動交易化程式EA。今天探讨的問題是如何實作二進制交易,改變軟體本身的交易規則。該軟體支援第三方插件,可以根據自己的需求建立一個DLL檔案。插件本身的規則其實是HOOK了原有的交易流程,通過HOOK相關函數來達到流程的修改。貼一張官方針對HOOK插件說明的截圖。
由此我們就能知道我們需要在伺服器端安裝一個插件,再寫一個用戶端來實作需求。
服務端:
伺服器端可以由兩種方式實作:
1.通過Socket來實作,建立一個SocketServer,用戶端通過Socket連接配接到伺服器進行資料傳輸,有弊端,如果是直連伺服器沒有問題,如果是通過DC就不行了。MT4預設是端口是443,如果建立SocketServer就需要在指定一個端口,自己建立立的端口是無法通過DC傳輸。當然自己可以寫一個DC,DC的作用其實就是資料中轉。保證主伺服器不受到攻擊。
2.通過官方提供的一個服務 MtSrvTelnet ,這個服務的作用是接收外部也可以說是第三方用戶端發來的資料指令。當MT4伺服器收到這個端口資料後就會中轉到 MtSrvTelnet 這個Api來處理,MT4本身将不再處理這個資料。是以我們在這個Api下實作我們的邏輯即可。
int APIENTRY MtSrvTelnet(
const ULONG ip, // IP address
char* buf, // Request/response
const int maxlen // Maximum size
){
//寫業務邏輯即可
}
用戶端:
1.對應服務端,寫一個SocketClient連接配接到伺服器即可。
2.寫一個Telnet連接配接伺服器進行資料傳輸即可。
結束語:
下一篇文章我們将探讨一下,如何将資料商提供的報價資料接入MT4伺服器。