2022年1月27日 星期四

vba:判斷行位置

code:

使用範例:

'先設定需要用的表頭資訊

tag=Array("代號", "日期", "外資張數", "外資D3D", "外資D5D") 

'透過副程式取的需要使用的表頭英文字母代號

ROW_OUT = ROWS_CHECK("sheet1", 5) 

ROW_OUT = Split(ROW_OUT, "@")

SHEET_NAME = "sheet1"

'寫入表頭資料

Sheets(SHEET_NAME).Range(ROW_OUT(0) & 1 & ":" & ROW_OUT(1) & 1) = tag

                             

2022年1月25日 星期二

股票:8大行庫紀錄(2022.01.26)

2022.01.26紀錄


代號:
合庫 5880
土銀 5857
台銀 5858
台企銀 2834
彰銀 2801
第一金 2892
兆豐銀 2886
華南永昌6009

2022年1月21日 星期五

產業別當沖比2022/01/03~2022/01/21

單純資料分享,不作為投資理財參考

整理資料下載

資料分類:根據公開觀測站營收資料的產業分類 

藍色是交易張數;紅色是當沖張數

股票:外資投信持股變化(2022/01/22)

單純資料分享,不作為投資理財參考

資料分類:根據公開觀測站營收資料的產業分類

資料下載

看到新聞,手癢就整理了一下光電業








2022年1月16日 星期日

學習是興趣,工作看福報

 不知不覺當中,職場來到11個年頭,這中間經過很多同事,唯一剩下我還在工作崗位上,前段時間與老師交流中,聊到"學習是興趣 工作看福報"這件事,現在回想讓小編有感而發留作紀錄。

學習,這兩個字筆畫真的也不少,我國文不好也不知道怎解說學習的定義,但小編自己對學習的一種解讀是興趣+內斂+深化=工具,當可以內斂變成思考的一環一種思維時,學著學著越來越有成就,成就觸動深化,慢慢就是屬於你的工具跟一種思維思考模式,或許過程中你會有臭味相投的同好可以交流,也或許沒有,但工具的價值是市場需求來決定的,所以我在這裡,是我對學習是興趣,作一個解讀,如果我說如果,但可能很多人認為"嘴砲",畢竟我是自己的過程分享,不談對錯,如果你的興趣是市場上最夯最需求的,舉個例子如果有一天電動車有一定市場份額了,然後你對電池超有興趣,甚至內斂到知道電池運作原理、深化到可以做異常排除,甚至這份熱忱讓你變成工具一樣應用了,應該很多人找你修電池;

再舉另外一個例子,很生活化!!就是做麵包,以前做麵包利潤很固定(我強調我沒瞧不起歐),所以一條街大概就一間麵包店,隨著國內可愛的諸多太太以及烘培風的盛起,各大縣市無不到處是烘培課,烘培教室的開幕,自然對烘培老師有一定需求,這樣的需求下,如果剛剛好你已是烘培興趣出發的高帽子老師(指有經驗),那這份興趣帶來的價值自然不低;

說這些,不是品頭論足各行各業,而是出了社會,開始工作時,不知不覺會有一種似乎有機會,我也不差啊,但怎都沒人欣賞我,都沒人找我面試的挫折感,隨著時間增加,福報與自己的選擇造化,也真的很多佔一定比例。

以前考聯考,上課的老師說,你要做好自己能掌握的準備,但仍有30~40%是未定的,我無法解釋。

說這樣多廢話,小編僅能說:

當有興趣時,能好好學習要珍惜,更別輕言放棄,更不要因為朋友一句話,自我受傷,路要走完,才有結果。工作呢!!!如果你錄取了主管都不欣賞你的職務,薪水再多,似乎時間也會把你消磨殆盡,那生活的空白更不是薪水能補償的(當然每個人都有生活壓力)。

這篇我會放著記錄著,除了提醒自己,也希望有一天當有人看見時,能有所幫助。



2022年1月14日 星期五

