這是為了在做出下單動作的時候,先判斷一下目前該商品,是否處於可交易的狀態?因為我自己已經發生多次,輸出部位的文字檔改變了,卻在該商品沒有交易的時段 XDDD
函數: _isTrading。回傳:True / False。
var: intrabarpersist volToday(0), intrabarpersist volUpdateTime(0),
intrabarpersist TimeValue(0), intrabarpersist isTrading(false);
if LastBarOnChart then begin
value1= currentTime_s;
value2= HoursFromDateTime( ELTimeToDateTime_s(value1) );
value3= MinutesFromDateTime( ELTimeToDateTime_s(value1) );
value4= SecondsFromDateTime( ELTimeToDateTime_s(value1) );
TimeValue= value2*3600 + value3*60 + value4;
once volToday= q_ask*q_bid + q_totalvolume;
if (q_ask*q_bid+q_totalvolume) <> volToday then begin
volUpdateTime= TimeValue;
volToday= (q_ask*q_bid+q_totalvolume);
end;
_isTrading= TimeValue-volUpdateTime < 60 and volUpdateTime <> 0
and q_bid*q_ask <> 0 and q_bid <> q_ask;
end;
原理主要是利用 委買價、委賣價,與當日成交量這三個資訊的變化,來判斷目前是否有在交易中?這不是用目前時間來做判斷,與 QuoteManger 那邊的商品交易時段設定比較沒有關係。
這個函數的缺點是會有一些延遲性(請看 code 中的紅色),也有可能該商品實際上是有在交易,但是因為市場太清淡導致判斷成沒有交易中,也有可能實際上已經停止交易了,卻還以為仍可交易。優點是可以把市場交投清淡視為不要進場的判斷,也可以適用在不同的商品。
本來我希望用委買量、委賣量來做判斷,而不是委買價、委賣價,但我使用 Touchance 為報價來源,在 MultiCharts 9.1 上取到的 q_bidsize、q_asksize 一直是 0,所以~