利用 Excel 實現「權值成分的漲跌平家走勢圖」

先前在我的一篇文章提過:關於「江波圖之漲跌家數走勢圖」,在目前我所使用的 Yeswin and HTS 均沒有提供走勢圖。 後來有賴生魚片的協助,永豐金的 eLeader 有提供這項功能,所以上個月也就過去永豐金辦理期權帳戶的申請 (真的相當感謝生魚片,包括優惠的手續費,以及諸多技術上的諮詢,下次要請他吃豬或雞或鵝排)。

在 e-Leader 上打開 [1124] 的視窗編號,就可以列出江波圖之「漲跌平家數走勢圖」,如下圖。

漲跌平家數走勢圖

對於「漲跌平家數走勢圖」,我一直有個想法,就是只統計含權值的漲跌平家數資訊。 當然,一般即時看盤軟體是不會提供的,所以只能只能自己寫了。 原先我是想要利用 AutoIt, or VB, or C#.NET 等其中之一的程式機制,來撰寫 DDE 連線程式,當然還需要有提供畫出走勢圖的功能。 後來想想,花了諸多時間研究 DDE 等規格文件,還要查看實作的 How-to 議題,而這我實在是不會太擅長,所耗費的時間與回饋不怎麼划算。 所以呢,突然才驚覺, Excel 不是都可以提供上述我所要的功能嗎?

只要將 e-Leader 某一個提供報價資訊的視窗,按個滑鼠右鍵,選擇 DDE 功能,就能直接複製到 Excel 的工作表去;然後呢,再寫個統計計算邏輯的 VBA 程式,把統計後的結果每隔一分鐘(都可以設定)就動態新增到另一個工作表;然後動態去觸發圖形(Chart)元件,讓它動態顯示所需要的統計資訊。 如何動態新增列數與動態展示圖形,這一點在實作部分比較棘手一點,我可是查閱了 Google 太多篇文章,才知道要怎麼作的。 而關於如何動態地展現圖形,這個國外 Excel 專業網站: “Peltier Technical Services“,裡頭許多關於動態展現圖形實作的文章,相當有幫助。

實作出來後初步的圖形展現如下圖,我是只有抓百大權值成分的上市公司,權重 0.2% 以上的。

Excel_百大權值漲家跌家走勢圖
Excel 百大權值漲家跌家走勢圖(2008/10/07)

又有個想法,如權重最重(約 9%)的台積電,與只有 0.2% 權重的公司,它們漲跌時的影響度,可是完全不能相比擬。 所以我是覺得應該加上含權重這個因子比較理想。 我把權重因子放大 10 倍再加進原來的漲跌平家資訊,參考如下圖:

閱讀全文 »

今天(09/17) 買了「奇狐」的盤後分析版

試用了約兩個餘月,評估許久,今天還是決購買「奇狐」的盤後分析版本了。

儘可能,我當然會希望直接購買 「即時+盤後分析版」,但是一年要價 NT$39,000,說低也不低,況且,都還沒有從交易市場賺到什麼錢,就先花上這麼一筆費用,雖說是投資啦,但總覺得這樣仍不划算,再等等吧,等到確實能在市場上站穩、部位夠大時,再來投資這筆費用囉。

盤後分析版第一年要價 NT$18,000,第二年以後是 NT$12,000,我覺得這樣的費用應該是蠻划算的。 我買來主要的用途是要要用來作資料分析,尤其是籌碼這一塊,我個人是有許多想法,想要設計一些指標與報表分析,也會需要匯出(Export)到外部的應用程式,如 Excel 或 Wealth-Lab 來作一些實驗回測等。 關於如何對諸多的數據作分析,真的可以參考「短線交易秘訣」一書,我受 Larry William 的影響很大,他只要一有一些想法,就馬上會寫成程式來作報表分析,而且該書的報表數據,看起來應該還只是 Dos 時代使用 Basic 語法來寫的而已呢。