股票:外資投信持股變化(2022/01/15)

 單純資料分享,不作為投資理財參考

資料分類:根據公開觀測站營收資料的產業分類

資料下載



股票:集保庫存變化(2022/01/15)

單純資料分享,不作為投資理財參考

整理資料下載

資料分類:根據公開觀測站營收資料的產業分類



產業別當沖比2022/01/03~2022/01/15

單純資料分享,不作為投資理財參考

整理資料下載

資料分類:根據公開觀測站營收資料的產業分類 

藍色是交易張數;紅色是當沖張數




2022年1月11日 星期二

造紙:營收年增率走勢圖(109/12~120/12)

  分類:造紙工業 

僅供參考,不作為投資理財依據。




亂設條件:營收年增率走勢圖(109/12~120/12)

 分類:年增率至少30期年增率是正數+最新一期營收年增率+營業利益率>10+年增率下滑的刪除。

僅供參考,不作為投資理財依據。




MCU:營收年增率走勢圖(109/12~120/12)

 分類:MCU+看新聞刪刪減減。

僅供參考,不作為投資理財依據。




外資+投信:營收年增率走勢圖(109/12~120/12;2021/1/12)

 分類:外資+投信5天持股買比賣多的個股營收走勢圖






塑膠工業:營收年增率走勢圖(109/12~120/12)

 分類:塑膠工業 +小編喜好刪刪減減。

僅供參考,不作為投資理財依據。



航空:營收年增率走勢圖(109/12~120/12)

 分類:航空 +小編喜好刪刪減減。

僅供參考,不作為投資理財依據。



封測:營收年增率走勢圖(109/12~120/12)

 分類:封測 +小編喜好刪刪減減。

僅供參考,不作為投資理財依據。 


股票:產業別營收年增率走勢圖(109/12~120/12)

分類:按照公開觀測站各產業別營收,整理109/12~120/12 營收年增率走勢。

僅供參考,不作為投資理財依據。 

資料下載

延伸:封測航空塑膠工業外資+投信MCU條件亂設結果

2022年1月8日 星期六

營收(2021/12)

不作為投資理財參考

整理資料下載

資料分類:根據公開觀測站營收資料的產業分類 

已更新完畢。





產業別當沖比2022/01/03~2022/01/07

單純資料分享,不作為投資理財參考

整理資料下載

資料分類:根據公開觀測站營收資料的產業分類 

藍色是交易張數;紅色是當沖張數

股票:集保庫存變化(2022/01/07)


單純資料分享,不作為投資理財參考

整理資料下載

資料分類:根據公開觀測站營收資料的產業分類



股票:外資投信持股變化(2022/01/07)

單純資料分享,不作為投資理財參考

資料下載





 

2022年1月6日 星期四

VBA:如何畫出股票圖( k線圖、走勢圖) +交易量(錄製巨集教學+VBA教學版+VBA動態資料版)

單純VBA畫圖入門教學傳送門

股票分析很多,最基本的是畫出"K線圖"。

但怎樣用畫股票圖呢!!小編整理四套從初到進階等教學,希望有幫忙到。

首先請自行先準備資料,不管你資料出處是那裏來的,因為繪製股票圖需要最基本需要開盤、最高、最低與收盤等這幾個項目的資料,當然有日期更好,筆數資料不限,至於怎樣取得股票資料這邊小編另篇在討論瞜。

圖1.示意圖(不含日期)

圖2.示意圖(含日期)
先以錄製巨集方式試做一個看看,參GIF動畫。

圖3.GIF檔

流程:選取資料>點選插入圖表>選股票圖>產生>小編手動移動圖形位置
以下參VBA CODE長的如何...

節錄如下:

Sub 巨集3()

    Range("A1:E19").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlStockOHLC
    ActiveChart.SetSourceData SOURCE:=Range("還原股價!$A$1:$E$19")
    ActiveSheet.Shapes("圖表 8").IncrementLeft -456.4285826772
    ActiveSheet.Shapes("圖表 8").IncrementTop -12.1428346457
    
