原生js焦點(diǎn)圖代碼(js獲取焦點(diǎn)和失去焦點(diǎn))
接著上篇文章我們繼續(xù)學(xué)習(xí)。
所有操作的前提--和期貨公司前置機(jī)連接
exchange.IO("status")函數(shù)判斷與期貨公司前置機(jī)連接狀態(tài)
可能有的同學(xué)會(huì)問exchange是什么?
答:在 零基礎(chǔ)入門商品期貨程序化交易(1) 篇最后,我們動(dòng)手實(shí)踐了一下運(yùn)行了一個(gè)看上去挺復(fù)雜的策略,功能是在FMZ實(shí)盤頁面狀態(tài)欄上顯示一個(gè)表格,表格上為所有的合約代碼以及相關(guān)信息。我們實(shí)踐時(shí)在實(shí)盤頁面給實(shí)盤配置的 華泰期貨次席(看穿式監(jiān)管) 就對(duì)應(yīng)策略代碼中的exchange即交易所對(duì)象。
所以exchange是什么?
答:簡單理解exchange就是我們配置好的期貨公司賬戶!
那在實(shí)盤上可以配置多個(gè)這樣的代表期貨公司賬戶的交易所對(duì)象么?
答:當(dāng)然可以,不過這屬于略微高階一點(diǎn)的內(nèi)容,我們僅僅知道就可以,暫時(shí)用不到。
上篇我們學(xué)會(huì)了if(...) {...} else {...}語句的基本用法。接著我們就要學(xué)習(xí)重點(diǎn)了,前面講解了那么多基礎(chǔ)語法就是為了這里的一個(gè)功能。還記得我們說過的:所有操作的前提--和期貨公司前置機(jī)連接這句話么?在if語句的小括號(hào)中的判斷條件就是用來判斷和期貨公司前置機(jī)連接狀態(tài)的。這個(gè)if中的表達(dá)式條件由exchange.IO("status")函數(shù)調(diào)用返回。
exchange.IO("status")函數(shù)調(diào)用時(shí)返回true,表示與期貨公司前置機(jī)已經(jīng)連接(并且正常登錄)。
exchange.IO("status")函數(shù)調(diào)用時(shí)返回false,表示與期貨公司前置機(jī)未連接。原因可能是:
1、未到開盤時(shí)間,期貨公司前置機(jī)服務(wù)器并未開啟。
2、賬戶密碼配置錯(cuò)誤,這時(shí)有錯(cuò)誤日志輸出,參看前幾篇文章中提及的內(nèi)容。
3、認(rèn)證失敗,配置的期貨公司未看穿式認(rèn)證,這時(shí)也有錯(cuò)誤日志輸出。
4、網(wǎng)絡(luò)原因,IP地址錯(cuò)誤、端口錯(cuò)誤等,伴隨錯(cuò)誤日志輸出。
這里就很容易理解這個(gè)程序邏輯結(jié)構(gòu)了:
展開全文
整個(gè)商品期貨策略框架就是:
從策略代碼的主函數(shù),也就是main函數(shù)開始執(zhí)行。首先遇到了一個(gè)while循環(huán),并且循環(huán)的條件恒定為真值。所以這個(gè)循環(huán)會(huì)不停的執(zhí)行。每次執(zhí)行這個(gè)循環(huán)的循環(huán)體代碼時(shí),會(huì)使用if語句進(jìn)行判斷,通過exchange.IO("status")函數(shù)調(diào)用時(shí)返回的值來確定系統(tǒng)與期貨公司前置機(jī)服務(wù)器的連接以及登錄狀態(tài)(exchange.IO("status")是固定寫法可以死記硬背!)。如果exchange.IO("status")函數(shù)返回了true則執(zhí)行對(duì)應(yīng)的if代碼塊內(nèi)的代碼。如果返回了false則執(zhí)行對(duì)應(yīng)的else代碼塊內(nèi)的代碼。
exchange.SetContractType()設(shè)置合約函數(shù)
接著我們看看如果和期貨公司前置機(jī)服務(wù)器連接上之后要做點(diǎn)什么操作。當(dāng)exchange.IO("status")函數(shù)調(diào)用返回true時(shí)程序的執(zhí)行流程就進(jìn)入了if語句對(duì)應(yīng)的代碼塊,這時(shí)已經(jīng)確定了和期貨公司前置機(jī)通信連接正常。可以執(zhí)行獲取行情、下單等操作。但是請(qǐng)想一想我們做這些操作是不是需要有個(gè)目標(biāo),簡單說就是要對(duì)哪個(gè)合約做下單操作?獲取哪個(gè)合約的行情?
這里我們就要學(xué)習(xí)到一個(gè)新的FMZ的API函數(shù):SetContractType(),可以看到SetContractType()是exchange交易所對(duì)象的成員函數(shù)。簡單說就是SetContractType()是基于exchange調(diào)用的,作用是設(shè)置exchange這個(gè)交易所對(duì)象代表的期貨賬戶當(dāng)前所要操作的合約。
代碼中exchange.SetContractType("MA000")我們傳入了參數(shù)MA000。MA000是一個(gè)合約代碼,我們查詢 零基礎(chǔ)入門商品期貨程序化交易(1) 中實(shí)踐運(yùn)行的例子顯示的合約代碼表格里,可以看到MA代碼是指甲醇合約,那么000是指什么呢?000是FMZ平臺(tái)定義的指數(shù)合約代碼,組合起來MA000就是甲醇指數(shù)合約。類似的在FMZ上定義的虛擬合約還有主力連續(xù)合約(使用888表示),寫法是MA888表示這個(gè)合約是甲醇主力連續(xù)合約。
exchange.GetTicker()獲取行情數(shù)據(jù)
當(dāng)設(shè)置好當(dāng)前的合約,明確了要操作的合約,就可以獲取這個(gè)合約的行情數(shù)據(jù)了。我們學(xué)習(xí)的另一個(gè)函數(shù)GetTicker(),這個(gè)函數(shù)也是exchange交易所對(duì)象的成員函數(shù)。作用是獲取當(dāng)前的實(shí)時(shí)行情數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)為:
var ticker = exchange.GetTicker()這行代碼調(diào)用了GetTicker()函數(shù)獲取當(dāng)前實(shí)時(shí)行情賦值給聲明的ticker變量。
Log("MA000 ticker:", ticker)
Log函數(shù)作為使用最頻繁的函數(shù),使用起來也很簡單。其作用就是輸出傳入的參數(shù)在實(shí)盤的日志區(qū)域。
Log函數(shù)用于把一些認(rèn)為關(guān)鍵的信息在實(shí)盤日志中輸出,也常用于調(diào)試策略程序,觀察分析程序中的數(shù)據(jù)。這里我們執(zhí)行的Log("MA000 ticker:", ticker)函數(shù),其中傳入了2個(gè)參數(shù)。第一個(gè)參數(shù)是一個(gè)字符串MA000 ticker:,第二個(gè)參數(shù)是被賦值后的ticker變量。
運(yùn)行時(shí)輸出的日志如下圖:
LogStatus()和_D()函數(shù)
最后再學(xué)習(xí)這兩個(gè)FMZ的API函數(shù),本例就算是學(xué)習(xí)完了。LogStatus函數(shù)和Log函數(shù)類似,只不過Log函數(shù)是在實(shí)盤頁面的日志區(qū)域輸出。LogStatus函數(shù)是在實(shí)盤頁面的狀態(tài)欄上輸出,如圖:
至于LogStatus函數(shù)還有很多有趣的用法,目前可以暫時(shí)先了解到此。(有興趣的可以查看API文檔自行提前學(xué)習(xí):https://www.fmz.cn/api#logstatusmsg)
那么_D()函數(shù)是做什么用的呢?
_D()函數(shù)用途也十分簡單,如果不傳入?yún)?shù)就是返回一個(gè)當(dāng)前的時(shí)間字符串,通常是用來打印當(dāng)前時(shí)間方便觀察。
回測測試
至此,以上這段代碼從整體到細(xì)節(jié)我們都分析了一遍。前幾篇內(nèi)容中也提過,其實(shí)我們在FMZ上學(xué)習(xí)的時(shí)候可以充分利用FMZ平臺(tái)的回測系統(tǒng)學(xué)習(xí)策略設(shè)計(jì)、編程語言語法,甚至提升自己的DEBUG能力(排錯(cuò)能力)。以上代碼也可以在回測系統(tǒng)中運(yùn)行。
設(shè)置好之后,點(diǎn)擊開始回測按鈕策略就在回測系統(tǒng)中運(yùn)行起來了。
當(dāng)然,這個(gè)策略代碼例子僅僅是在判斷實(shí)盤程序和exchange對(duì)應(yīng)的期貨公司前置機(jī)連接之后,設(shè)置exchange對(duì)象當(dāng)前操作的合約為MA000即甲醇指數(shù)合約,然后打印實(shí)時(shí)行情數(shù)據(jù)。在未連接的狀態(tài)下,僅僅在狀態(tài)欄上輸出時(shí)間和未連接CTP !。當(dāng)然,這些和期貨公司連接之類的機(jī)制在回測系統(tǒng)中都是模擬的,為了讓策略的回測和實(shí)盤在設(shè)計(jì)上盡量保持一致。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。