Board logo

標題: [發問] 請教要記錄1分K的開高低收,要如何更改? [打印本頁]

作者: 啊尼    時間: 2014-5-25 02:42     標題: 請教要記錄1分K的開高低收,要如何更改?

本帖最後由 啊尼 於 2014-5-25 02:44 編輯

這是小弟更改的,但有紀錄的數值除了開盤點是可能對的,其他都有問題
If Second(Time) = 0 And Minute(Time) Mod 1 = 0 Then

'填 開高低收為即時行情
                If Range("C8") <> "" Or Range("C8").Value < Range("C5").Value Then
                      Range("C8").Value = Range("C5").Value
                    End If
      '填最高價
               If Range("D8").Value = "" Or Range("C8").Value > Range("D8").Value Then
                      Range("D8").Value = Range("C5").Value
                   End If
      '填最低價
               If Range("E8").Value = "" Or Range("C8").Value < Range("D8").Value Then
                      Range("E8").Value = Range("C5").Value
                    End If
   '填收盤價,就是即時行情
                 Range("F8").Value = Range("C5").Value
   End If

用的是E01的DDE,目前以道瓊測試!!


[attach]18360[/attach]
作者: c_c_lai    時間: 2014-5-25 09:11

本帖最後由 c_c_lai 於 2014-5-25 09:14 編輯

回復 1# 啊尼
你是每分鐘才去抓取每分鐘當下之最高、最低。
  1. If Second(Time) = 0 And Minute(Time) Mod 1 = 0 Then
  2.     '  填 開高低收為即時行情
  3.      .
  4. End If
複製代碼
但在此一分鐘內之每秒當下中最高、最低卻將它忽略了,
當然在每一分鐘後之最高、最低亦就有所差異了!
把以上之 If ~ End If 去掉便可即時得知每秒中之
最高、最低的價格了。
作者: 啊尼    時間: 2014-5-25 23:28

感謝C大
我試試看
作者: 啊尼    時間: 2014-5-25 23:36

c大,如你說的拿掉這段的if與end if
會出現錯誤在  Second(Time) = 0 And Minute(Time) Mod 1 = 0  這一行?
作者: 啊尼    時間: 2014-5-25 23:44

不好意思 ,我誤會你的意思了,現在拿掉if 與 end if
已沒出現錯誤,待開盤在測試
作者: 啊尼    時間: 2014-5-26 23:44

高低點還是抓得不準
作者: f3202    時間: 2014-5-27 08:01

  1. Public uMode&, StartTime, EndTime
  2. Public MyBook As Workbook, Sht1 As Worksheet, Sht2 As Worksheet, xRow&
  3. Dim o As Single
  4. Dim h As Single
  5. Dim l As Single
  6. Dim c As Single
  7. Sub 共用參照()
  8. Set MyBook = ThisWorkbook
  9. Set Sht1 = MyBook.Sheets("Sheet1")
  10. StartTime = "02:34:00"  '開盤時間(提早十秒開始,才可記錄開盤量價)"08:44:50"
  11. EndTime = "23:59:50"    '收盤時間(延後十秒停止記錄)此為測試用時間,請自行更改正式時間 "13:45:10"
  12. End Sub
  13. Sub 自動記錄()
  14. If uMode = 0 Then Exit Sub
  15. If Time > TimeValue(EndTime) Then '收盤時間以後不執行
  16.     Sht1.[J8] = "已過收盤"
  17.     uMode = 0
  18.     Exit Sub
  19. End If
  20. Sht1.Range("B8") = Time '當前時間(時間碼表)
  21. If Second(Time) = 0 And Minute(Time) Mod 1 = 0 Then '每1分鐘記錄,5分鐘則改為 Mod 5
  22. xRow = Sht1.Range("A65536").End(xlUp).Row + 1
  23.   If xRow < 9 Then xRow = 9
  24.    Sht1.Range("A" & xRow & ":I" & xRow).Value = Sht1.Range("A8:I8").Value
  25.     o = 0: h = 0: l = 0: c = 0
  26.      If ActiveSheet.Name = Sht1.Name And xRow > 20 Then
  27.      ActiveWindow.ScrollRow = xRow - 10 '讓最新資料保持在可見視窗中
  28. End If
  29.    Beep
  30. GoTo xxx
  31. Else
  32. c = Sheets("sheet1").Cells(5, 3)
  33.    If c > h Then h = c
  34.    If c < l Then l = c
  35.    If o = 0 Then o = Sheets("sheet1").Cells(5, 3) Else o = o
  36.    If l = 0 Then l = Sheets("sheet1").Cells(5, 3) Else l = l
  37. Range("C8").Value = o
  38. Range("d8").Value = h '填最高價
  39. Range("e8").Value = l '填最低價
  40. Range("f8").Value = c '填收盤價
  41. xxx:
  42.    ThisWorkbook.Save   '存檔
  43. End If
  44. Application.OnTime Now + TimeValue("00:00:01"), "自動記錄"
  45. End Sub
複製代碼
試看看
作者: 啊尼    時間: 2014-5-27 23:25

感謝大大的回應
目前以道瓊測試  開高低收 抓的算蠻準的
但是好像時間會差一分  看不出來程式在哪多了一分
作者: gery    時間: 2015-9-2 12:22

回復 7# f3202

f32022大 不好意思 ~我只是小學生想要更了解這個一分鐘自動記錄是怎麼達到的,還不能下載附件檔!!不知道能不能截個圖讓我研究研究呢?拜託拜託!!
作者: f3202    時間: 2015-9-2 18:18

回復 9# gery


    http://www.FunP.Net/388336
作者: 准提部林    時間: 2015-9-2 18:38

回復 9# gery


EXCEL.股票.DDE傳輸資料.固定時間自動記錄
http://blog.xuite.net/smile1000mile/blog/95125899

有些範例檔下載連結已失效, 可多試幾個(注意:下載檔檔名是否相同)
作者: gery    時間: 2015-9-3 16:38

回復 11# 准提部林


想再請教大大  我是看國際期貨 所以想改他開收盤時間  假設我想開盤是下午6點 收盤是凌晨2點 不知道該怎麼改呢?謝謝:D

Sub 共用參照()
Set MyBook = ThisWorkbook
Set Sht1 = MyBook.Sheets("X2")
StartTime = "18:00:00"  '開盤時間(提早十秒開始,才可記錄開盤量價)"08:44:50"
EndTime = "02:00:00"    '收盤時間(延後十秒停止記錄)此為測試用時間,請自行更改正式時間 "13:45:10"
End Sub

Sub 自動記錄()
If uMode = 0 Then Exit Sub
If Time > TimeValue(EndTime) Then '收盤時間以後不執行
    Sht1.[O8] = "執行中"
    uMode = 0
    Exit Sub
End If
作者: 准提部林    時間: 2015-9-3 18:07

回復 12# gery

試試看:
If Time > TimeValue(EndTime) And Time < TimeValue(StartTime) Then '收盤時間以後不執行
 Sht1.[O8] = "已過收盤"
 uMode = 0
 Exit Sub
End If
作者: gery    時間: 2015-9-9 00:42

非常感謝准提部林大大
可以正常使用了
謝謝~




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)