End Sub

重點說明: 
Shapes.AddChart. 新增圖表
ChartType 圖表種類
SOURCE:= 設定資料來源
ActiveSheet.Shapes("圖表 8") 中的圖表8會因為工作表內的圖表數量有差異。 

缺點:每次都要調整資料來源範圍,跟無法控制圖形大小跟位置。

VBA教學版一:
步驟:
1.預先資料收集
2.作一個activeX按鈕插入以下CODE內容

 

整體來說長的跟錄製沒兩樣。不過小編手動增加標籤部分。 
 
Private Sub CommandButton1_Click()

        Set myChart = ActiveSheet.ChartObjects.Add(20, 100, 600, 200)   '位置大小設定
      
        Set myRange = ActiveSheet.Range("A1:E100")    '資料來原設定    

  With myChart.Chart
    
        .SetSourceData SOURCE:=myRange, PlotBy:=xlColumns 
         
        .ChartType = xlStockOHLC
        
        '標籤設定

        .SeriesCollection(1).Name = "OPEN"
        
        .SeriesCollection(2).Name = "HIGH"
        
        .SeriesCollection(3).Name = "LOW"

        .SeriesCollection(4).Name = "CLOSE"

        .Axes(xlCategory, xlPrimary).HasTitle = True
        
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "日期"
        
        .Axes(xlValue, xlPrimary).HasTitle = True
        
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "1101走勢"
                   
    End With

End Sub

VBA教學版二:
改進資料動態增加或異動情況時,可以考慮做以下調整:

原:
    Set myRange = ActiveSheet.Range("A1:E100")    '資料來原設定    

異動:

 N = Application.CountA(ActiveSheet.Range("A:A"))

Set myRange = ActiveSheet.Range("A1:E" & N)

透過application.countx來自動取得筆數,
但在畫圖上的建議,建議別超過250筆,阿無圖很密集。

VBA教學版三(動態版):

主要透過ScrollBar1物件來控制目前圖形顯示資料的區間控制。

步驟:
1.增加一個ScrollBar1的activeX物件。
2.增加一個ScrollBar1_Change的事件程序,並插入code如下:

Private Sub ScrollBar1_Change()

ScrollBar1.Min = 2

ScrollBar1.Max = Application.CountA(ActiveSheet.Range("A:A"))

If ScrollBar1.Value < 100 Then

    ScrollBar1.Value = 102

End If

Debug.Print ScrollBar1.Value

If  IsObject(myRange) = False Then

     Set myRange = ActiveSheet.Range("A" & ScrollBar1.Value - 100 & ":E" & ScrollBar1.Value)
     
     Set myRange_MAX_MIN = ActiveSheet.Range("B" & ScrollBar1.Value - 100 & ":E" & ScrollBar1.Value)
        
    With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart
    
        .SetSourceData SOURCE:=myRange, PlotBy:=xlColumns
        
        .SeriesCollection(1).Name = "OPEN"
        
        .SeriesCollection(2).Name = "HIGH"
        
        .SeriesCollection(3).Name = "LOW"

        .SeriesCollection(4).Name = "CLOSE"
        
    End With
    
 '設定資料(xlValue)座標軸格式的尺規最大最小值
    With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart.Axes(xlValue)         

             .MinimumScale = Application.Min(myRange_MAX_MIN) * 0.9
             
              Debug.Print .MinimumScale

             .MaximumScale = Application.Max(myRange_MAX_MIN) * 1.1
             
              Debug.Print .MaximumScale

    End With
             
End If

End Sub
操作動畫:
圖4.動態版操作

缺點是似乎尺規沒有跟著一起修正,那最後再加上控制y軸尺規的控制,這樣圖形顯示的走勢比例比較好掌握。

VBA教學版四(動態資料版+尺規自動調整+交易量):

另外作一個按鈕(CommandButton2_Click),插入以下代碼

