返回列表 上一主題 發帖

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

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

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

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

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

對於程式有點不了解,怎麼等待一分鐘,等待K線不就會失真,高點低點抓不準,程式應該要不停比較高低點才對!

TOP

感謝分享

學到很多

謝謝

TOP

回復 15# GBKEE


非常感謝大大的幫忙,已解決我的問題了!!!
不過5/10日,再次測試還是得到相同的結果
ok.5.10.rar (74.4 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

回復 14# ko310kmo
『Sub test3()
    Call test2
    TickTime = Now + TimeValue("00:01:00")
    Application.OnTime TickTime, "test3"
End Sub』
行不通的 給你的程式一執行後直到   Loop Until Time <= #1:30:00 PM#  才停止的
有事 暫時要下線了!

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

回復 12# ko310kmo
可用欄位的英文字母表示  Cells(1, "J") =>Range("J1")  
最低價竟然比收盤價高   修正如下
  1. Sub Ex()
  2.     Dim t As Date, i%, R%, P%
  3.     With Sheet1
  4.         R = .[B1].End(xlDown).Row
  5.         Do
  6.             ReDim AR(1 To 6, 2 To R)
  7.             t = Time
  8.             For i = 2 To R
  9.                 AR(1, i) = TimeSerial(Hour(Time), Minute(Time), 0)   '每分鐘時間
  10.                 AR(2, i) = .Cells(i, 3)   '每分鐘的開盤價
  11.                 AR(3, i) = .Cells(i, 3)   '每分鐘的最高價
  12.                 AR(5, i) = .Cells(i, 3)   '每分鐘的最低價
  13.                 'AR(6, i) = .Cells(i, 4)   '每分鐘的成交量
  14.             Next
  15.         If Minute(Time) = Minute(t) Then
  16.             Do While Minute(Time) = Minute(t)
  17.                 For i = 2 To R
  18.                     DoEvents
  19.                     AR(3, i) = IIf(.Cells(i, 3) > AR(3, i), .Cells(i, 3), AR(3, i)) '每分鐘的最高價
  20.                     AR(5, i) = IIf(.Cells(i, 3) < AR(5, i), .Cells(i, 3), AR(5, i)) '每分鐘的最低價
  21.                     '  AR(6, i) = AR(6, i) + .Cells(i, 4)                             '每分鐘的成交量
  22.                 Next
  23.             Loop
  24.             For i = 2 To R
  25.                 AR(4, i) = .Cells(i, 3)                '每分鐘的收盤價
  26.                 P = Sheets(.Cells(i, 2).Text).Cells(Row.Count, "J").End(xlUp).Row + 1
  27.                 Sheets(.Cells(i, 2).Text).Range("J" & P).Resize(1, 6) = Application.Index(Application.Transpose(AR), i - 1)
  28.             Next
  29.         End If
  30.         Loop Until Time <= #1:30:00 PM#
  31.     End With
  32. End Sub
複製代碼

建議此程序 用ThisWorkbook的程序 自動執行
Private Sub Workbook_Open()
        Ex
End Sub

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

本帖最後由 GBKEE 於 2011-5-9 07:41 編輯

回復 10# ko310kmo
該物件 RowS
P = Sheets(.Cells(i, 2).Text).Cells(RowS.Count, "J").End(xlUp).Row + 1

8樓的附檔有難度
Sheet1每一履約價要有, 即時成交價的變動時間 及成交量的變動時間,來參考的 才可計算 一分鐘內 即時成交價的成交量的總和
PS: 成交量有變動,即時成交價不一定有變動.

TOP

        靜思自在 : 難行能行,難捨能捨,難為能為,才能昇華自我的人格。
返回列表 上一主題