察看網路上任何有經銷「奇狐」的代理商們,竟然是統一不二價,NT$18,000 ! 沒有任何折扣的。 所以,乾脆我就直接到台灣的總代理商購買好了,況且我有一些問題也需要請教他們。 說個題外話,我會使用這套軟體是因為當初購買「投資致富50訣」一書,雖然是很聳的書名,但內容寫的可相當好,而作者有提供一些指標應用就是在「奇狐」的盤後軟體上,把該書的截角寄回就有附一個月的試用版。 我試用的結果覺得還算不錯,整個歷史的數據好像有到10年之多,算是很夠用了。 後來呢,我發現到還有其它的書籍也是剪下截角就有附一個月試用,而且這套軟體是以帳號辨識的,並非是一般那種試用版與正式版之分,甚至,連盤後與即時傳輸的軟體,其實都是同一套,只是登入的帳號不一樣而已罷了。 唉,真希望喔,若有即時版的朋友們,”暫時” 不想看盤的話,那麼帳號可以考慮暫時借給我啦,我會回饋的代價就是,幫忙寫幾支指標程式啦,哈。 ;D

後來呢,第二個月以後代理商就不太願意再寄給你試用帳號了,我後來是主動去電,才很勉強的給你。 然後第三個月呢,我又買了另一本新書,再寄一個截角,這次那位承辦的小姐就無法接受了,說同一個地址只能試用一次。 唉,有這樣的限制嗎? 算了,反正遲早還是會買的,也不想爭這個了。

其實說真的,我買這套軟體還真有些猶豫,雖然這套軟體不錯,可以提供自行撰寫的程式開發環境也可以,但是呢,我並不喜歡去摸索這些軟體有的沒的,一般就是能給我一份手冊,電子檔也可以,就是一份完整的程式開發手冊。 有這樣的東西嗎? 想當然是沒有,原先透過電話詢問就知道了。 還有很重要的一點是,他們的客服,應該說是技術人員吧,你不能說他們服務不好,該回答的還是會回答。 但是絕對也不可能會好。 透過電話與他們的對談,你會覺得好冷,無精打采的語氣,加上有一搭沒一搭的,實在不會想再多談。 後來再想想,還是決定買了,未來有一些開發上的問題,找找網路的論壇,或是真的不得已,還是得打電話給代理商客服,最重要的還是未來建立好我個人對於波段上的分析模型吧。

總代理商位於新生北路過民權東路的巷子裡,蠻小的,幾位工程師與客服小姐。 我是自己還把電腦拿過去,也已經安裝好奇狐,我主要是希望能針對幾個關鍵性的問題問問就可以了。 看來他們都有工作做,我與 Steve 一同進去,大概過幾分鐘後才有一位工程師起來招待一下,然後要我填個表,登錄購買。 再來呢,因為我過來之前就與他們承辦的小姐聯絡過了,希望能有一位工程師協助我,所以後來那位工程師就問啦,有那些問題要提問的。

後來的情境還蠻有意思的,一開始我算是微微抱怨了一下,說你們是代理商,好歹也應該提供給客戶程式開發手冊吧。 那個看來應該是年輕的工程師有趣了,他說寫程式這些這很簡單啊,摸久了就會了(廢話!),他說他剛進這家公司也是從頭這樣摸索起來的(我可不願意這樣學)。 再來還乾脆建議我說,可以去買本 C 語言入門先來學習程式開發的語法。 哇哇哇!! 會不會說得太離譜啊? 這讓我火氣真的提上來了, 也只好跟他說,好歹啦,我與那位 Steve 還是教 Java 的講師,所以程式設計的語法還算會啦。 然後我再唸唸那位工程師,有沒有搞錯,怎麼會把沒有提供程式開發手冊當作是常態,竟然是把非常態當作是常態而視為理所當然呢?

老實說啦,這位年輕的工程師並非無意的,這可以看得出來,只是,應該是諸多工程師的技術性格吧,不太會講話,然後又比較不容易遇到像我這樣會講 “道理” 的客人啦(好吧,被當作 澳客 也沒辦法)。 被我 “抗議” 後,他也不知道如何處理了。所以後來是他們的主管出面了,那位主管也說得很乾脆,台灣嘛,哪家軟體公司會出手冊呢? 他們當然以後會更加努力往這方面著手…這些話,打打圓場,過得去也就好囉。 是啦,我也不想爭這個,要買之前就知道了,其實我也不可能期待他們會出這些手冊等等,就只是稍微抗議一下而已,讓他們瞭解客戶應該是有這樣的需求的。

