新手小白今天要來講講大戶指標

所謂的 大戶指標呢~ 以我的看法來講
就是某個有錢人 在短時間內持續用一單吃多單的意思
當然~我們不可能真的去調查 是那個"有錢人"在做買賣
也不知道 他究竟吃了這麼多單 是想要幹嘛

但我們姑且假設 
當短時間內(例如 0.01秒) 有一個買單 成交多個賣單
那就表示 大戶站在買方
反之 
當短時間內(例如 0.01秒) 有一個賣單 成交多個買單
那就表示 大戶站在賣方

當然 我們不用只用一次那 0.01秒來判斷大戶的趨勢
可以觀察一段時間  (用累計的方式的方式) 來計算
一段時間內 大戶是站買方的比重比較多 還是賣方的比重比較多
而這個方式 我們就稱為大戶指標

要把以上的東西寫成程式 可能有點跳太快了
可以先練習寫成 pseudocode 和流程圖 來做為程式的前身
新手小白 最近買了 一個手繪版 開心的來試用一下XD

恩... 請原諒這字好像有點醜  不過應該還看得懂意思吧XD
 


新手小白補充一下DATA 的資料格式
這是TXT檔 

欄位分別為 時間/價錢/成交量/累積成交量/成交買筆數/成交賣筆數

那我們正式進入code的講解吧
我是以 九點前 當作我來判斷
大戶指標的趨勢 的時間


import time
import datetime
import numpy as np

MatchFile=open('D:\data\I020V2.txt')     ## 這邊是我放資料的路徑  如果大家要用記得改喔~~

##### 以下是資料處理
I020V2=[line.strip('\n').split(",") for line in MatchFile][1:]   #txt檔:\n換行 ,欄位分隔,

MatchFile.close()

for x in np.arange(len(I020V2)):
    I020V2[x][0]=I020V2[x][0].zfill(8)      ##  這邊蠻重要的  因為資料的時間為字串
                                                              ##  有的是8450501 (8點45分05.01秒)  => 7位數
                                                              ##   有的確是 12420501 (12點42分05.01秒) =>8位數
                                                              ##   所以我用 .zfill(8) 把它多塞個0進去 這樣位數才會相等

    I020V2[x][0]=I020V2[x][0][0:2]+':'+I020V2[x][0][2:4]+':'+I020V2[x][0][4:6]+'.'+I020V2[x][0][6:8]
                                                               ##  這邊是把字串做一些處理啦 例如 12420501 變成  12:45:05.01
                                                               ##  等等我們改資料格式的時候會比較方便

###### 資料處理結束    

##### 起始值
#定義判斷時間
trendTime=datetime.datetime.strptime('09:00:00.00',"%H:%M:%S.%f")
trend=0
#定義指標變數
lastBcnt=0
lastScnt=0
accB=0
accS=0


#取得成交資訊
for i in I020V2[1:len(I020V2)]:
# 將 字串改成 時間格式 與 整數格式
    MatchInfo=i
    MatchTime=datetime.datetime.strptime(MatchInfo[0],"%H:%M:%S.%f")
    MatchPrice=int(MatchInfo[1])
    MatchQty=int(MatchInfo[2])
    MatchBcnt=int(MatchInfo[4])
    MatchScnt=int(MatchInfo[5])

#### 計算指標
    if lastBcnt==0 and lastScnt==0:
        lastBcnt=MatchBcnt
        lastScnt=MatchScnt
    else:
        diffBcnt=MatchBcnt-lastBcnt
        diffScnt=MatchScnt-lastScnt
        if MatchQty>=10:
            if diffBcnt==1 and diffScnt>1:        ##一買單吃多賣單
                accB+=MatchQty                         ## accB 為累積大戶站買方的量

            elif diffScnt==1 and diffBcnt>1:     ##一賣單吃多買單
                accS+=MatchQty                           ## accB 為累積大戶站賣方的量

####趨勢判斷
    if MatchTime>=trendTime:                    ##  當九點到來時 看 accB 和 accS 誰大 趨勢就站哪邊囉~
        if accB>accS:
            trend+=1   
            print('Time',MatchInfo[0],"Trend",trend)      
        elif accB<accS:
            trend-=1 
            print('Time',MatchInfo[0],"Trend",trend)

        break


####修改變數
    lastBcnt=MatchBcnt
    lastScnt=MatchScnt


以下是跑出來的結果:


所以說 大戶是站在買方的~~ 至於策略要怎麼寫 
新手小白下次再分享囉!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

arrow
arrow

    Markjong001 發表在 痞客邦 留言(1) 人氣()