2021年4月27日 星期二

VBA、股票:股票走勢圖,繪製N字折線圖(N型走勢)

花了一段時間,終於使用excel vba開發出來了,希望對自己看盤有幫助,後續配合自動股價更新等功能做及時盤中走勢圖繪製與強弱判斷,加油了。

為何用EXCEL VBA?

因為卷商軟體已有設計好的端口,不利用一下怎可能!!!

其實不透過卷商軟體也很其他方法可以做到看盤資料來源的掌握,但小編很少用卷商軟體的端口,當作練兵摟。

N字走勢判斷是好是壞???:

其實小篇我也正在體驗中,翻了很多網頁說明等等,感覺有趣,就花不少時間把它弄出來了,當玩玩。

動畫GIF



圖1.N字折線圖

圖2.自動轉折判斷
圖3.上下震盪判斷

圖4.底部頭部偵測與反轉繪製

這天可愛的朋友問我,有那些幫助?
ANS:
參考元大RTD,類似這樣的卷商提供的EXCEL資料端口服務,設定好後,讓VBA程式幫你追盤中動態的開、高、低、收等變化,而且可以同時多檔直接監控,配合之前開發的LINE即時通知功能,不是省事多(難道上班盯著手機) Orz。
其實很多卷商軟體都有提供excel端口作資料對接歐,如日盛DDE等。

續問:你測試多少檔股票,以及運算時間??
ANS:目前同時測試25檔股票一起上線,在關閉畫圖功能,全數以資料直接計算高點、反折點與最低點等交互演算法,25檔當天所有股票動態資料,約1前後八,還可以抓出高點、反折點與最低點等三點變化做趨勢預測

最後天真的問我為何叫做N字:GOOGLE結果

有一種原來阿宅容易被埋沒是有原因的 XD

更新:
盤中動態更新走勢圖+line notify完成
😀😀








2021年4月20日 星期二

VBA:SETFOCUS 物件設定

 不知道大家是否有與我相同的困擾,就是設定了也不會做動😖😖

例如在表單上設置了一個COMBOBOX的物件也設定了SETFOCUS,但沒反應就是沒反應!!!!

用UserForm1.ComboBox1.SetFocus 無效 XD

在拜讀此篇Re-Focusing on an Excel Userform ComboBox討論後,以以下CODE 測試成功:

with UserForm1.ComboBox1 

    .Visible = False '設定為不可使用

    .Visible = True '設定為可使用

    .setfocus '設定"閃爍 OR 稱焦點也行

end with

在每一次載入表單時,可以將控制權丟到COMBOBOX上或是TEXTBOX上也行,倘若真的不行,還有另外一段CODE,我幫忙補上中文註解:

Sub Focus_ControlOfUserForm(ByRef Obj As Object) 'from the Userform, call Focus_ControlOfUserForm(Me)

Dim ctl As Control

With Obj

    Set ctl = .ActiveControl '設定物件別

    If TypeName(ctl) = "MultiPage" Or TypeName(ctl) = "Frame" Then '判斷物件種類

        Set ctl = ctl.SelectedItem.ActiveControl.Name '重新設定物件別

    End If


    With ctl

        Dim Af As Boolean

        With Application

            Af = .ScreenUpdating

            .ScreenUpdating = False

        End With

        '.SetFocus

        .Visible = False

        .Visible = True

        .SetFocus 

        If Af Then Application.ScreenUpdating = True '開啟螢幕更新

    End With

End With

End Sub


簡單說明一下,這個副程式透過物件別判斷後,做焦點設定,因為特定物件不支援"焦點";另外關鍵在Application.ScreenUpdating這個控制上,因為有時候物件未自動更新導致的。




2021年4月16日 星期五

APPLICATION.MAX 陣列應用

excel內建函數,主要是用儲存格做使用,其實也是可以直接拿來在vba中做使用的,在vba使用中若能搭配陣列做使用,效率上更是更上一層樓,先簡單說明在vba中使用的語法

方法一:application.sum(儲存格)

方法二:Application.WorksheetFunction.sum(儲存格)

轉用陣列範例,目前以max舉例,excel內建函數眾多,未一一測試,在請見諒。

單列情況:

Dim a As Variant

a=activesheet.range("a1:a1000")

a_max=application.max(a)

單列情況對照:

Dim a As RANGE

SET a=activesheet.range("a1:a1000")

a_max=application.max(a)

多列多行:

Dim a As Variant

a=activesheet.range("a1:c1000")

a_max=application.max(a)



2021年4月13日 星期二

VBA:相關係數;Correl

相關係數

函數是Correl

先宣告TEMP1與TEMP2為儲存格物件

 Dim TEMP1, TEMP2 As Range

在設置對應的儲存格

 Set TEMP1 = ActiveSheet.Range("A2:A100")

 Set TEMP2 = ActiveSheet.Range("B2:B100")

透過 Application.WorksheetFunction.Correl(ARRAY1,ARRAY2)語法作函數呼叫。

 T = Application.WorksheetFunction.Correl(TEMP1, TEMP2)

DEBUG.? T

例子:

圖1.資料在A與B行

然後作一個ACTIVEX的命令按鈕後,放入CODE並執行後如下:




VBA:股價相關係數、判定係數分析自動化~我超愛看錄影帶(VHS)!!!

 好長一段時間前寫了迴歸,迴歸含有很多分析變數間關係的工具,如判定係數,相關係數等,剛好最近有機會接觸某國的某股票與台灣股票連動的情況,小編寫了個自動分析工具,一次處理判定係數與相關係數。

以前老師有教,收集到資料時,畫個圖,看一看,比較好懂走勢。簡單取兩張圖:

圖1.某台灣公司V.S某美國公司股價走勢(簡稱A V.S C)

圖2.某台灣公司V.S某美國公司股價走勢(簡稱B V.S C)

感覺起來,好像有曖昧關係歐。
使用資料分析手段來跑跑:
圖3.判定係數:A 跟 B V.S C

從26周來看半年內判定係數具備的解釋能力在B相當有限,進一步透過相關係數在驗證看看如下圖4。相關性不低說 XD

圖4.相關係數:A 跟 B V.S C

整理一下WIKI:
相關係數:用來衡量兩個變數相對於其相互獨立的距離
判定係數:在統計學中用於度量應變數的變異中可由自變數解釋部分所占的比例,以此來判斷迴歸模型的解釋力。對於簡單線性迴歸而言,判定係數為樣本相關係數的平方。

白話意思:眼睛看感覺之間會有C動A就動的錯覺。

以前念書時沒記錯,除非有工程技術支持不然一定先作相關係數在開始作迴歸相關分析,再作多變量等等分析(離題了);回到正題,根據上述分析重點說明,來開始自動化八

流程:
1.資料參考YAHOO FINANCEV下載的周股價
        說明:爬蟲技術太多了,能掌握資料就是好方法,小編這次透過WinHttp.WinHttpRequest.5.1的方式。
2.撰寫相關係數、判定係數分析VBA
        說明:相關係數在EXCEL中用Correl函數即可,判定係數可以參考小編另外一劣作。


圖5.自動抓取的資料.....應該沒有人看股價猜股號八

圖6.相關係數
說明:超過60%用*號標示跟顏色標示

圖7.判定係數

解讀:

小編以長期(208周)與短期(52周內),數量作解讀,如果長期都有超過60%甚至是80%以上,以及若同一時間大部分公司都產生相關,那就要好好研究一下了,畢竟巧合會發生但不能錯過,若時常發生也並非巧合一詞可以帶過的。

最後程式寫完,一邊吃個麥當勞看結果。

SUMMY:
在沒有工程技術支撐的領域中,如社會科學調查等等,相關係數、判定係數等,算很常見的方法歐,透過VBA技術整合爬蟲與資料分析,使其自動化,省下時間吃吃麥當勞看有無投資機會 哈,以上簡單分享。



KEYWORD:爬蟲、相關係數、判定係數、麥當勞優惠餐