所以,最後回到我提問了幾個問題,(我總不會要他們教我語法吧?) 所提問的幾個問題,都有得到可以接受的答案,這樣就夠了,而這樣也才花不到 10 分鐘! 確定能達到我所需要的,直接就付了現金,登錄帳號,然後又與那位工程師聊了一下,剛的抗議也不用太放在心上啦,就是個言語上的溝通誤會而已啦。

開車回去時,我與 Steve 閒聊,還嘆氣說竟然還被當作是程式新手,要我去學 C++ 程式入門。 Steve 說啦,我也太看得起我自己了吧,那位工程師是說,是去學 C 語言入門,是更低階的語言喔。 對喔,真的是挖哩勒 XX(

[筆記] 關於 AutoIt 實現 DDE 功能

由於諸多即時看盤軟體本身亦即為 DDE Server,可以讓支援 DDE 協定,例如 Excel 就可以成為 元大 Yeswin(支援 DDE)的 Client,可以即時擷取大盤等相關數據。 擷取 DDE 的格式為: DDEServer|Topic!Item 。 該 DDE 字串會由證券商所提供的看盤軟體相關的 Help 文件可查詢到。 例如,欲觀察 元大Yeswin 的大盤資訊—上市上漲家數, 則在 Excel 的某一欄位(Cell) 填入 YES|DQ!&TWTK2.Name

但是若每此看盤都需要打開 Excel,實在甚為不便,所擷取的數據不一定非得要透過 Excel 來處理,也有可能交給 Wealth-Lab 來分析。 所以可以利用其它亦有支援 DDE 實作的語言機制,如 VB6 是最簡單的了,來實現一個 DDE 中介的常駐程式,可以將擷取得來的數據再轉給其它的應用程式(如 Wealth-Lab)來處理; 甚至,也可以實作一個可以連結多個資料來源的 DDE Server,以確保資料的容錯性。

由於撰寫 VB6 還要準備開發環境,實在甚為不便,所以轉而尋求透過簡單但強大的自動化巨集處理的應用工具,AutoIt
AutoIt 的程式語法為 VB Script-based, 它內建支援了諸多關於如 GUI 與 字串處理等函數(Function)。 但截至目前版本(v3.2.12.1, 2008/06/12))為止, 尚未提供連結 DDE(Dynamic Data Exchange) 的函數。

但是,AutoIt 其實可以透過 VBScript 語法,直接呼叫外部 Windows 的 API 與 DLL 程式。 而其中,微軟為其 DDE 所提供的應用程式介面,稱之為 DDEML (Dynamic Data Exchange Management Library),以簡化連結 DDE 的實作。

再則,AutoIt Forum 才人備出,已有國外網友撰寫了 DDE 的函數群,其實這些函數就是一種 包裹(Wrapper) 的應用,以避免 AutoIt 的 Script 開發者,還需要涉及到實際呼叫 DDEML (包括指定路徑與DLL檔名) 的連結細節。

從上述討論串可以下載該網友所提供的 DDE 函數庫以及範例,將函數庫可以解縮至 AutoIt 的 /Include 子目錄內。但是,所提供的範例並沒有說明清楚,甚至執行還會出錯。 不過,關於 DDEML 的主體部分,則確定是完成沒有問題。

關於如何實現 DDE Client 連結 DDE Server(元大Yeswin),不得已還是必須具備 DDE 的相關知識方可,但 DDE 應該算是一個蠻早期,也比較落後的一種連結技術,可以參考的文件似乎不太多了。 最重要的文件參考來源: MSDN DDEML Overview,可以說是必要研讀的線上文件。

目前是暫時寫了一段小程式,以測試是否可以透過 AutoIt 連結 元大Yeswin 的 DDE Server。測試性的程式碼如下:


#include <DDEML.au3>
#include <DDEMLClient.au3>

Global $hConvSrv = 0

_DdeInitialize("", BitOR($APPCMD_CLIENTONLY, $CBF_SKIP_ALLNOTIFICATIONS))

ExecDDECmd()

