返回列表 上一主題 發帖

[發問] RTD抓TICK,如何設定當總量變化時在抓取

[發問] RTD抓TICK,如何設定當總量變化時在抓取

本帖最後由 fansofcheer0987 於 2017-5-20 01:51 編輯

各位先進好,小弟想發問:
因為我最近在用RTD收TICK,想做新的技術指標,
但是RTD到excel後,執行VBA時若單純只用每隔一段時間就抓取一次,
這樣抓取下來的tick事實上是失真的,並非真正的tick,
我的想法是:因為成交時總量會變,所以只要在總量變時在抓就好,
想請教的是,要如何才能達到呢?
試過setlinkondata方法,卻用不出來
worksheet change 似乎也不行,與RTD公式值未變動有關,
於是上來請教各位大哥先進們,幫幫忙。

活頁簿1.rar (29.05 KB)

是接凱基RTD的

本帖最後由 GBKEE 於 2017-5-20 12:26 編輯

回復 1# fansofcheer0987
工作表儲存格的值,字串有變動.     可觸發的事件 :Worksheet_Change
工作表儲存格為公式傳回值的變動.  可觸發的事件 :Worksheet_Calculate

'附檔上工作表(b)儲存格RTD公式有多個,Worksheet_Calculate無法明確指出是哪一個RTD公式在變動

'請在所有儲存格沒有公式的工作表上的A1,寫上總量的RTD公式
'=RTD("xqrtd.rtdserverkgiap",,"FIMTX*1.TF-TotalVolume")
  1. Private Sub Worksheet_Calculate() '只有總量RTD公式,的工作表模組.
  2.    
  3.     If Not IsError([a1]) Then                           '未開盤時 RTD公式傳回 "N/A" 為錯誤值
  4.         If [a1] < 0 And IsNumeric([a1]) Then     '開盤後,總量需有 >0 的數字
  5.                 '執行程式碼  '**抓取你要的資料**
  6.         End If
  7.    End If
  8.    
  9. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

[版主管理留言]
  • GBKEE(2017/5/26 06:16): 你的程式碼是可行的請上傳修改後的檔案看看

回復 2# GBKEE

GBKEE 大大好,因為最近有些雜事,到今天才有機會測試
Private Sub Worksheet_Calculate() '只有總量RTD公式,的工作表模組.
   
     Set Sht1 = ThisWorkbook.Sheets("c")   '新開的分頁  然後此分頁只有A1 填入公式 RTD總量的報價
   
    If Not IsError([A1]) Then                           '未開盤時 RTD公式傳回 "N/A" 為錯誤值
        If [A1] < 0 And IsNumeric([A1]) Then     '開盤後,總量需有 >0 的數字
                '執行程式碼  '**抓取你要的資料**
               
            xRow = Sht1.Range("A1000000").End(xlUp).Row + 1 '由上往下找
            Sht1.Range("A2").EntireRow.Insert
            Sht1.Range("A2:J2").Value = Sht1.Range("A1:J1").Value
        End If
   End If
   
End Sub

    但是卻沒有效果 我在想是哪裡出錯了,請大大指教

TOP

回復 2# GBKEE


    檔案附上 ,麻煩您了,謝謝

活頁簿1.rar (28.28 KB)

TOP

回復 4# fansofcheer0987
附檔 Private Sub Worksheet_Calculate()在Module3是一般模組不是工作表模組.
當然沒做用
附檔 工作表a,可能有多筆要記錄
修改如下
  1. Private Sub Worksheet_Calculate() '工作表1(a)模組的重算事件
  2.     Dim i As Long, Sht2 As Worksheet
  3.     Set Sht2 = Sheets("b")
  4.     For i = 2 To Cells(Rows.Count, "h").End(xlUp).Row              '多筆要記錄
  5.         If Not IsError(Range("h" & i)) Then                        '未開盤時 RTD公式傳回 "N/A" 為錯誤值
  6.             If Range("h" & i) > Cells(i, Columns.Count) And IsNumeric(Range("h" & i)) Then      '開盤後,總量需有 >0 的數字
  7.             '** 輔助欄: Cells(i, Columns.Count)** 工作表最右一欄,記錄上一次成交總量
  8.                
  9.                 '執行程式碼  '**抓取你要的資料**
  10.                 Cells(i, Columns.Count) = Range("h" & i)   '記錄此次成交總量
  11.                 Sht2.Range("A2").EntireRow.Insert
  12.                 Sht2.Range("A2:J2").Value = Range("A" & i & ":J" & i).Value
  13.             Else
  14.                 Cells(i, Columns.Count) = ""  '**成交總量歸零
  15.             End If
  16.         Else
  17.             Cells(i, Columns.Count) = ""  '**成交總量歸零
  18.         End If
  19.     Next
  20. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 信心、毅力、勇氣三者具備,則天下沒有做不成的事。
返回列表 上一主題