Board logo

標題: [分享] 關於DDE動態連結問題 [打印本頁]

作者: Hsieh    時間: 2010-5-7 19:54     標題: 關於DDE動態連結問題

股票我本人是沒有涉獵
沒使用過dde擷取即時資料的經驗
但看各位的文章
揣摩一下意思做成附檔
不知道是不是各位想要的
(檔案開啟後按F9即可測試,要自動請於Sheets("dde")設置相關dde連結公式)
[attach]127[/attach]
作者: 沙拉油    時間: 2010-5-11 23:57

股票我也不會玩,更不可能為了測DDE而安裝股票軟體
所以我都用 Excel 測試 DDE
在儲存格內輸入 =excel|Book1.xls!x
會出現什麼呢?提供出來大家猜猜!
作者: Hsieh    時間: 2010-5-12 12:08

回復 2# 沙拉油


    若定義出book1.xls的x
那麼可以抓到這個值
不過一值試著更新x值
那麼這公式並沒有即時反應出x值
請教沙大
是否有需要做甚麼設定或如何打開dde通道才會做即時的擷取資料呢?
請沙大不吝賜教
謝謝!
作者: ginbow    時間: 2010-5-13 18:09

Hsieh板大你好
以前我在學校時所教的 一開始必先要開啟DDE的股票軟體
我以日盛為例 所以要先開啟他裡面的一個 Excel DDE 之後再開啟 EXCEL 才能啟動

然後我們會在EXCEL 一開啟時 check 是否連線成功

之後再寫入下面程式

Sub 載入日盛DDE()
  With ThisWorkbook.Worksheets("外部資料")
    .Cells.Clear
    '寫入時間
    .Range("B1").Formula = "=DDEEXCEL|FUTURETXF" & NearMonth & NearYear & "!時間"
  end  with

至於DDEEXCEL|FUTURETXF" & NearMonth & NearYear & "!時間 是看個DDE軟體定義的
以日盛為例 當開啟EXCEL DDE 把他拖曳到 EXCEL上時 就會出現上面  之後裡面的年月再設變數

如此 至於要擷取他變動的資料 則是使用DDE傳送資料到EXCEL 觸發的calculate 事件特性
去判斷新傳來的值與舊的值是否有相同 如果不相同就記錄

Dim NewVolume As Long
  Dim nRow As Long
  With ThisWorkbook.Worksheets("台指期DDE")
    If IsNumeric(.Range("A1")) = True Then
      NewVolume = .Range("A1")
      If NewVolume <> TXoldVolume Then
        '將即時價差及台指期即時成交價逐行寫入各欄
        With ThisWorkbook.Worksheets("繪圖資料")
          nRow = .Range("B65536").End(xlUp).Row
          If nRow = 1 And .Range("B1") = "" Then
            .Cells(1, 1) = Time
            .Cells(1, 2) = ThisWorkbook.Worksheets("外部資料").Range("C3") '台指期價格
            With ThisWorkbook.Worksheets("外部資料")
              If IsNumeric(.Range("C3")) And IsNumeric(.Range("C11")) And _
                 IsNumeric(.Range("C19")) Then
                ThisWorkbook.Worksheets("繪圖資料").Cells(1, 5) = _
                      CalSpread(.Range("C11"), .Range("C19"), .Range("C3")) '目前價差
              End If
            End With
作者: 沙拉油    時間: 2010-5-13 23:40

本帖最後由 沙拉油 於 2010-5-18 23:26 編輯

參考我在 Excel 測試 DDE的作法
作者: Hsieh    時間: 2010-5-14 07:27

謝謝沙大指導
我的測試錯誤是因為
我把X定義成動態位置
=OFFSET($A$1,COUNTA(A:A),)
所以當A欄輸入資料並無法更新到目標區
像沙大的固定位置就可行了
多謝沙大指導
作者: humanbondage    時間: 2010-11-10 23:39

本帖最後由 humanbondage 於 2010-11-11 23:16 編輯

謝謝各位的分享,小弟也是想學習vba捉取期貨的成交資料每一分鐘資料做成k線數據的開高收低,但剛開始摸索而已

看了很多相關的討論文章,完全還在迷霧森林中沒走出半步,希望有點頭序時再向版上高手請教
作者: danny001    時間: 2010-11-11 23:42

在網路上看到股票的檔案,看不到別人是如何寫出來的,我個人也沒有玩股票,但會注意一下。
我也想學但是自己的功力還沒有到那ㄋ,也在學習當中也希望各位板主教導
作者: fpoqua    時間: 2011-1-31 12:16

請教版主:

client端與server端的檔案路徑若不同