Private Sub CommandButton2_Click()


        Set myChart = ActiveSheet.ChartObjects.Add(20, 100, 600, 200)
        
        Set myRange = ActiveSheet.Range("A1:E100")
        
    With myChart.Chart
    
        .SetSourceData SOURCE:=myRange, PlotBy:=xlColumns
         
        .ChartType = xlStockOHLC
        
        .HasTitle = False
                                                                                            
         .Legend.Position = xlLegendPositionTop
        
        .SeriesCollection(1).Name = "OPEN"
        
        .SeriesCollection(2).Name = "HIGH"
        
        .SeriesCollection(3).Name = "LOW"

        .SeriesCollection(4).Name = "CLOSE"

        .Axes(xlCategory, xlPrimary).HasTitle = True
        
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "日期"
        
        .Axes(xlValue, xlPrimary).HasTitle = True
        
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "1101走勢"
        
                    With .ChartGroups(1)
                    
                         .UpBars.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
                         
                         .DownBars.Format.Fill.ForeColor.RGB = RGB(61, 145, 64)
                         
                    End With
        
'新增資料到圖形中
        .SeriesCollection.NewSeries
        
        .SeriesCollection(5).Values = ActiveSheet.Range("f2:f100")
                                                        
        .SeriesCollection(5).ChartType = xlColumnClustered
        
        .SeriesCollection(5).AxisGroup = xlSecondary
        
        .SeriesCollection(5).Name = "VOL(副)"
        
        .SeriesCollection(5).XValues = ActiveSheet.Range("a2:a100")
        
        .Axes(xlCategory).CategoryType = xlCategoryScale
            
       
    End With
                
End Sub

在插入一個卷軸物件名稱為ScrollBar2 插入以下code:

Private Sub ScrollBar2_Change()

ScrollBar1.Min = 2

ScrollBar1.Max = Application.CountA(ActiveSheet.Range("A:A"))

If ScrollBar1.Value < 100 Then

    ScrollBar1.Value = 102

End If

Debug.Print ScrollBar1.Value

If IsObject(myRange) = False Then

     Set myRange = ActiveSheet.Range("A" & ScrollBar1.Value - 100 & ":E" & ScrollBar1.Value)
     
     Set myRange_MAX_MIN = ActiveSheet.Range("B" & ScrollBar1.Value - 100 & ":E" & ScrollBar1.Value)
    
        
        
    With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart
    
        .SetSourceData SOURCE:=myRange, PlotBy:=xlColumns
        
        .SeriesCollection(1).Name = "OPEN"
        
        .SeriesCollection(2).Name = "HIGH"
        
        .SeriesCollection(3).Name = "LOW"

        .SeriesCollection(4).Name = "CLOSE"
        
        .SeriesCollection.NewSeries
        
        .SeriesCollection(5).Values = ActiveSheet.Range("f" & ScrollBar1.Value - 100 & ":f" & ScrollBar1.Value)
                                                        
        .SeriesCollection(5).ChartType = xlColumnClustered
        
        .SeriesCollection(5).AxisGroup = xlSecondary
        
        .SeriesCollection(5).Name = "VOL(副)"
        
        .SeriesCollection(5).XValues = ActiveSheet.Range("a" & ScrollBar1.Value - 100 & ":a" & ScrollBar1.Value)
        
    End With
      '設定資料(xlValue)座標軸格式的尺規最大最小值
    With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Chart.Axes(xlValue)        

             .MinimumScale = Application.Min(myRange_MAX_MIN) * 0.9
             
              Debug.Print .MinimumScale

             .MaximumScale = Application.Max(myRange_MAX_MIN) * 1.1
             
              Debug.Print .MaximumScale

    End With
End If

End Sub

操作動畫:
圖5.動態資料版+尺規自動調整+交易量





我的雷達:20240506

自己紀錄給自己看。 在大跌1400多點後,拉回中。 雷達顯示遠離風險區但離前一個底(大盤高點也不遠了)