2013年10月3日 星期四

●成交量與動能(含程式碼)--by EasyTrader

     這一篇是有關「籌碼預估」的文章,雖然我個人對於成交量只是參考,但以前在業內時的確有人這樣靠籌碼在作單的,這篇新作希望給初學者一個方向,但可能更偏向主觀判斷者的思考邏輯。程式交易的讀者可以將成交量運用在劃分趨勢盤及盤整盤的時機,趨勢盤一定會有出量。  (Wen)
------

EasyTrader - ArtNo 006

市場成交量與價格的關係
1.確認當前價格運行趨勢:金融商品上漲或下跌,其趨勢可以用較大的成交量或逐漸增加的成交量進行確認。逆趨勢而行可以用成交量逐漸縮減或清淡成交量進行確認。
2.趨勢呈現弱勢的警告:如果市場成交量一直保持銳減,則警告目前趨勢正開始弱化。尤其是在交投市場清淡情況下創新高或新低,更應該小心謹慎。

分析成交量究竟能給我們帶來什麼呢?

 首先,可以從成交量變化分析某金融商品對市場的吸引程度。成交量越大,說明越有吸引力,以後的價格波動幅度可能會越大。
 其次,可以從成交量變化分析某商品的價格壓力和支撐區域。在一個價格區域,如果成交量很大,說明該區域有很大的壓力或支撐,趨勢將在這裡產生停頓或反轉。成交量是價格變化的一個重要因素,也是一個可能引起本質變動的因素,但是在大多數時候,只起到催化劑的作用。

我們先來看看期貨成交口數的歷史數據



表中顯示在2008年開始 50000口以下的成交量已經很少了




當日平均振幅與真實區間的變化在成交口數大於 11萬口以上逐漸明顯 , 因此對於開盤以後當日成交量的預估對獲利掌握的能力也有一定的幫助

我們可以將成交量的預估公式轉成指標放在圖表中觀察!

●下表為預估成交量的公式參數:




加入預估量以後的圖表如下圖




黃色橫線為前一日成交量 ,白色圈圈內的預估量明顯放大 ,因此當日振幅也隨之放大, 雖是預估量,但也不失為一可觀察的重點


程式碼如下
Input: Ratio(0.3) ;
vars: V_sum(0),V_est(0),TodayVol(0),YesterDayVol(0);
if date <> date[1] then begin
        YesterDayVol = TodayVol[1] ;
    V_sum = ticks;
end
else begin
   V_sum = V_sum + ticks;