那"=excel|Book1.xls!x"應如何修正?
作者: 沙拉油    時間: 2011-4-22 16:24

請教版主:

client端與server端的檔案路徑若不同

那"=excel|Book1.xls!x"應如何修正?
fpoqua 發表於 2011-1-31 12:16


參考:http://support.microsoft.com/kb/128491
作者: piero    時間: 2011-4-27 19:18

上面的bbb.xls,改變價位

在接收端的excel要如何一筆一筆的向下接資料

煩麻各位大大,分享一下簡單的 寫法

感謝^^
作者: wells330    時間: 2011-4-29 22:10

沙大你好!
      我用EXCEL2010在儲存格內輸入 =excel|Book1.xls!x
馬上出現當機(沒有回應),請問EXCEL哪裡設定出問題?

    謝謝!
作者: 沙拉油    時間: 2011-5-1 00:03

沙大你好!
      我用EXCEL2010在儲存格內輸入 =excel|Book1.xls!x
馬上出現當機(沒有回應),請問EXCEL哪 ...
wells330 發表於 2011-4-29 22:10


沒你那種電腦環境可以測試!
請自己看看 Excel 說明
或請 Win7+Office 2010 的人幫你看看!
底下是網路上找到類似的問題
參考網路上的連結 << 英文
參考網路上的連結 << 中文
作者: Hsieh    時間: 2011-5-1 00:17

[attach]5929[/attach]
作者: binargoo    時間: 2011-5-24 14:44

我想該找些時間向各位樓主請教請教,對 VBA 以及規則語法有諸多障礙的小學生。先說謝謝嘍!
作者: abcdefgp06    時間: 2011-5-25 23:25

小弟屬小學生Hsieh大的DDE.rar小弟無法看到 可惜
小弟連結元大EasyWin做DDE資料擷取(5 sec擷取一次)
8:45 am前完成與EasyWin的連結後
按下『資料擷取鈕』將自08:45 am自動擷取資料
13:45:06 結束資料擷取
但PC時間需與EasyWin匹配否則會出現Error
如附件供參考

VBA碼
Sheet1 (Sheet4)
Private Sub CommandButton1_Click()
    download
End Sub

Module1

Private ChartStr(5) As Long

Sub download()
Dim R1 As Range, R2 As Range

If Time >= TimeValue("13:45:06") Then End       '13:45後停止程式
If Time < TimeValue("08:45:00") Then
        ChartStr(5) = 1
        Application.OnTime TimeValue("08:45:00"), "download"  '08:45前程式設定於08:45執行 "download"程式
        Exit Sub
                             
    Else
    ChartStr(1) = [B65536].End(xlUp).Row
  
    Application.OnTime Now + TimeValue("00:00:05"), "download"
End If

With Sheet1
ar1 = Array([D3], [E3], [L3])
.[B65536].End(xlUp).Offset(1, 0).Resize(, 3) = ar1
.[A65536].End(xlUp).Offset(1, 0) = Time

'小台近月
ar2 = Array([E4], [L4])
.[F65536].End(xlUp).Offset(1, 0).Resize(, 2) = ar2

End With
ChartStr(1) = ChartStr(1) + 1
Range("I6").Value = Range("G" & ChartStr(1)).Value
Range("I6").Select

End Sub
作者: fei6999    時間: 2011-11-29 11:06

碰巧最近剛好在研究期貨DDE的多空分析很高興可以和大家認識一下
作者: fei6999    時間: 2011-11-29 11:14

我也想多多學習和分享說!
作者: fei6999    時間: 2011-11-29 11:24

我用的是元大YESWIN
我希望測量出買賣單對指數產生的影響
比如說100口買進上漲2點
但是20口賣出下跌2點
顯然多方弱勢
我把程式寫成買一秒抓1次單量及漲跌點
取出具影響的單量作成圖表比較
無奈功力有限看起來很不專業
多包含
畢竟是小學生我想多參予大家
作者: GBKEE    時間: 2011-11-29 11:40

本帖最後由 GBKEE 於 2011-11-29 11:43 編輯

回復 19# fei6999
比如說100口買進上漲2點,但是20口賣出下跌2點 ,這需有方面的專業來寫會恰當些.
作者: yagami12th    時間: 2012-1-3 15:29

不知道能不能做到將每分鐘更新的委買委賣資料,每分鐘抓一次貼到別的sheet,貼成一整條
序列。
作者: samsung2888    時間: 2014-3-21 13:00

回復 5# 沙拉油

這方法超好用!!感謝~但有個問題想提問我想把 excel|Book1.xls!x
改成   Book1.xls 內 Sheet3的 A1 儲存格.....DDE字串應該要如何去改??




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