Func ExecDDECmd()
    Local $hszService = 0
    Local $hszTopic = 0
    If 0 = $hConvSrv Then
        $hszService = _DdeCreateStringHandle("YES")
        $hszTopic = _DdeCreateStringHandle("DQ")
        $hConvSrv = _DdeConnect($hszService, $hszTopic)
    EndIf
    If 0 = $hConvSrv Then
        MsgBox(0, "DDE Client", "無法連結 DDE 伺服器")
	Else
		$sz = "&TWTK2.Price"
		$str_handle = _DdeCreateStringHandle($sz)
		$Data = _DdeClientTransaction($XTYP_REQUEST, $hConvSrv, 0, 10000, $str_handle, $CF_TEXT)
		$res = _DdeGetDataAsString($Data)
		MsgBox(0, "String Handle is: ", $res)
		_DdeDisconnect($hConvSrv)
	EndIf

    If 0 <> $hszService Then _DdeFreeStringHandle($hszService)
    If 0 <> $hszTopic Then _DdeFreeStringHandle($hszTopic)
EndFunc

連結 DDE Server 相當地簡單,但是要下字串(Item)取得相對應的數據,不知道是否是因為晚上 Yeswin 沒有提供即時數據的關係,有些 Item 可以取得數據,而有些又不行...。 還有比較重要的一個問題是,我對 DDE 在建立 conversation 後,Client 與 Server 的交易處理(transaction management)問題,我還是陌生不熟悉,這仍有待再研讀 MSDN 上的文件。

待上述問題解決後,我應該會再把更完成的原始程式碼公布出來,最起碼要展現一下我目前最想要的,可以即時顯示「漲家跌家趨勢圖」。 🙂

利用 AutoIt 工具擷取 「元大 Yeswin」控制項的問題記錄

目的: 擷取「元大 Yeswin」的 “[1210]漲跌家數” 的即時數據,轉到如 Excel 或 Wealth-Lab 以顯示「漲跌家數走勢圖」。

工具:使用 AutoIt v3,可以撰寫巨集(macro scripts),除了可以自動登入並啟動 Yeswin 並打開特定的視窗外 (如啟動技術分析/成交明細視窗),還可以透過內建的函數(function)讀取視窗控制項內的資料。

問題:
AutoIt 這個強大又免費的工具是由「聚財網—飆股理財&程式交易聯誼會」論壇的版主,也是程式交易的名人 凌波微步 大大先生所推廣,並應用於 “從免費看盤軟體(yeswin or HTS)擷取即時數據至 Wealth-Lab”,以及 “自動化程式交易下單”。

參考他其中一篇文章:「用Autoit 擷取Yeswin簡易版奇狐的即時成交明細」,從其中可以知道要擷取即時數據到外部系統,可以說是相當容易的一件事。

從其中程式碼可以發現,「Yeswin 的即時成交明細」視窗,是利用 “SysListView” 控制項實作的,而在 AutoIt 內建的函數,即有提供諸多該控制項的處理,最重要的當然就是要擷取其內的數據。利用 AutoIt 內含的 “Window Info” 工具即可察看相關資訊,以方便供程式撰寫,參考下圖。

autoit-v3-screentshot-01
點擊圖可察看原圖

但是,當我想擷取 “[1210]漲跌家數” 的控制項數據,從該工具的資訊顯示,該控制項的類別為 “WindowsForms.Window”? 參考下圖。

autoit-v3-screentshot-02
點擊圖可察看原圖

這我就很納悶了,我對 Windows-based 的 GUI 控制項實在陌生,查閱 MSDN 的「System.Windows.Forms 命名空間」 也是不知所以然。 實驗了好幾次,都無法利用 AutoIt 來擷取該控制項的相關數據。

不知道是否有熟悉 Windows GUI 結構的網友們可以協助提供建議呢?

關於「江波圖之漲跌家數走勢圖」

透過「第一次操作選擇權 (新版)」一書內容的說明,讓我體認到「江波圖」對於即時盤勢分析解讀的重要性。 江波圖 應該是包含了兩大部分, 一為「委買/賣成交張數走勢圖」,另一則為「漲跌家數的統計」。 前者很普及,幾乎任一個即時看盤的交易軟體均有提供,但是後者呢,在我現在所使用包括 日盛 “HTS”、 元大 “Yeswin” 等看盤軟體,卻是只有提供即時最新的「漲跌家數統計數據」,但似乎卻沒有整理成為 「漲跌家數走勢圖」?

