喜歡攝影的我,喜歡到處拍拍照,吃點當地的特色食物。 跟朋友聊天之餘,推薦我寫成網誌跟大家分享。 沒外出的日子,喜歡在家當隱性宅,寫程式看看書,追劇。 希望我的手札文,不會讓你翻桌 XD
2021年3月28日 星期日
2021年3月27日 星期六
顯卡挖礦之亂:你是否真的評估風險了
小編以朋友用的顯卡3060來完成這一篇文章內的所有成本與收入計算。
p.s這一篇在3/28號完成,所以數字都是當時的數字做估計。
3060來試算成本,以顯卡約2萬買6張約要12萬,功耗約115瓦,做成本計算,以每月30天做計算比較好算為前提,不算主機、1000W電源供應器、礦卡架與顯卡外接的轉接座,先來計算電費:顯卡24小時開機*30天*24小時,電費等於6卡*30天*24小時*115W=496800瓦.....😖
參考電費:
換算算力效益的網址:https://www.nicehash.com/profitability-calculator/amd-rx-5700-xt-8gb
P.S小編是在3/28日做查詢的,若有任何資料異動,別炮我。
至於未來6個月走勢,小編不知道會怎樣發展,僅在此表示此一風險而以,但是!我們可以模擬阿例如BTC跌20%,則表示每月收入22757.80X0.8=18206.24,18206.24X12=21.8萬元,21.8萬-13萬7=8萬1,白話意思就是挖一年等於每約多了6750元(幾個月能賺回一張顯卡自己算搂)
2021年3月22日 星期一
VBA:UNION (聯集儲存格)
2021年3月20日 星期六
VBA入門實作基礎篇:抓財務比率季表 +進階篩選,
聲明:請大家尊重網路資源,勿濫用內文教學內容。
這篇可以說是以前作品的延伸版,前些日子有網友在以前的部落格留言,問關於這方面問題,所以寫一寫當作分享跟紀錄。
架構:
要設定3頁,3個ACRIVEX命令按鈕。
第一頁名稱隨意(可以參考圖1做航別設定),先設定1個ACRIVEX命令按鈕。
之後設定第二頁工作表為TEMP,第三頁工作表為總表。
大概參圖3這樣子
第二頁設定2個按鈕並設定欄位名稱,如圖4。
Sub 財務比率季表_DOWNLOAD() '財務比率季表 | |
Dim DATA(20, 7) As Variant | |
Add = 0 | |
Sheets("TEMP").Range("a:I").Clear '.Clear 'Range("a" & I) | |
Sheets("總表").Range("a5:J2000").Clear | |
Sheets("總表").Range("2:2").Clear | |
' If (Format(Now(), "0") - DA) <= 7 Then | |
For i = 2 To 20 Step 1 | |
STOCK_ID = ActiveSheet.Range("a" & i) | |
If STOCK_ID <> "" Then | |
'財務比率季表 | |
head = "" '網站路徑自設 | |
STOCK_ID = ActiveSheet.Range("a" & i) | |
'htm = ".djhtm" | |
財務比率季表 = head & STOCK_ID '& htm | |
Call IFRS財報("TEMP", 財務比率季表) | |
DATA(i - 2, 0) = STOCK_ID | |
DATA(i - 2, 1) = Sheets("TEMP").Range("B" & 12) '營業利益率 12 | |
DATA(i - 2, 2) = Sheets("TEMP").Range("B" & 13) '稅前淨利率 13 | |
DATA(i - 2, 3) = Sheets("TEMP").Range("B" & 14) '稅後淨利率 14 | |
DATA(i - 2, 4) = Sheets("TEMP").Range("B" & 50) '流動比率 50 | |
DATA(i - 2, 5) = Sheets("TEMP").Range("B" & 51) '速動比率 51 | |
DATA(i - 2, 6) = Sheets("TEMP").Range("B" & 53) '負債比率% 53 | |
DATA(i - 2, 7) = Sheets("TEMP").Range("B" & 62) '存貨週轉率(次) 62 | |
Add = Add + 1 | |
End If | |
Next i | |
Sheets("總表").Range("a5:H" & Add + 6) = DATA | |
MsgBox "OK" | |
End Sub |
Sub IFRS財報(SHEET_NAME, E) '針對IFRS版財報新增的模組 | |
On Error GoTo LINE1: | |
Dim web, Url, webdata | |
Sheets(SHEET_NAME).Cells.Clear '清除之前資料 | |
Url = E | |
Set web = CreateObject("Microsoft.XMLHTTP") | |
web.Open "get", Url, False | |
web.send | |
webdata = Split(web.responsetext, vbLf) | |
b = Filter(webdata, "個股代碼錯誤") | |
bv = Filter(webdata, "t4t1") | |
If UBound(bv) > 0 Then | |
ReDim S_DATA(UBound(bv) * 10, 8) As Variant | |
End If | |
A = 0 | |
If UBound(b) < 0 Then | |
For i = 0 To UBound(webdata) - 1 Step 1 | |
If InStr(webdata(i), "<td class=" & Chr(34) & "t2" & Chr(34) & ">") > 0 Then | |
item1 = LTrim(webdata(i)) | |
'item1 = Split(item1, "</td>") | |
For S = 0 To 9 Step 1 | |
If Len(webdata(i + S)) < 30 And Len(webdata(i + S)) > 6 Then | |
n2 = Split(webdata(i + S), "</td>") | |
n3 = 1 | |
If UBound(n2) > 0 Then | |
X = Len(n2(0)) | |
For v = 0 To X Step 1 | |
A1 = Mid(n2(0), n3, 1) | |
n3 = n3 + 1 | |
If A1 = ">" Then | |
S_DATA(A, S) = Mid(n2(0), n3, X - n3 + 1) | |
webdata(i + S) = "" | |
Exit For | |
End If | |
Next v | |
End If | |
End If | |
Next S | |
A = A + 1 | |
End If | |
If InStr(webdata(i), "t4t1") > 0 And InStr(webdata(i + 1), "t3n1") > 0 Then | |
item1 = LTrim(webdata(i)) | |
item1 = Split(item1, "</td>") | |
If UBound(item1) >= 2 Then | |
n3 = 1 | |
X = Len(item1(0)) | |
For v = 0 To X Step 1 | |
A1 = Mid(item1(0), n3, 1) | |
n3 = n3 + 1 | |
If A1 = ">" Then | |
S_DATA(A, 0) = Mid(item1(0), n3, X - n3 + 1) | |
Exit For | |
End If | |
Next v | |
n3 = 1 | |
X = Len(item1(1)) | |
For v = 0 To X Step 1 | |
A1 = Mid(item1(1), n3, 1) | |
n3 = n3 + 1 | |
If A1 = ">" Then | |
S_DATA(A, 1) = Mid(item1(1), n3, X - n3 + 1) | |
Exit For | |
End If | |
Next v | |
End If | |
For S = 0 To 8 Step 1 | |
n2 = Split(webdata(i + S), "</td>") | |
n3 = 1 | |
If UBound(n2) > 0 Then | |
X = Len(n2(0)) | |
For v = 0 To X Step 1 | |
A1 = Mid(n2(0), n3, 1) | |
n3 = n3 + 1 | |
If A1 = ">" Then | |
S_DATA(A, S) = Mid(n2(0), n3, X - n3 + 1) | |
Exit For | |
End If | |
Next v | |
End If | |
' End If | |
Next S | |
webdata(i) = "" | |
A = A + 1 | |
End If | |
If InStr(webdata(i), "t4t1") > 0 And InStr(webdata(i + 1), "t3r1") > 0 Then | |
item1 = LTrim(webdata(i)) | |
item1 = Split(item1, "</td>") | |
If UBound(item1) >= 2 Then | |
n3 = 1 | |
X = Len(item1(0)) | |
For v = 0 To X Step 1 | |
A1 = Mid(item1(0), n3, 1) | |
n3 = n3 + 1 | |
If A1 = ">" Then | |
S_DATA(A, 0) = Mid(item1(0), n3, X - n3 + 1) | |
Exit For | |
End If | |
Next v | |
n3 = 1 | |
X = Len(item1(1)) | |
For v = 0 To X Step 1 | |
A1 = Mid(item1(1), n3, 1) | |
n3 = n3 + 1 | |
If A1 = ">" Then | |
S_DATA(A, 1) = Mid(item1(1), n3, X - n3 + 1) | |
Exit For | |
End If | |
Next v | |
End If | |
For S = 0 To 8 Step 1 | |
n2 = Split(webdata(i + S), "</td>") | |
n3 = 1 | |
If UBound(n2) > 0 Then | |
X = Len(n2(0)) | |
For v = 0 To X Step 1 | |
A1 = Mid(n2(0), n3, 1) | |
n3 = n3 + 1 | |
If A1 = ">" Then | |
S_DATA(A, S) = Mid(n2(0), n3, X - n3 + 1) | |
Exit For | |
End If | |
Next v | |
End If | |
' End If | |
Next S | |
webdata(i) = "" | |
A = A + 1 | |
End If | |
Next i | |
Else | |
End If | |
If UBound(b) < 0 Then | |
Sheets(SHEET_NAME).Range("a3:i" & A + 2) = S_DATA | |
Sheets(SHEET_NAME).Range("a3:i" & A + 2).Replace "N/A", "-" | |
Else | |
Sheets("工作表1").Range("a1") = SHEET_NAME & ":" | |
Sheets("工作表1").Range("b1") = "個股代碼錯誤" | |
End If | |
Exit Sub | |
LINE1: | |
End Sub |
Sub C_2()'進階篩選 | |
Dim myRange1 As Range, myRange2 As Range, myRange3 As Range, myRange4 As Range, myCell As Range, myCell2 As Range | |
Set myRange1 = Range("A5:I2000").CurrentRegion '指定資料區域 | |
Set myRange2 = Range("b1:H2") '條件區域 | |
' If (Format(Now(), "0") - DA) <= 7 Then | |
For Each myCell In myRange2.Cells | |
If myCell.Value <> "" Then | |
A = myCell.Address | |
X = Split(A, "$") | |
If ActiveSheet.Range(X(1) & X(2) + 1) <> "" Then | |
If TEX <> "" Then | |
TEX = TEX & "," & X(1) & X(2) & ":" & X(1) & X(2) + 1 | |
TEX1 = TEX1 + 1 | |
End If | |
If TEX = "" Then | |
TEX = X(1) & X(2) & ":" & X(1) & X(2) + 1 | |
TEX1 = TEX1 + 1 | |
End If | |
End If | |
End If | |
Next | |
Set myRange3 = Range(TEX) | |
g = 0 | |
For Each myCell In myRange3.Cells | |
ActiveSheet.Cells(1 + h, 50 + g) = myCell | |
h = h + 1 | |
If h = 2 Then | |
g = g + 1 | |
h = 0 | |
End If | |
Next | |
Set myRange4 = Range(ActiveSheet.Cells(1, 50), ActiveSheet.Cells(2, 50 + TEX1 - 1)) | |
myRange1.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=myRange4 | |
' For Each myCell In myRange4.Cells | |
' myCell.Clear '刪除條件區域 | |
' Next | |
Set myRange1 = Nothing | |
Set myRange2 = Nothing | |
End Sub | |
Sub C_3()'進階篩選與復原 | |
Dim ws As Worksheet | |
Set ws = ThisWorkbook.ActiveSheet | |
With ws | |
If .FilterMode Then | |
.ShowAllData | |
End If | |
End With | |
Set ws = Nothing | |
End Sub |
2021年3月18日 星期四
VBA:計算月均價與期底
是否跟小編一樣,有計算月均價的需要,最近小編在計算某貴金屬的月均價,本來想用EXCEL的AVERAGE函數拉一下就好,但似乎期間很阿雜,就寫了個VBA函數來"處理"
VBA CODE:
月均價:
Sub AVERAGE_BY_MONTHLY(MONTHLY, DATA, WRITTEN1, WRITTEN2) '月平均,a是關鍵字 a行是資料b行是資料回寫在c跟d | |
' Turn off Excel functionality to improve performance. | |
Application.ScreenUpdating = False | |
Application.DisplayStatusBar = False | |
Application.Calculation = xlCalculationManual | |
Application.EnableEvents = False | |
' Note: this is a sheet-level setting. | |
' ActiveSheet.DisplayPageBreaks = False | |
s1 = ActiveSheet.Range("A20000").End(xlUp).Row | |
a = "" | |
For i = 2 To s1 Step 1 | |
line_A: | |
If a = "" Then | |
a = Mid(ActiveSheet.Range(MONTHLY & i), 1, InStrRev(ActiveSheet.Range(MONTHLY & i), "/") - 1) | |
Total = ActiveSheet.Range(DATA & i) | |
total_count = 1 | |
a_row = i | |
Else | |
If InStr(ActiveSheet.Range(MONTHLY & i), a) > 0 Then | |
Total = Total + ActiveSheet.Range(DATA & i) | |
total_count = total_count + 1 | |
Else | |
ActiveSheet.Range(WRITTEN1 & a_row).NumberFormatLocal = "@" | |
ActiveSheet.Range(WRITTEN1 & a_row) = a | |
ActiveSheet.Range(WRITTEN2 & a_row) = Total / total_count | |
a = "" | |
GoTo line_A | |
End If | |
End If | |
Next i | |
Application.ScreenUpdating = True | |
Application.DisplayStatusBar = True | |
Application.Calculation = xlCalculationAutomatic | |
Application.EnableEvents = True | |
End Sub | |
Sub AVERAGE_BY_MONTHLY_NEW(MONTHLY, DATA, WRITTEN1, WRITTEN2, WRITTEN3, WRITTEN4) '月平均,a是關鍵字 a行是資料b行是資料回寫在c跟d ,期底是 , WRITTEN3, WRITTEN4 | |
' Turn off Excel functionality to improve performance. | |
Application.ScreenUpdating = False | |
Application.DisplayStatusBar = False | |
Application.Calculation = xlCalculationManual | |
Application.EnableEvents = False | |
' Note: this is a sheet-level setting. | |
' ActiveSheet.DisplayPageBreaks = False | |
s1 = ActiveSheet.Range("A20000").End(xlUp).Row | |
a = "" | |
For i = 2 To s1 Step 1 | |
line_A: | |
If a = "" Then | |
a = Mid(ActiveSheet.Range(MONTHLY & i), 1, InStrRev(ActiveSheet.Range(MONTHLY & i), "/") - 1) | |
Total = ActiveSheet.Range(DATA & i) | |
Total_END = Total | |
total_count = 1 | |
a_row = i | |
Else | |
If InStr(ActiveSheet.Range(MONTHLY & i), a) > 0 Then | |
Total = Total + ActiveSheet.Range(DATA & i) | |
total_count = total_count + 1 | |
Else | |
ActiveSheet.Range(WRITTEN1 & a_row).NumberFormatLocal = "@" | |
ActiveSheet.Range(WRITTEN1 & a_row) = a | |
ActiveSheet.Range(WRITTEN2 & a_row) = Total / total_count | |
ActiveSheet.Range(WRITTEN3 & a_row).NumberFormatLocal = "@" | |
ActiveSheet.Range(WRITTEN3 & a_row) = ActiveSheet.Range(MONTHLY & a_row) | |
ActiveSheet.Range(WRITTEN4 & a_row) = Total_END | |
a = "" | |
GoTo line_A | |
End If | |
End If | |
Next i | |
Application.ScreenUpdating = True | |
Application.DisplayStatusBar = True | |
Application.Calculation = xlCalculationAutomatic | |
Application.EnableEvents = True | |
End Sub |
2021年3月11日 星期四
股票:天真的三段式預測法
三段式預測法:
2021年3月10日 星期三
股票:110.2 連6個月營收年增率轉正
如題,這是多年前小編自己用VBA寫的程式,已使用多年,用來協助小編追縱營收年增率的小工具,小編這個小工具可以做單月、三個月與6個月的自動分析,但還是有美中不足要改進的地方;就是沒法掌握營收的強度,簡單整理如下圖1,當分享。
2021年3月8日 星期一
股票:eps預估/預測
根據基本面、每月營收,小編自己設計了一套EPS預測系統,紀錄跟比較一下準確度。
雖然GOOGLE可以找到一堆方法,甚至教科書也有寫,所以我就不在寫一堆公式說明怎計算了;小編想法是可以分成3段預測,來做評估,分3段的概念,概念說明還沒整理好,先以紀錄為主。
2021年3月7日 星期日
股票:建構股票系統
自己最近也在思考用簡單的概念表達自己的股票收集資料範圍,就整理成如下圖了
指數變化(2025.03.20)
指數變化(2025.03.20) 上周焦點: 美國紐約州製造業指數 -20 美國企業庫存月增率 +0.3% 美國零售額月增率 +0.1% FED 不升息 川普 名句:對等關稅是具備彈性的 本周愛看: 美國消費者信心指數 3/25 美國耐久財訂單月增率 3/26 ...

-
寫給自己速查 垂直屬性:HorizontalAlignment 水平屬性:VerticalAlignment 置中:xlCenter 靠左靠右:XLLEFT、XLRIGHT Sheets("工作表1").Range("m2").Ve...
-
美國實質可支配所得 利率與黃金 消費者信心 利率PK DW PK FED紐約分行 上海貨櫃指數 BDI CRB 美國m 1 m2 s&p 美國 非農 美國 非農就業職務空缺率 美國股市 行事曆 fomc 會議紀要與開會時間 全球股市行事曆 全球股市 巴菲特指數 外...
-
整理資料時,不免要判斷資料數量,在判斷資料時,資料有時會有不連續與連續資料,這時候判斷方式不盡相同 連續資料時: a行於65000儲存格以前的最後列,有點饒舌;應該是這樣看,從a65000往上找(xlup),找到的第一個儲存格,也相對於是a行在65000列之前最後一列。 END...