电竞比分网-中国电竞赛事及体育赛事平台

分享

量化投資

 taozl 2022-09-23 發(fā)布于安徽

第十七章:關(guān)于bar內(nèi)交易的幾個(gè)問題

1、實(shí)時(shí)數(shù)據(jù)刷新打印和歷史數(shù)據(jù)刷新打印

打印歷史數(shù)據(jù)時(shí)會發(fā)現(xiàn)如下:

#cb    1.00 #bs   1.00 #t1109.00 #p   1.00 #mp   1.00 #mp[1]   0.00

打印實(shí)時(shí)數(shù)據(jù)時(shí)會發(fā)現(xiàn)如下:

#cb  108.00 #bs   2.00 #t1457.00 #p   0.00 #mp   0.00 #mp[1]   0.00#cb  109.00 #bs   0.00 #t1458.00 #p   0.00 #mp   0.00 #mp[1]   0.00#cb  109.00 #bs   1.00 #t1458.00 #p   0.00 #mp   0.00 #mp[1]   0.00

【分析】

  1、在新bar開啟時(shí),打印歷史數(shù)據(jù)時(shí),上一個(gè)bar的收盤狀態(tài)會放在下一個(gè)bar的time當(dāng)中;而在打印實(shí)時(shí)數(shù)據(jù)時(shí),上一個(gè)bar的收盤狀態(tài)是放在上一個(gè)bar的time當(dāng)中。

  我們打印歷史的收盤價(jià)價(jià)格

#cb    1.00 #bs   1.00 #t1109.00 #p   1.00 #mp   1.00 #mp[1]   0.00 #close3553.00#cb    1.00 #bs   2.00 #t1110.00 #p   1.00 #mp   1.00 #mp[1]   0.00 #close3553.00#cb    2.00 #bs   0.00 #t1110.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3553.00

  多打印幾個(gè)

  #cb    3.00 #bs   1.00 #t1111.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3551.00

#cb    3.00 #bs   2.00 #t1112.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3551.00
#cb    4.00 #bs   0.00 #t1112.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3551.00#cb    4.00 #bs   1.00 #t1112.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3552.00

  #cb   78.00 #bs   1.00 #t1426.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3555.00

#cb   78.00 #bs   2.00 #t1427.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3555.00
#cb   79.00 #bs   0.00 #t1427.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3555.00#cb   79.00 #bs   1.00 #t1427.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3554.00
#cb   99.00 #bs   1.00 #t1447.00 #p   1.00 #mp   1.00 #mp[1]   1.00 #close3554.00

  分別找到:它們的開盤價(jià)和收盤,發(fā)現(xiàn)是可以一一對應(yīng)的。這就應(yīng)征了最早之前所說的,是由于當(dāng)根新開盤tick造成的上一個(gè)bar的收盤。這里顯示在這里非常清楚的表明了這點(diǎn)。但是在實(shí)盤實(shí)時(shí)數(shù)據(jù)刷新是是看不到這個(gè)結(jié)果的。其實(shí)這個(gè)結(jié)果是一閃而現(xiàn)的。

2、開啟精細(xì)模式時(shí),時(shí)間對不起來了?

  我們發(fā)現(xiàn)在找上門的收盤價(jià)時(shí)間的時(shí)候,在K線圖上去找都是延后一個(gè)時(shí)間段。這是因?yàn)槲覀冮_啟了精細(xì)模式所致(當(dāng)然不開啟精細(xì)模式也是這樣),這是因?yàn)槿缦聢D所示:

  

   在打印的時(shí)間,打印的是準(zhǔn)確的時(shí)間,觀察K線顯示的是bar完成的時(shí)間。因此在后面解釋bar上時(shí)間問題,就是這個(gè)原因

  

3、再分析最初的那段代碼

  A:原始代碼打印結(jié)果分析

[IntrabarOrderGeneration=true]var:intrabarpersist mp(0),intrabarpersist mp1(0), intrabarpersist ma0(0),
intrabarpersist ma1(0);

mp=marketposition;

ma0 = Average(close,5);
ma1 = Average(close,20);if mp[1] <> 1 and ma0[1] > ma1[1] then buy 1 shares next bar at market;if mp[1] = 1 and ma0[1] < ma1[1] then sell 1 shares next bar at market;

print('#cb ',currentbar,' #bs',barstatus,' #t',Time_,' #p',marketposition,' #mp',mp,' #mp[1]',mp[1]);

 【分析】

  1、我們分析第一次開倉時(shí)間

[cb] 1.00 [bs] 1.00 [t]1109.00 [p] 0.00 [mp] 0.00 [mp[1]] 0.00
[cb] 1.00 [bs] 1.00 [t]1109.00 [p] 0.00 [mp] 0.00 [mp[1]] 0.00
[cb] 1.00 [bs] 1.00 [t]1109.00 [p] 0.00 [mp] 0.00 [mp[1]] 0.00
[cb] 1.00 [bs] 1.00 [t]1109.00 [p] 0.00 [mp] 0.00 [mp[1]] 0.00
[cb] 1.00 [bs] 2.00 [t]1110.00 [p] 0.00 [mp] 0.00 [mp[1]] 0.00
[cb] 2.00 [bs] 0.00 [t]1110.00 [p] 0.00 [mp] 0.00 [mp[1]] 0.00
[cb] 2.00 [bs] 1.00 [t]1110.00 [p] 1.00 [mp] 1.00 [mp[1]] 0.00
[cb] 2.00 [bs] 1.00 [t]1110.00 [p] 1.00 [mp] 1.00 [mp[1]] 0.00
[cb] 2.00 [bs] 1.00 [t]1110.00 [p] 1.00 [mp] 1.00 [mp[1]] 0.00
[cb] 2.00 [bs] 1.00 [t]1110.00 [p] 1.00 [mp] 1.00 [mp[1]] 0.00

  紅色標(biāo)注位置顯示:【p】表示當(dāng)前已經(jīng)持有多單,【mp】與marketposition相等也是表示持有多單,【mp[1]】表示上一個(gè)bar沒有持有倉位。

  問題:這里為什么要顯示在第一個(gè)bar內(nèi)位置而不顯示在開盤位置(顯示在barstatus=1(第一個(gè)),而不顯示在barStatus=0)?

  回答:這是因?yàn)?,單子確實(shí)是下在barStatus=0的這個(gè)位置,因?yàn)橹灰聠瘟酥蟛艜@示持倉狀態(tài),因此要顯示在barstat=1(第一個(gè))的位置。

  佐證:觀察下圖我們發(fā)現(xiàn),價(jià)格是下在了3553的這個(gè)開盤價(jià),我們打印價(jià)格時(shí)候發(fā)現(xiàn)barstatus=1時(shí)的價(jià)格為3554。因此證明了,價(jià)格是下在開盤價(jià),而下單完成后,在下一個(gè)tick顯示成交狀態(tài)

  

  B:我們更改原始代碼,要求上一個(gè)bar進(jìn)場之后,如果當(dāng)前的close價(jià)格(也就是精細(xì)模式中的當(dāng)前tick)向下穿越上一個(gè)ma0(慢速均線),要求在下一個(gè)tick掛止損單出場(stop);

[IntrabarOrderGeneration=true]var:intrabarpersist mp(0),intrabarpersist mp1(0), intrabarpersist ma0(0),
intrabarpersist ma1(0);

mp=marketposition;

ma0 = Average(close,5);
ma1 = Average(close,20);if mp[1] <> 1 and ma0[1] > ma1[1] then buy 1 shares next bar at market;//if mp[1] = 1 and ma0[1] < ma1[1] then sell 1 shares next bar at market;if mp[1] = 1 and close crosses under ma0[1] then sell 1 shares next bar at market;

print('[cb]',currentbar,' [bs]',barstatus,' [t]',Time_,' [p]',marketposition,' [mp]',mp,' [mp[1]]',mp[1],'[close]',Close);

【分析】

  1、我們再來看一下上面的輸出結(jié)果,只看出場部分,還是第一筆,只觀察出場部分,從圖表上我們可以找到出場是在1112(bar上時(shí)間是1113)。如下面所示:

   

   2、從輸出結(jié)果來看,我們是在bar內(nèi)的3550價(jià)格出場的,在出場之后,marketposition/mp再下一個(gè)tick位置已經(jīng)變換成了0,表示當(dāng)根不再持倉,其中mp[1]表示上一個(gè)bar的狀態(tài)還是1,并為改變。

