返回列表 上一主題 發帖

『已解決』dde tick資料轉換分鐘資料

『已解決』dde tick資料轉換分鐘資料

本帖最後由 ko310kmo 於 2011-5-10 23:06 編輯

我是使用永豐金的(e-leader)的DDE
我每日都會篩選出我今天想觀察的履約價,列在Sheet1
並以各別履約價命名新增工作表,記錄下它的即時資料

我現在的問題在於e-leader是dde是沒有日期欄位
我想在每個工作表中J欄分別紀錄下它們的即時資料
再J欄的隔壁想記下它們每分鐘的開、高、收、低、成交量
有想法,但卻不知該從何做起!!
請各位大大幫忙!! 謝謝
50 字節以內
不支持自定義 Discuz! 代碼

本帖最後由 ko310kmo 於 2011-5-6 10:34 編輯

回復 2# luhpro


『首先要抓取即時報價軟體內的資料,
最簡單的方式就是採用該軟體自帶的匯出到(或是拖曳到) Excel 表格中的功能,
匯出後在Excel表上的就是即時的報價資料, (記得開報價軟體)
如此每隔一段時間 Copy 一次到其他表格內應該就是你要的東西了.』

這裡我本來就已經做出來了,絕對不是偷懶沒想過,就貼上來問大家

我有搜尋過資料,但多半是一對一的(針對一檔股票or一檔期貨)
像我這種一對多個的好像比較少,而且我怕我的Calculate事件會負擔過大or發生錯亂
還有也比較少看到同時多個表格都進行即時價格持續記錄並抓出每一分鐘的開、高、收、低、成交量的寫法,
而且我還是小學生階級,無法開附件來看
所以才會貼出來請教大家的,謝謝。
50 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 ko310kmo 於 2011-5-6 10:36 編輯

回復 5# GBKEE


每一個工作表的歷史成交價是利用sheet1的變動來紀錄的,只要一變動就會往J欄一下向下紀錄,
我想從J欄的紀錄中抓出它每一分鐘的開、高、收、低、總量
(J欄是被動接受DDE傳來的值,每秒不停的接收,我想每到一分鐘就統計出它的開、高、收、低、成交量)
sheet2其實只是我篩選出履約價的工具,跟其他sheet沒有太大的關係
我是想在sheet1的Calculate事件寫入程式,以完成
同時多個表格都進行各自的歷史成交價持續記錄並抓出每一分鐘的開、高、收、低、成交量的寫法,
但怕會負擔過大or發生錯亂抓不到正真變動的儲存格
謝謝
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 7# GBKEE

大大不好意思
因為我是初學者,陣列還不是學的很好,所以有幾個問題想請教,
1.
『AR(1 To 6, 2 To R)』是(列,欄)的意思對吧!!
但不懂的是,為什麼欄要『2to R』
R = .[B1].End(xlDown).Row
是算新增了幾個工作表嗎?

2.
Cells(i, 3)是即時價格
為什麼『Cells(i, 3) > AR(3, i)』就可以知道它是這一分鐘內的最高價??

3.『Application.Index(Application.Transpose(AR), i - 1)』
請問這段的意思是什麼,有google過,但還是不太懂它們的解釋的意義.


大大寫的開、高、低,等三價的程式,並沒有看到說要把它寫入哪個工作表,
這樣會每個sheet各別計算嗎?(因為還沒開盤,還沒測試過)
像收盤價就有寫
P = Sheets(.Cells(i, 2).Text).Cells(Row.Count, "J").End(xlUp).Row + 1
Sheets(.Cells(i, 2).Text).Range("J" & P).Resize(1, 6) =Application.Index(Application.Transpose(AR), i - 1)
那它可以知道資料是要寫去哪一個工作表,其他三價的沒寫,會存對地方嗎??


附上檔案讓大大更了解我的架構與想法!! Calculate OVER.rar (162.25 KB)
50 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 ko310kmo 於 2011-5-9 00:35 編輯

回復 9# GBKEE

我把這大大的程式加入我原本的Calculate事件中後,
反而會造成我sheet1的C、D欄的值出不來
(這兩欄是寫DDE公式,讓它接受傳值的)
各工作表的J欄的歷史成交價,也都無法往下記錄

而且也會一直在
『P = Sheets(.Cells(i, 2).Text).Cells(Row.Count, "J").End(xlUp).Row + 1』
出現 黃底色、『此處需要物件』的錯誤
   
請問是我哪裡弄錯了嗎? 有加.rar (22.85 KB) 沒加.rar (21.57 KB)

把兩個有加、沒加,執行後的程式附給大大看看
50 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 ko310kmo 於 2011-5-9 11:12 編輯

回復 11# GBKEE


謝謝大大
今天試跑程式,我自行再做了點修改後
發現了一個問題
就是最低價竟然比收盤價高
我想可能是因為我們在一開始就 AR(4, i) = .Cells(i, 3)
所以程式就抓最一開始的Cells(i, 3)
請問該如何修改?

另外再請教
大大所寫的
P = Sheets(.Cells(i, 2).Text).Cells(Rows.Count, "J").End(xlUp).Row + 1
請問當中為什麼要寫『”J”』

謝謝大大的教導
陣列.rar (23.02 KB)
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 11# GBKEE


大大
我後來自已再測試
把大大在六樓 寫的程式改貼到 一般模組
並再寫一個
『Sub test3()
    Call test2
    TickTime = Now + TimeValue("00:01:00")
    Application.OnTime TickTime, "test3"
End Sub』

就可以完成每分的資料更新,而且不會把我原本dde寫入的公式洗掉,
也就是我原本在第十樓所說的問題。

但依舊會出現我第12樓
最低價竟然比收盤價高的問題!!

附上修改後、執行後的檔案,
懇請大大教導!!
謝謝、感激不盡:)
最後測試.rar (44.46 KB)
50 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 ko310kmo 於 2011-5-10 23:04 編輯

回復 15# GBKEE


    大大
『程式一執行後直到   Loop Until Time <= #1:30:00 PM#  才停止的』
這個我懂,但很奇怪的是

我13樓附的檔
是先執行 test1,等它跑完再執行test3
這樣是可以每分更新的

如果我是先執行test1再執行test2,沒有設定test3
這樣分鐘資料只會更新第一遍。

我等明日開盤後,再測試看看,
謝謝大大的幫忙:)
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 15# GBKEE


非常感謝大大的幫忙,已解決我的問題了!!!
不過5/10日,再次測試還是得到相同的結果
ok.5.10.rar (74.4 KB)
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題