這讓我有些苦惱,透過 Google 查詢,也不知道有那個免費的看盤或網站有提供即時性的「漲跌家數走勢圖」呢?

若還是找不到,我在想可能自己要 DIY 一下了,就是說寫個小程式,把如 “Yeswin” 關於「漲跌家數」的即時數據定時(可能每一 ~ 五分鐘) “倒(Export)” 出來,再透過如 Excel,甚至是如 Wealth-Lab, 再轉成二維(X 軸為家數;Y 軸為時間)的趨勢圖。

再更進一步的思考,我甚至也可以過濾漲跌的家數,只倒出有權值的股票漲跌家數數據,甚至還可以依照權值的比重來加權計算,可能可以成為更精確的「漲跌權重家數走勢圖」。

想歸想,不過還是希望能有現成的最好,也希望是否有網友們能提供這類的資訊呢? 否則又要花這些小道功夫,對我現在是很累人的。 :-/

交易是失敗者的遊戲

別誤會,我可不是失敗主義者的悲觀論份子。 其實這句話也是引自「幽靈的禮物」一書,甚至我更覺得,它應該就是幽靈本人的信念了,然後再導出幽靈為這個信念而所創的 規則一與二了。 不過,這句話僅是其中整段標題的一半而已,完整的標題是:
交易是失敗者的遊戲,最善於輸的人最終會贏。

其實對於這整句話的解釋,幽靈的真正的本意是:要能對輸的那一面做好準備

「交易是失敗者的遊戲」,這是什麼意思呢? 從我輸了好幾次本身的經驗回想,我總算慢慢地能體會到這句話的含意了。 因為,絕大部分的交易者當一投入 投資/投機 資金入市後,無論如何,在心裡面總是會心存美好結果的那一面,會想著可以賺多少錢、能有多少獲利等。 卻很少會去想著,我如果輸了怎麼辦? 所以當在賠錢的時候,在心理面會很難承受失敗的結果,並且往往都沒有規劃好輸錢時候的撤退機制;積極的一方,會利用停損來保護自己的資金,這已經是很難得了。 但經常使用停損的人都知道,那是一件很痛苦的事,要能做到這覺得沒什麼,那實在很難。

探究原因,我認為就是交易者本身的心態應該需要調整。 如果你認知到,交易賠錢就像喝白開水一樣地頻繁 (—引自 Larry Williams),那麼,你在交易中就不會總抱著要贏錢的幻想去操作;在交易中你唯一應該經常提醒自己的念頭應該是:我會在交易中損失一大筆錢。 —(引自 「幽靈的禮物」)

Larry Williams 與 幽靈 這兩位大師可都是抱著相同的信念。 Larry Williams 在「短線交易秘訣」一書的序言也是同樣提到他認為獲利的信念系統:
「我相信當前我所進行的交易一定會虧損 ...而且虧損的很慘。」

那麼,是否就是不要交易了呢? 當然不是! 而是要能懂得,善於輸的人才有可能贏大錢啊!!

因為,你知道這個遊戲是會常輸,所以會關注自己的損失降到最小。 而,使你的損失保持在一個相對低的水準,這是一個長期任務。 交易最重要的一點,就是你的收益不僅僅取決於你贏了多少次或輸了多少次,更是取決於你的損失有多少。 先關注你輸了多少,然後再關注你贏了多少。 —(引自 「幽靈的禮物」)

從這些大師所揭露出的信念,同時我是導出幾個心得。 第一, 勝率根本不重要。 我是一直很相信,任何所謂很準的交易訊號,跟即使用隨機進場方式來相比的話,勝率大概也是差不多的。 第二, 那個 “賠少賺多” 應該要再延伸更具體的解釋,就是: 交易會常賠錢,但因為會控制在合理的損失範圍之內,所以會賠得比較少。另外更重要的心態是,你知道而且能接受會常賠錢 (只是賠不多)。;而賺得多是因為,只有在難得碰到的幾次時機中 (我寧願說是矇到的,而不是因為自己看得準),才能順應著很明顯的趨勢,並能懂得逐步加碼的策略/藝術,才有機會賺到大錢的。

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal