在 TradeStation / HTS 裡如果對下單的指令諸如 Buy、Sell、ExitLong、ExitShort,這樣的交易指令後面空空如也的話,會被系統內定為 This bar Close :在條件成立下,當根K棒完成時動作,成交價當然就以當根的收盤價為記錄,不管你是要建多單、建空單或是多單空單的平倉。
今天要寫這一篇比較兩者,不是要敘述 Next bar Market(下一根K棒市價) 與 This bar Close(當根K棒完成時)的動作時機與價格記錄,我假設讀者了解這兩個的不同。我想描述的是這兩者之間的風險承擔不同。
以真實運作層面來說,其實 This bar Close 是不可能真實被執行的,因為以日線而言,當K棒完成的瞬間,也就是市場已經已經關門,不論你的自動下單動作速率有多快,所能得到的回報只有一種:「拒絕委託,已超過交易時間。」所以真正可以被執行的命令是 Next bar Market:在下一根K棒出現第一個價時市價動作。
而因為交易指令如果採取的是 Next bar Market 的話,也就是以下一根的開盤時間為動作時間,那也就是說我們將會有一根K棒的運動時間無法停損,這件事情真的是可大可小。近來台指期盤中的高速爆衝似乎漸漸有成為常態的樣子?而這個狀況,恐怕會讓不是以日線為交易,而以盤中即可做停損的分線交易(甚至是當沖),發生當停損動作真實動作時已經遠在預定的停損額度之外。
假設我們目前是採取分線為交易的基礎,可能預定的停損額度只有30點50點,當台指期最近常常發生的超短時間高速爆衝發生的時候,預定30點停損的 ExitLong / ExitShort next bar at EntryPrice(0) - / + 30 stop ,如果Buy / Sell next bar Market 一進場就開始了反向爆衝的話,是極有可能出現停損到天邊去的... 面對這樣的狀況,恐怕 This bar Close 會是不得不的選擇了。
因為 This bar Close 對軟體來說進場的時間是在當根K棒完成之時,也就是說進場之後立刻就可以受到 ExitLong / ExitShort next bar at EntryPrice(0) - / + N stop 的停損保護。在盤中運作的過程中,其實 Next bar Market 與 This bar Close 都是相同的動作時間,但卻有著在軟體上截然不同的效果。
在以當沖為前提下,如果原本採用 Next bar Market 為動作時間,單純就停損的角度而言, This bar Close 才能真的提供停損的作用,當高速爆衝發生的時候。那麼會留倉過夜的波段程式呢?每天的最後一根K棒就無法以 This bar Close 來觸動下單動作了,因為在下一根的開盤價還沒出現在前,K棒是不被視為"完成"的,至少 HTS 是如此(我沒有在盤中使用 TS 的經驗),這時得合併使用 Time、Q_Time 配上聞名喪膽的 This bar at Market (TS不能這樣搞) 才有可能得到實現。
PS. 不要再把下一根的開盤價寫成 Next bar at OPEN stop 或是 Next bar at OPEN limit 了。多數我接觸到委託程式代工的人在講"下一根的開盤價"意思其實是「下一根的開盤"時"」。Next bar at OPEN stop 是指在下一根碰到現在這一根的開盤"價"。