【小結(jié)】

  通過上面的例子我們得到如下幾個(gè)結(jié)論:

  1、在bar內(nèi)模式下,我們在盤中突破買入或者賣出操作的時(shí)候,需要判斷上一個(gè)bar的狀態(tài)。如果不判斷上一個(gè)bar的狀態(tài)的話,很可能會不斷的進(jìn)場或者出場操作。在這里我們提取marketposition的值,并賦值給Intrabarpersist mp(用復(fù)合變量命名)變量,在對bar內(nèi)進(jìn)行開平倉操作的時(shí)候,我們需要判斷mp[1]上一個(gè)bar的狀態(tài)。如果采用mp當(dāng)根tick的狀態(tài)的話是有可能造成不斷進(jìn)出場的問題。這就是復(fù)合變量的妙用

  2、通過上面例子,復(fù)合變量既能顯示當(dāng)根bar的的持倉狀態(tài),又能顯示上一個(gè)bar的持倉狀態(tài),只需要通過[方括號]改變其復(fù)合變量的性質(zhì)即可

  3、在print打印時(shí)間的時(shí)候。存在正在進(jìn)行的數(shù)據(jù)和bar上的時(shí)間,在K線的邏輯下,bar上的時(shí)間會“慢”一刻,這是疑問K線上/bar上的時(shí)間是完成時(shí)間。在找相關(guān)bar對照的數(shù)據(jù)要注意這問題。

4、錯(cuò)誤的應(yīng)用

  我們想到,bar內(nèi)模式,開啟的精細(xì)是按照逐筆的方式,在國內(nèi)期貨中:逐筆=tick級別。那我們改成Ticks來穿越可不可以?

[IntrabarOrderGeneration=true]var:intrabarpersist mp(0),intrabarpersist mp1(0), intrabarpersist ma0(0),
intrabarpersist ma1(0);

mp=marketposition;

ma0 = Average(close,5);
ma1 = Average(close,20);if mp[1] <> 1 and ma0[1] > ma1[1] then buy 1 shares next bar at market;//if mp[1] = 1 and ma0[1] < ma1[1] then sell 1 shares next bar at market;if mp[1] = 1 and Ticks crosses under ma0[1] then sell 1 shares next bar at market;

print('[cb]',currentbar,' [bs]',barstatus,' [t]',Time_,' [p]',marketposition,' [mp]',mp,' [mp[1]]',mp[1],'[close]',Close);

  答案顯然是不行的,錯(cuò)誤自己觀察即可。

【分析】

  按住F1幫助看一下tick的定義:

  圖表設(shè)置成交量基于成交筆數(shù),則Ticks返回每根Bar的成交筆數(shù)。

  圖表設(shè)置成交量基于交易量,則Ticks返回每根Bar的成交股數(shù)(成交手?jǐn)?shù))。

  圖表設(shè)置成交量基于成交筆數(shù):

   - 1-tick圖表中,當(dāng)前tick的Ticks返回值為1。
   - 多tick、量、時(shí)間周期的圖表中,當(dāng)前Bar的Ticks返回值為當(dāng)前Bar的成交筆數(shù)。

  圖表設(shè)置成交量基于交易量:

   - 1-tick圖表中,當(dāng)前tick的Ticks返回值為當(dāng)前tick的成交股數(shù)。
   - 多tick,量,時(shí)間周期的圖表中,當(dāng)前Bar的Ticks返回值為當(dāng)前Bar的成交股數(shù)。

  注意:許多歷史數(shù)據(jù)源只提供有限的歷史成交量和成交筆數(shù)的數(shù)據(jù),實(shí)時(shí)存儲數(shù)據(jù)可以確保成交量和成交筆數(shù)數(shù)據(jù)的有效性。  

  tick返回的成交筆數(shù),所以不可以,因此在bar內(nèi)模式下,close價(jià)格=逐筆成交價(jià)格,而不是tick ≠逐筆成交價(jià)格。

=================================================

之前的文章感謝大家的轉(zhuǎn)載,希望轉(zhuǎn)載時(shí)請注明出處,本人轉(zhuǎn)自其它網(wǎng)站的圖表一并感謝,謝謝~!

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多