精華 OpenEntry和PosTrade系列關(guān)鍵字 [MC]
-
MC用戶求助:
OpenEntry和PosTrade系列關(guān)鍵字
?(原創(chuàng):Alex)
<!-- [if !supportLists]-->一、<!--[endif]-->圖表部位
圖表部位就是標(biāo)記在圖表上的倉位信息,包括進(jìn)出場時(shí)間、日期、bar編號(hào)、名稱、價(jià)格、方向、手?jǐn)?shù)、盈虧、次數(shù)(進(jìn)場筆數(shù))、委托單類別等倉位信息。而這些倉位信息都需要通過關(guān)鍵字來獲取,以便于策略的調(diào)用,下面將系統(tǒng)的闡述圖表部位關(guān)鍵字的用法及區(qū)別。
<!-- [if !supportLists]-->1、? <!--[endif]-->關(guān)鍵字marketposition
關(guān)鍵字marketposition用于返回圖表部位的狀態(tài),而圖表部位只有三種狀態(tài),分別是-1、0、1(marketposition只能返回這三個(gè)數(shù)字),這三個(gè)數(shù)字分別表示空頭持倉、無持倉、多頭持倉。
在公式編譯器中,關(guān)鍵字marketposition的用法敘述如下:
MarketPosition(PosBack)
參數(shù)說明:PosBack—數(shù)值表達(dá)式,用來指定部位:
<!-- [if !supportLists]-->0—? <!--[endif]-->未平倉部位;
<!-- [if !supportLists]-->1—? <!--[endif]-->上一個(gè)平倉部位(最后一個(gè)平倉部位);
<!-- [if !supportLists]-->2—? <!--[endif]-->上第二個(gè)平倉部位,依次類推。
若PosBack未指定,則預(yù)設(shè)為未平倉部位。
公式編譯器中使用PosBack(用來指定部位)的參數(shù)還有很多關(guān)鍵字,意思都是一致的,詳細(xì)的見下面的解釋。
<!-- [if !supportLists]-->2、? <!--[endif]-->未平倉部位和平倉部位
隨著進(jìn)場與出場的交替進(jìn)行,圖表部位的狀態(tài)也跟著從一個(gè)狀態(tài)切換到另一個(gè)狀態(tài),而這種圖表部位狀態(tài)的改變會(huì)形成平倉部位和未平倉部位,總共可以分為5種情況:
<!-- [if !supportLists]-->?? <!--[endif]-->圖表部位的狀態(tài)從空頭持倉或者無持倉狀態(tài)轉(zhuǎn)換成多頭持倉狀態(tài),再從多頭持倉狀態(tài)轉(zhuǎn)換成空頭持倉或者無持倉狀態(tài),這一階段我們稱為多頭平倉部位(這一階段中允許有加減倉操作);
<!-- [if !supportLists]-->?? <!--[endif]-->圖表部位的狀態(tài)從多頭持倉或者無持倉狀態(tài)轉(zhuǎn)換成空頭持倉狀態(tài),再從空頭持倉狀態(tài)轉(zhuǎn)換成空頭持倉或者無持倉狀態(tài),這一階段我們稱為空頭平倉部位(這一階段中允許有加減倉操作);
<!-- [if !supportLists]-->?? <!--[endif]-->圖表部位的狀態(tài)從空頭持倉或者無持倉狀態(tài)轉(zhuǎn)換成多頭持倉狀態(tài),但是還沒有轉(zhuǎn)換成其它狀態(tài),這一階段我們稱為未平倉多頭部位(這一階段中允許有加減倉操作);
<!-- [if !supportLists]-->?? <!--[endif]-->圖表部位的狀態(tài)從多頭持倉或者無持倉狀態(tài)轉(zhuǎn)換成空頭持倉狀態(tài),但是還沒有轉(zhuǎn)換成其它狀態(tài),這一階段我們稱為未平倉空頭部位(這一階段中允許有加減倉操作);
<!-- [if !supportLists]-->?? <!--[endif]-->圖表部位的狀態(tài)從多頭持倉或者空頭持倉轉(zhuǎn)換成無持倉,但是還沒有轉(zhuǎn)換成其它狀態(tài),這一階段我們稱為無持倉狀態(tài)。
多頭平倉部位和空頭平倉部位統(tǒng)稱為平倉部位,未平倉多頭部位和未平倉空頭部位統(tǒng)稱為未平倉部位。因?yàn)槲雌絺}部位只有一個(gè),而且隨著未平倉部位轉(zhuǎn)換成平倉部位,平倉部位會(huì)越來越多,而且有時(shí)候策略也需要調(diào)用平倉部位的倉位信息,這時(shí)我們有必要將平倉部位加以區(qū)分,稱最近的平倉部位為前一個(gè)平倉部位,第二近的平倉部位為前第二個(gè)平倉部位,依此類推,這里的遠(yuǎn)近是以當(dāng)根bar為基準(zhǔn)的。
圖1. 未平倉部位和平倉部位
如圖1所示,為方便舉例,這里假設(shè)信號(hào)基于圖表上標(biāo)記的“當(dāng)根bar”位置進(jìn)行計(jì)算,若信號(hào)在“當(dāng)根bar”的位置執(zhí)行marketposition、marketposition(1)、marketposition(2)關(guān)鍵字,按照我們上面所敘述的理論,它們分別返回1、-1、1,也就是圖表當(dāng)前的狀態(tài)是多頭持倉,前一個(gè)平倉部位的圖表部位狀態(tài)是空頭持倉,前第二個(gè)平倉部位的圖表部位狀態(tài)是多頭持倉,當(dāng)然我們還可以使用其它圖表部位關(guān)鍵字取相關(guān)的信息,以下面將要介紹的圖表部位關(guān)鍵字。
<!-- [if !supportLists]-->一、<!--[endif]-->OpenEntry系列關(guān)鍵字
OpenEntry系列關(guān)鍵字不能用于獲取平倉部位的倉位信息,只能獲取當(dāng)前未平倉部位的倉位信息;并且獲取的未平倉部位的倉位信息具有實(shí)時(shí)性,這也是它最大的特點(diǎn),體現(xiàn)在它是如何處理當(dāng)前未平倉部位中的進(jìn)場次序的;說的有點(diǎn)抽象,那么在繼續(xù)閱讀下面的介紹之前,先思考一下如下問題:
<!-- [if !supportLists]-->?? <!--[endif]-->在2018-1-11號(hào)9:45買入10手的螺紋(進(jìn)場名稱是”name”),接著在當(dāng)天下午14:00買入7手的螺紋(進(jìn)場名稱是”style”),那么請(qǐng)問OpenEntry系列關(guān)鍵字認(rèn)為的第一筆進(jìn)場的時(shí)間和第二筆進(jìn)場的時(shí)間分別是?
<!-- [if !supportLists]-->?? <!--[endif]-->接著上面的情境,在2018-1-12號(hào)10:00將進(jìn)場”name”10手平倉,那么請(qǐng)問OpenEntry系列關(guān)鍵字認(rèn)為的第一筆進(jìn)場的時(shí)間和第二筆進(jìn)場的時(shí)間分別是?
表1. OpenEntry系列關(guān)鍵字
OpenEntry關(guān)鍵字
用法簡介
OpenEntriesCount
返回目前部位的進(jìn)場筆數(shù)
OpenEntryTime(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的時(shí)間
OpenEntryPrice(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的委托價(jià)格
OpenEntryContracts(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的委托手?jǐn)?shù)
OpenEntryDate(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的委托日期
OpenEntryComission(N)
返回當(dāng)前未平倉部位的第N+1筆進(jìn)場手續(xù)費(fèi)金額
OpenEntryProfit(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的委托盈利
OpenEntryProfitPerContract(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的每手盈利
OpenEntryMaxProfit(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的最大盈利
OpenEntryMaxProfitPerContract(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的最大每手盈利
OpenEntryMinProfit(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的最小盈利
OpenEntryMinProfitPerContract(N)
返回當(dāng)前未平倉部位中第N+1筆進(jìn)場的最小每手盈利
OpenEntry系列關(guān)鍵字的使用需要有一個(gè)參數(shù)N(從0開始計(jì)算),這個(gè)N表示當(dāng)前未平倉部位第N+1筆進(jìn)場,而“第N+1筆進(jìn)場”是如何定義的,這個(gè)會(huì)涉及到OpenEntry系列關(guān)鍵字如何認(rèn)為當(dāng)前未平倉部位中的進(jìn)場次序;一句話就是,OpenEntry系列關(guān)鍵字將當(dāng)前未平倉部位中所有未平倉的進(jìn)場按照進(jìn)場的時(shí)間先后進(jìn)行排序,從0開始依次加1,當(dāng)策略運(yùn)行過程中,之前未平倉的進(jìn)場被平倉了,那么這個(gè)進(jìn)場次序會(huì)重新按照“將當(dāng)前未平倉部位中所有未平倉的進(jìn)場按照進(jìn)場的時(shí)間先后進(jìn)行排序,從0開始依次加1”進(jìn)行排序;例如,2018-1-11號(hào),當(dāng)天依次分別在9:35、9:40、9:45、9:50進(jìn)場,進(jìn)場名稱分別為”A”、“B”、“C”、“D”,此時(shí)它們都未被平倉(OpenEntriesCount返回4),進(jìn)場次序分別為0、1、2、3,下午13:45對(duì)進(jìn)場名稱”B”平倉,平倉之后當(dāng)前未平倉部位的進(jìn)場”A”、“C”、“D”的次序分別是0、1、2(OpenEntriesCount返回3),下午14:00對(duì)進(jìn)場名稱”C”減倉,減倉之后的次序并不影響,當(dāng)前未平倉的進(jìn)場”A”、“C”、“D”的次序依然分別是0、1、2(OpenEntriesCount返回3)。
在重新排序的過程中,并不會(huì)改變進(jìn)場的時(shí)間、日期、手?jǐn)?shù)、盈利等信息,改變的只是OpenEntry系列關(guān)鍵字識(shí)別的進(jìn)場次序,方便調(diào)用。
<!-- [if !supportLists]-->1、? <!--[endif]-->關(guān)鍵字小結(jié)
OpenEntriesCount這個(gè)關(guān)鍵字不需要參數(shù),返回的是當(dāng)前未平倉部位的進(jìn)場筆數(shù),具有實(shí)時(shí)性,當(dāng)某筆進(jìn)場被完全平倉之后,當(dāng)前未平倉部位的進(jìn)場筆數(shù)就會(huì)減少1,反之,當(dāng)有新的進(jìn)場時(shí),該關(guān)鍵字就會(huì)增加1
OpenEntryTime(N)、OpenEntryPrice(N)、OpenEntryContracts(N)、OpenEntryDate(N)、OpenEntryComission(N)這些關(guān)鍵字上面表格已經(jīng)作了簡單的介紹,下面通過一個(gè)情境案例來闡述一下,這樣更直觀:
<!-- [if !supportLists]-->?? <!--[endif]-->2018-01-29日10:05分買入10手,價(jià)格為3712,螺紋合約,手續(xù)費(fèi)是每手3元,此時(shí)OpenEntryTime(0)、OpenEntryPrice(0)、OpenEntryContracts(0)、OpenEntryDate(0)、OpenEntryComission(0)分別返回1005、3712、10、1180129、30
<!-- [if !supportLists]-->?? <!--[endif]-->接著上面的,在2018-01-29日11:05分買入6手,價(jià)格為3730,此時(shí)OpenEntryTime(1)、OpenEntryPrice(1)、OpenEntryContracts(1)、OpenEntryDate(1)、OpenEntryComission(1)分別返回1105、3730、6、1180129、18
<!-- [if !supportLists]-->?? <!--[endif]-->接著上面的,在2018-1-29日13:55分將第一筆進(jìn)場全部平倉,此時(shí)OpenEntryTime(0)、OpenEntryPrice(0)、OpenEntryContracts(0)、OpenEntryDate(0)、OpenEntryComission(0)分別返回1105、3730、6、1180129、18
<!-- [if !supportLists]-->?? <!--[endif]-->接著上面的,在2018-01-29日14:25分將第一筆進(jìn)場平倉3手,此時(shí)OpenEntryTime(0)、OpenEntryPrice(0)、OpenEntryContracts(0)、OpenEntryDate(0)、OpenEntryComission(0)分別返回1105、3730、3、1180129、9
OpenEntryProfit(N)、OpenEntryProfitPerContract(N)、OpenEntryMaxProfit(N)、OpenEntryMaxProfitPerContract(N)、OpenEntryMinProfit(N)、OpenEntryMinProfitPerContract(N)這些盈利的關(guān)鍵字,這些關(guān)鍵字我們也通過下面一個(gè)情境案例來闡述一下:
<!-- [if !supportLists]-->?? <!--[endif]-->在bar編號(hào)為10的bar上買入10手螺紋合約,價(jià)格是3712,手續(xù)費(fèi)是每手3元,整點(diǎn)價(jià)值是10,當(dāng)根bar的收盤價(jià)是3713,最高價(jià)3716,最低價(jià)3711,此時(shí)OpenEntryProfit(0)、OpenEntryProfitPerContract(0)、OpenEntryMaxProfit(0)、OpenEntryMaxProfitPerContract(0)、OpenEntryMinProfit(0)、OpenEntryMinProfitPerContract(0)分別返回((3713-3712)*10-3)*10(即((收盤價(jià)-進(jìn)場價(jià))*整點(diǎn)價(jià)值-每手手續(xù)費(fèi))*手?jǐn)?shù))、(3713-3712)*10-3、((3716-3712)*10-3)*10、(3716-3712)*10-3、((3711-3712)*10-3)*10、(3711-3712)*10-3(需要扣除策略屬性中的手續(xù)費(fèi)和滑價(jià)金額)
<!-- [if !supportLists]-->?? <!--[endif]-->接著上面,當(dāng)信號(hào)基于編號(hào)為20的bar上計(jì)算時(shí),從該筆進(jìn)場以來到當(dāng)根bar收盤出現(xiàn)的最高價(jià)3720,出現(xiàn)的最低價(jià)3710,當(dāng)根 bar的收盤價(jià)3716,此時(shí)OpenEntryProfit(0)、OpenEntryProfitPerContract(0)、OpenEntryMaxProfit(0)、OpenEntryMaxProfitPerContract(0)、OpenEntryMinProfit(0)、OpenEntryMinProfitPerContract(0)分別返回((3716-3712)*10-3)*10、(3716-3712)*10-3、((3720-3712)*10-3)*10、(3720-3712)*10-3、((3710-3712)*10-3)*10、(3710-3712)*10-3
<!-- [if !supportLists]-->?? <!--[endif]-->準(zhǔn)確的來說,關(guān)鍵字OpenEntryMaxProfit(0)是OpenEntryProfit(0)從進(jìn)場以來的最大值,而OpenEntryMinProfit(0)是OpenEntryProfit(0)從進(jìn)場以來的最小值; OpenEntryProfitPerContract(0)是每手的盈利,而OpenEntryProfit(0)是OpenEntryProfitPerContract(0)與手?jǐn)?shù)的乘積;OpenEntryMaxProfit(0)與OpenEntryMaxProfitPerContract(0)的關(guān)系及OpenEntryMinProfit(0)與OpenEntryMinProfitPerContract(0)的關(guān)系請(qǐng)參考OpenEntryProfit(0)和OpenEntryProfitPerContract(0)的關(guān)系。
<!-- [if !supportLists]-->三、<!--[endif]-->PosTrade系列關(guān)鍵字
PosTrade系列關(guān)鍵字功能很強(qiáng)大,即可以獲取平倉部位的倉位信息,也可以獲取未平倉部位的倉位信息,具有歷史性,這個(gè)特性不僅體現(xiàn)在它可以獲取平倉部位的倉位信息,更體現(xiàn)在它可以獲取指定進(jìn)場的分批出場的信息,在繼續(xù)下面的閱讀之前,請(qǐng)回答以下幾個(gè)問題:
<!-- [if !supportLists]-->?? <!--[endif]-->在2018-1-11號(hào)10:00買入進(jìn)場10手螺紋(進(jìn)場名稱是”name”),10:45分鐘買入進(jìn)場7手螺紋(進(jìn)場名稱是”style”),此時(shí)PosTrade系列關(guān)鍵字認(rèn)為當(dāng)前未平倉部位有多少筆交易(即關(guān)鍵字PosTradeCount(0)返回多少)?
<!-- [if !supportLists]-->?? <!--[endif]-->接著上面的問題,同一天,在14:00將進(jìn)場”name”減倉6手,此時(shí)PosTrade系列關(guān)鍵字認(rèn)為當(dāng)前未平倉部位有多少筆交易?
<!-- [if !supportLists]-->?? <!--[endif]-->接著上面的問題,在14:30分鐘將進(jìn)場”style”平倉,此時(shí)PosTrade系列關(guān)鍵字認(rèn)為當(dāng)前未平倉部位有多少筆交易?
表2. PosTrade系列關(guān)鍵字
PosTrade系列關(guān)鍵字
用法簡介
PosTradeCount(Posback)
返回指定部位的總交易筆數(shù)
PosTradeEntryBar(Posback,N)
返回指定部位和第N+1筆交易的進(jìn)場位置(bar的編號(hào))
PosTradeEntryName(Posback,N)
返回指定部位和第N+1筆交易的進(jìn)場委托名稱
PosTradeEntryPrice(Posback,N)
返回指定部位和第N+1筆交易的進(jìn)場價(jià)格
PosTradeEntryDateTime(Posback,N)
返回指定部位和第N+1筆交易的進(jìn)場儒略日
PosTradeEntryCategory(Posback,N)
返回指定部位和第N+1筆交易的進(jìn)場委托單類型
PosTradeExitBar(Posback,N)
返回指定部位和第N+1筆交易的出場位置(bar的編號(hào))
PosTradeExitName(Posback,N)
返回指定部位和第N+1筆交易的出場委托名稱
PosTradeExitPrice(Posback,N)
返回指定部位和第N+1筆交易的出場價(jià)格
PosTradeExitDateTime(Posback,N)
返回指定部位和第N+1筆交易的出場儒略日
PosTradeExitCategory(Posback,N)
返回指定部位和第N+1筆交易的出場委托單類型
PosTradeSize(Posback,N)
返回指定部位和第N+1筆交易的合約手?jǐn)?shù)
PosTradeIsLong(Posback,N)
判斷指定部位和第N+1筆交易是否為多頭(空頭返回false,其余返回true)
PosTradeIsOpen(Posback,N)
判斷指定部位和第N+1筆交易是否未平倉(未平倉返回true,其余返回false)
PosTradeProfit(Posback,N)
返回指定部位和第N+1筆交易的盈利
PosTradeCommission(Posback,N)
返回指定部位和第N+1筆交易的手續(xù)費(fèi)金額
PosTrade系列關(guān)鍵字基本都有兩個(gè)參數(shù)(除了關(guān)鍵字PosTradeCount只有一個(gè)參數(shù)),分別為Posback和N,Posback用于指定未平倉部位還是平倉部位,這個(gè)參數(shù)在這里不作介紹,因?yàn)槠絺}部位是由未平倉部位轉(zhuǎn)換的,即當(dāng)未平倉部位的持倉被全部平倉之后,就轉(zhuǎn)換成平倉部位了;參數(shù)N用于表示第N+1筆交易(N從0開始),每一筆交易都對(duì)應(yīng)進(jìn)場和出場,也就是可以通過 PosTradeEntry類關(guān)鍵字(如PosTradeEntryName(0,0)獲取當(dāng)前未平倉部位的第1筆交易的進(jìn)場委托名稱)獲取第N+1筆交易的進(jìn)場信息,通過PosTradeExit類關(guān)鍵字(如PosTradeExitName(0,0)獲取當(dāng)前未平倉部位的第1筆交易的出場委托名稱)獲取第N+1筆交易的出場信息(若第N+1筆交易還沒有出場,出場信息返回0,那么只能取到第N+1筆交易的進(jìn)場信息)。
PosTrade系列關(guān)鍵字最大的特點(diǎn)在于它可以獲取指定進(jìn)場的分批出場的信息,下面以代碼和圖進(jìn)行舉例說明一下。
//代碼if currentbar=30 then
???????? buy("name") 10 shares next bar at market;
if currentbar=40 then
???????? buy("style") 7 shares next bar at market;
if currentbar=50 then
???????? sell("s1") from entry("name") 6 shares next bar at market;
if currentbar=60 then
??? sell("s2") from entry("style") 7 shares next bar at market;
print("currentbar=",currentbar," ",postradecount(0)," ",postradeentrybar(0,0));
圖2. 分批出場
當(dāng)currentbar=41時(shí),當(dāng)前只有兩筆交易,此時(shí)關(guān)鍵字PosTradeCount(0)返回未平倉部位的總筆數(shù)為2,兩筆交易的進(jìn)場手?jǐn)?shù)分別為10手和7手且都未出場,進(jìn)場名稱分別為”name”和”style”,進(jìn)場位置分別為31和41,我們可以通過進(jìn)場關(guān)鍵字獲取這兩筆交易的進(jìn)場信息,如PosTradeEntryBar(0,0)返回31,PosTradeEntryBar(0,1)返回41,但是PosTradeExitBar(0,0)和PosTradeExitBar(0,1)都返回0,因?yàn)檫@兩筆交易都沒有出場,PosTradeEntryCategory(0,0)返回4,表示市價(jià)單(若返回2,表示進(jìn)場單的委托類型是限價(jià)單,當(dāng)然還有其它的類型)。
當(dāng)currentbar=51時(shí),由于在currentbar=50時(shí)指定平倉”name”6手,所以PosTrade關(guān)鍵字將原本的第一筆交易分開成兩筆交易,已經(jīng)平倉的6手還屬于第一筆交易,只是將剩下的未平倉4手作為第三筆交易,這樣PosTrade關(guān)鍵字就可以取到分批出場的倉位信息了,但是這里可能會(huì)有一個(gè)疑問:第三筆交易的進(jìn)場位置是多少?這里需要強(qiáng)調(diào)一下,PosTrade關(guān)鍵字只是將原來的一筆交易根據(jù)是否平倉分開成兩筆交易,未平倉的部位放在最后面作為增加的一筆交易,而對(duì)于第三筆交易的進(jìn)場位置當(dāng)然還是31,第三筆交易和第一筆交易的進(jìn)場位置、進(jìn)場價(jià)格、進(jìn)場名稱等進(jìn)場信息都是一樣的,只是進(jìn)場手?jǐn)?shù)不一致,盈利和手續(xù)費(fèi)會(huì)根據(jù)手?jǐn)?shù)進(jìn)行比例分配到第一筆交易和第三筆交易中;此時(shí)PosTradeCount(0)返回3,PosTradeEntryBar(0,0)和PosTradeEntryBar(0,2)都返回31,PosTradeExitBar(0,0)返回51,PosTradeExitBar(0,2)返回0,PosTradeExitName(0,0)返回”s1”
當(dāng)currentbar=61時(shí),由于在currentbar=60時(shí)指定平倉”style”7手,由于是全部平倉,所以不會(huì)將第二筆交易分成第二筆交易和第四筆交易(若這里只是平倉”style”3手,那么當(dāng)前未平倉部位的總交易筆數(shù)會(huì)由3增加到4,而新增加的第四筆交易是由第二筆交易中的未平倉手?jǐn)?shù)生成的),此時(shí)PosTradeCount(0)依然返回3,PosTradeExitBar(0,1)返回61,PosTradeExitName(0,1)返回”s2”
<!-- [if !supportLists]-->1、? <!--[endif]-->關(guān)鍵字小結(jié)
在小結(jié)這部分只介紹PosTradeSize(Posback,N)、PosTradeIsLong(Posback,N)、PosTradeIsOpen(Posback,N)、PosTradeProfit(Posback,N)和PosTradeCommission(Posback,N),其它的關(guān)鍵字,其它的關(guān)鍵字這里不再敘述,若有不清楚的地方,可以將上面的代碼并且通過print關(guān)鍵字輸出相關(guān)信息進(jìn)行對(duì)比,這里仍然延續(xù)上面的例子。
當(dāng)信號(hào)基于編號(hào)為41的bar進(jìn)行計(jì)算時(shí),關(guān)鍵字PosTradeSize(0,0)、PosTradeIsLong(0,0)、PosTradeIsOpen(0,0)分別返回10、true(因?yàn)槭嵌囝^)、true,當(dāng)信號(hào)基于編號(hào)為51的bar進(jìn)行計(jì)算時(shí),關(guān)鍵字PosTradeSize(0,0)、PosTradeIsLong(0,0)、PosTradeIsOpen(0,0)分別返回6、true(因?yàn)槭嵌囝^)、false(因?yàn)橐呀?jīng)平倉了)。
假設(shè)編號(hào)為31的bar以開盤價(jià)3712成交了10手螺紋合約(整點(diǎn)價(jià)值是10,并且策略屬性中手續(xù)費(fèi)設(shè)置為每手3元),當(dāng)根bar(即編號(hào)31的bar)的收盤價(jià)為3714,此時(shí)PosTradeProfit(0,0)返回第一筆交易的盈利為((3714-3712)*10-3)*10(計(jì)算公式為((收盤價(jià)-成交價(jià))*整點(diǎn)價(jià)值-每手手續(xù)費(fèi))*手?jǐn)?shù)),PosTradeCommission(0,0)返回手續(xù)費(fèi)為3*10(即30元);當(dāng)信號(hào)基于編號(hào)為51的bar進(jìn)行計(jì)算時(shí),當(dāng)根bar的收盤價(jià)為3716,第一筆交易的出場成交價(jià)為3718,此時(shí)PosTradeProfit(0,0)返回第一筆交易的盈利為((3718-3712)*10-3*2)*6(計(jì)算公式為((出場成交價(jià)-進(jìn)場成交價(jià))*整點(diǎn)價(jià)值-每手手續(xù)費(fèi)*2)*手?jǐn)?shù)),PosTradeCommission(0,0)返回手續(xù)費(fèi)為3*2*6(即每手手續(xù)費(fèi)*2*手?jǐn)?shù),這里的2表示兩次)。
關(guān)鍵字PosTradeEntryDateTime(Posback,N)和PosTradeExitDateTime(Posback,N)返回的是儒略日的信息,通過關(guān)鍵字JulianToDate可以將儒略日轉(zhuǎn)換成EL日期(2018-01-29的EL格式為1180129,其它類推即可),所以JulianToDate (PosTradeEntryDateTime(0,0))和JulianToDate (PosTradeExitDateTime (0,0))返回的是第一筆交易的進(jìn)場EL日期和出場EL日期;通過關(guān)鍵字datetime2eltime可以將儒略日轉(zhuǎn)換成EL時(shí)間(13:45的EL時(shí)間為1345,其它類推),所以datetime2eltime(PosTradeEntryDateTime(0,0))和datetime2eltime(PosTradeExitDateTime (0,0))返回的是第一筆交易的進(jìn)場EL時(shí)間和出場EL時(shí)間;關(guān)鍵字datetime2eltime_s和datetime2eltime的用法一致,不同的只是返回的時(shí)間精度不一樣,前者精確到秒(例如,134500),后者精確到分(例如,1345)。
注意事項(xiàng):
?1.??<!--[endif]-->獲取盈虧的關(guān)鍵字都會(huì)將策略屬性中的手續(xù)費(fèi)和滑價(jià)金額計(jì)算在內(nèi),也就是會(huì)扣除手續(xù)費(fèi)和滑價(jià)金額。
2. OpenEntry和PosTrade系列關(guān)鍵字不能用于回溯,也就是不能在關(guān)鍵字后面使用方括號(hào)[]來引用歷史數(shù)據(jù),例如不能這樣使用openentrytime(0)[1]、postradeentrybar(0,0)[1];但是我們可以通過變量來回溯歷史數(shù)據(jù),可以這樣使用:value1=postradeentrybar(0,0); value1[1];
3.?關(guān)鍵字OpenEntryComission和PosTradeCommission會(huì)根據(jù)策略屬性中設(shè)置的手續(xù)費(fèi)計(jì)算交易的手續(xù)費(fèi)金額,但是測(cè)試中發(fā)現(xiàn),這兩個(gè)關(guān)鍵字也會(huì)根據(jù)策略屬性中的滑價(jià)金額計(jì)算交易的手續(xù)費(fèi)金額,也就是說這兩個(gè)關(guān)鍵字返回的值是基于策略屬性中的手續(xù)費(fèi)和滑價(jià)進(jìn)行計(jì)算的費(fèi)用金額。
?
-
MC回復(fù)討論一:
贊!
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 511411198 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容