end;
if time<=0850 then V_est = V_sum * 28.90
else if Time >0850 and time <= 0855 then V_est = V_sum * 18.67
else if Time >0855 and time <= 0900 then V_est = V_sum * 14.29
else if Time >0900 and time <= 0905 then V_est = V_sum * 9.54
else if Time >0905 and time <= 0910 then V_est = V_sum * 7.20
else if Time >0910 and time <= 0915 then V_est = V_sum * 6.11
else if Time >0915 and time <= 0920 then V_est = V_sum * 5.25
else if Time >0920 and time <= 0925 then V_est = V_sum * 4.73
else if Time >0925 and time <= 0930 then V_est = V_sum * 4.27
else if Time >0930 and time <= 0935 then V_est = V_sum * 3.88
else if Time >0935 and time <= 0940 then V_est = V_sum * 3.60
else if Time >0940 and time <= 0945 then V_est = V_sum * 3.33
else if Time >0945 and time <= 0950 then V_est = V_sum * 3.12
else if Time >0950 and time <= 0955 then V_est = V_sum * 2.95
else if Time >0955 and time <= 1000 then V_est = V_sum * 2.80
else if Time >1000 and time <= 1005 then V_est = V_sum * 2.65
else if Time >1005 and time <= 1010 then V_est = V_sum * 2.53
else if Time >1010 and time <= 1015 then V_est = V_sum * 2.42
else if Time >1015 and time <= 1020 then V_est = V_sum * 2.32
else if Time >1020 and time <= 1025 then V_est = V_sum * 2.24
else if Time >1025 and time <= 1030 then V_est = V_sum * 2.17
else if Time >1030 and time <= 1035 then V_est = V_sum * 2.10
else if Time >1035 and time <= 1040 then V_est = V_sum * 2.05
else if Time >1040 and time <= 1045 then V_est = V_sum * 1.98
else if Time >1045 and time <= 1050 then V_est = V_sum * 1.92
else if Time >1050 and time <= 1055 then V_est = V_sum * 1.88
else if Time >1055 and time <= 1100 then V_est = V_sum * 1.83
else if Time >1100 and time <= 1105 then V_est = V_sum * 1.79
else if Time >1105 and time <= 1110 then V_est = V_sum * 1.75
else if Time >1110 and time <= 1115 then V_est = V_sum * 1.71
else if Time >1115 and time <= 1120 then V_est = V_sum * 1.68
else if Time >1120 and time <= 1125 then V_est = V_sum * 1.63
else if Time >1125 and time <= 1130 then V_est = V_sum * 1.59
else if Time >1130 and time <= 1135 then V_est = V_sum * 1.56
else if Time >1135 and time <= 1140 then V_est = V_sum * 1.53
else if Time >1140 and time <= 1145 then V_est = V_sum * 1.51
else if Time >1145 and time <= 1150 then V_est = V_sum * 1.48
else if Time >1150 and time <= 1155 then V_est = V_sum * 1.45
else if Time >1155 and time <= 1200 then V_est = V_sum * 1.43
else if Time >1200 and time <= 1205 then V_est = V_sum * 1.40
else if Time >1205 and time <= 1210 then V_est = V_sum * 1.38
else if Time >1210 and time <= 1215 then V_est = V_sum * 1.35
else if Time >1215 and time <= 1220 then V_est = V_sum * 1.33
else if Time >1220 and time <= 1225 then V_est = V_sum * 1.31
else if Time >1225 and time <= 1230 then V_est = V_sum * 1.30
else if Time >1230 and time <= 1235 then V_est = V_sum * 1.28
else if Time >1235 and time <= 1240 then V_est = V_sum * 1.26
else if Time >1240 and time <= 1245 then V_est = V_sum * 1.24
else if Time >1245 and time <= 1250 then V_est = V_sum * 1.22
else if Time >1250 and time <= 1255 then V_est = V_sum * 1.21
else if Time >1255 and time <= 1300 then V_est = V_sum * 1.19
else if Time >1300 and time <= 1305 then V_est = V_sum * 1.16
else if Time >1305 and time <= 1310 then V_est = V_sum * 1.15
else if Time >1310 and time <= 1315 then V_est = V_sum * 1.13
else if Time >1315 and time <= 1320 then V_est = V_sum * 1.11
else if Time >1320 and time <= 1325 then V_est = V_sum * 1.09
else if Time >1325 and time <= 1330 then V_est = V_sum * 1.08
else if Time >1330 and time <= 1335 then V_est = V_sum * 1.05
else if Time >1335 and time <= 1340 then V_est = V_sum * 1.03
else if Time >1340 and time <= 1345 then V_est = V_sum * 1.00;

if time = 1345 then TodayVol = V_sum ;


plot1(V_sum, "Daily V sum");
plot2(V_est, "Volume Est");
plot3(YesterDayVol,"LastdayVol");
plot4(YesterDayVol*Ratio, "VolumeRatio");

動能
成交量影響振幅大小 , 而動能幫我們確認趨勢的方向與轉折,這裡也介紹另一個觀察成交量變化(動能)的方式
TS2000i 在分K圖中表達成交量的保留字有三 ,各代表不同的意義
Ticks à 成交量
Upticks à 上漲量
Downticks à 下漲量
 K線以上 Ticks  Volume 都代表成交量

動能 = (當日上漲量 - 當日下跌量)的累計值

利用Tick 的特性 , 我們可以觀察目前的動能與價格變化 , 如下圖