20 意見:
阿政,
在TS中有個保留字Open next bar,指的是下根K bar的開盤價,可以讓前一根計算時來參考,原理是把當根本來應該在收盤結束計算的時間點,延後到下根開盤,這也會導致本來收盤應該出現的訊息,跟著延後到下根開盤才出現.這樣,想要以下根開盤價+_ price來進場,也就變的可能了.甚至可以參考下根開盤的位置,來決定要不要下單.
語法舉例如下: If Open next bar < C + 10 point then Buy next bar at open next bar +- x points stop/limit;
進場是OK的,不過"停損"可以藉由"Open next bar"來控制嗎?
我不知道在現在這一根沒有部位(多單)的狀況下,要如何做到 ExitLong next bar at EntryPrice(0)-50 point stop ;?因為多單進場條件成立而 Buy next bar at Market ; 的話,在這一根的當下是沒有多單部位的,所以就不會有正確的 EntryPrice(0) ,那要如何在下一根做到多單的停損?
阿政,理論上是可行的.重點是你要先知道你的進場價.
假如,你打算在收盤+5買進,萬一隔根開盤開在收盤+50,那我們會由O next bar得知進場價是收盤+50,所以,我們的出場價,可以設在O next bar - 停損點數
LongPrice = C + 5;
Buy next bar at LongPrice stop;
If o next bar >= LongPrice then
ExitLong next bar at O next bar - 20 stop;
else
Exitlong next bar at LongPrice - 20 stop;
這樣的例子與你的原題符合嗎?
X5super:
我想這樣就與這一篇的原命題不合了。因為我是想比較 This bar at Close 與 Next bar at "Market" 之間的不可控風險。
不過這也點出了在這個面向上,TS有"Open next bar"可以用,而HTS則沒有。在TS上即使是 Buy Next bar at Market,還是可以透過ExitLong next bar at Open next bar - 20 stop,來做到進場當根K棒就被反向爆衝的風險控制。
原來如此,不好意思,我沒用過HTS,不清楚有這樣的差異,看來HTS沒有提供與TS一樣的彈性空間.
X5super:
HTS也有一些TS沒有的彈性,各有所長吧^^
沒錯,能夠存在市場的,就一定有其長處.
Hi 政大,
文中說道「在盤中運作的過程中,其實 Next bar Market 與 This bar Close 都是相同的動作時間」,這樣如何保護投資人免於暴衝的危害呢?可否再說細一點。謝謝。
維維的爸:
免於爆衝的危害最好的辦法就是爆衝的時候,您的部位剛好是有利的那一方^^ 呵呵,開個玩笑啦~
本篇已經說了:用This bar at Close 去取代Next bar at Market,這樣可以得到在部位建立的一瞬間就已經在停損機制的保護之下的效果。
我本來也想用ts來進行回測,結果一用才發現不能用this bar at XXX stop,HTS可以用它,這句不能說是bug,看會不會用,後來就移除ts了
小傑:
方便賜教嗎?我不知道This bar at XXXX stop,可以"安全"的使用耶。不會盤中有訊號但是盤後卻可能消失嗎?
你好,看你的文章蠻久的
也買了您的書開始練習了程式交易
最近遇到了一些問題
煩請您有空能解答一下
弄好久也弄不出來,呼~
我用的是tradestation
想要計算均買均賣
所以先建了二個symbol在global server
symbol1存委買
symbol2存委賣
meta server中symbol1的「trade」中我存委買量
「單量」我存委買筆
symbol2的「trade」中我存委賣量
「單量」我存委賣筆
然後我在easylanguage中
用
bo=c of data3;
so=c of data4;
bn=v of data3;
sn=v of data4;
bp=bo/bn;
sp=so/sn;
但是bn及sn取出來的值卻都不對
我到global server中load data
Tot. Vol.這欄都有正確的值
可是為何讀不出來呢??
另外,我想依上述的方式來存五檔委買賣張數
也沒辦法成功
不知道您能否解答
謝謝了
阿毅:
不好意思,盤中我從來沒有使用TS過,這方面的問題建議你可以到飛天象的Blog去發問。
還是很感謝
剛正在看他的文章
呵
政大您好,先感謝這個部落格讓我這菜鳥可以較無痛的進入這迷人的領域。
看有關 this bar 的相關交章,有一疑問,請指教
盤中有訊號,而盤後,或者作回測時失真,是否是因為事後的 K 線資料只剩 O, H, L, C,而不像盤中那樣的每個 tick 進來作信號判斷的關係啊?
也就是說若用 this bar 有很大可能,在盤中有個 tick 進來,完成條件的買賣訊號,在盤後卻因為喂的資料不同而失真了?
Whyzn:
大致上就是如你所想的沒錯,在STS中的當根(未完成)K棒裡的C或是Close(用在條件式內)指的是"最新"價格,而不是多數人習慣以為的"收盤"價:K棒都還沒收盤,哪裡來的收盤價呢?
詳情可以參閱拙作。
政大您好 :
重覆看了幾次這裡的文章,也拜讀了您的著作,加上到處問了許多蠢問題,漸漸有了較清楚認知(關於程式交易),謝謝您熱心的指導。
現在有個不解之處請教您; 您貼出來的k圖(例2009.9.8那篇),成交價的標示(側邊綠色的小三角)是系統自動完成的或您調整的,
我看我的圖都只能標在開/收盤價處。而您的位置好像就在成交處?
如何作的啊?
謝謝您
請問阿政:
我使用買進語法Buy ("買進") This bar at Close// 多單停損語法
If CurrentContracts = 1 Then
exitlong("停損") next bar at entryprice(0)-停損價 stop
End if
卻還是無法達成您說的那樣進場就受到停損的保護.是否有其他不足之處.請協助.謝謝
傻傻分不清楚:
通常問題所在不會是你提的這部份。就邏輯上來說,因為 This bar Close 的訊號出現的時候已經進入了下一根的開始,所以停損的機制就開始作用。
你的狀況必須實際的貼圖上來看,甚至就是全部程式碼的綜觀除錯了,除非你願意付費請人除錯,要不就是自己一條一條慢慢抓了,加油^^
張貼意見