程式碼如下

vars: V_energy(0);
if date <> date[1] then begin
V_energy = Upticks-DownTicks;
end else begin
V_energy = V_energy + Upticks-DownTicks;
end;
if V_energy >= 0 then plot1(V_energy, "V_energy",Yellow) else plot1(V_energy, "V_energy",White);
Plot2(1000) ;
Plot3(-1000) ;

對於日內交易應有相當的助益!


春江水暖鴨先知 ~ 開盤量與收盤量的觀察
一般開盤與收盤的成交量(包含了法人量,當沖/隔日沖進出場量)相對於整日或隔日的價格運動有一定的影響力 , 我們也可以將它放在成交量指標觀察


程式碼:
Input: EarlyTime(900),EndTimeA(1330),EndTimeB(1345);
vars: V_sum(0),EarlyVol(0),EndVolA(0),EndVolB(0),EndVol(0),EarlyClose(0),EndOpen(0);

 {一般成交量的語法 }
If DataCompression >= 2 Then
        Plot1(Volume, "Volume",iff(Close >= Close[1],Red,Green),Black,0)
Else
        Plot1(UpTicks + DownTicks, "Volume",iff(Close >= Close[1],Red,Green),Black,0);

{ 計算累計成交量}
if date <> date[1] then begin
   V_sum = ticks;
end else begin
   V_sum = V_sum + ticks;
  { 將 09:00前的累計量存在變數中 , 並記錄區間收盤價 }
   if time <= EarlyTime then Begin
       EarlyVol = V_sum ;
          EarlyClose = Close ;
  end;

 { 將13:30~13:45的累計量存在變數中 , 並記錄區間開盤價 }
   if time < EndTimeA then EndVolA = V_sum ;
   if time <= EndTimeB then EndVolB = V_sum ;
   if time >= EndTimeA and time <= EndTimeB then EndVol = EndVolB - EndVolA ;
   if time = EndTimeA then EndOpen = Open ;

end;
 {不同顏色畫出 指定區間的成交量}
if time = Earlytime then plot2(EarlyVol,"EarlyVol",iff(EarlyClose >= OpenD(0),Yellow,White),Black,3);
if time = EndtimeB then plot3(EndVol, "EndVol",iff(CloseD(0) >= EndOpen,Yellow,White),Black,3);

讀者只要細心觀察 ,必定能找出獲利的開啟之鑰


7 留言:

傑克鵬 提到...

Thanks Wen and EasyTrader! 真的是很棒的文章‧
請問預估成交量的參數是如何統計的呢?另外在動能與價格變化的圖形中有多一條深藍色的線是什麼呢?謝謝!

EasyTrader 提到...

期貨參數與預估量統計是當沖一哥金湯尼教的,大盤預估量參數網路上找的到,圖一預估量的藍線是昨日量的0.3倍,用來觀察何時進場,寫交易策略用的~by EasyTrader

EasyTrader 提到...

圖2的兩條水平線分別是多空動能突破的試單點

Jonathan 提到...

動能程式碼有誤

EasyTrader 提到...

請Jonathan前輩指點,Thanks

devid 提到...

請問高低點畫線的程式碼可以提供給我練習參考嗎?謝謝 MAIL:devidlin@gmail.com

舒潔 提到...

開盤量與收盤量的觀察部分~可以告訴我要怎麼觀察嗎?感激不盡

張貼留言

如果有私人問題想請教,請透過網站右方『與站長聯絡』之表單,謝謝!

----------------------------------------------------------------------------------------------------
網站聲明(Disclaimer)
本教學網站內所提供之程式碼(包括函數、指標、訊號)屬開放程式碼,用意在於讓使用者學習程式語法之撰寫,使用者可以任意修改語法內容並調整參數。本網站所有之內容(包括文章、影片、歷史紀錄、程式碼、教材)限用於個人學習使用,請勿轉寄、濫用,嚴禁私自串接帳戶交易。
-------------------------------------------------------------------------------------------------