[TS懶人包] [保險服務]

2008年8月28日 星期四

程式交易 - 高勝算操盤內提到的程式

高勝算操盤 這裡面所提到的唯一的一隻程式…先把它提供給大家玩吧…以高低點為進出場依據…我已經有小修改過了…也許經過"大修改"會很不錯…畢竟時空環境不同,很多東西也許不太適合台灣的市場。


input: Length(10), BES(10), LengthADX(10), SD(.8), Length1(10), Length2(35);

if close > highest(high, length)[1]+StdDev(close,20)[1]*SD and SlowD(14)<20 then buy ("b1") on close;

if close < highest(high, length)[1]-StdDev(close,20)[1]*SD and SlowD(14)>80 then sell("s1") on close;

exitlong ("stop1") from entry ("b1") at$ Close-2*StdDev(close,10) stop;
exitshort ("stop2") from entry ("s1") at$ close+2*StdDev(close,10) stop;

if ADX(LengthADX) > 40 then begin
if average(close, Length1) crosses below average(close, Length2) then exitlong ("exitL1");
if average(close, Length1) crosses above average(close, Length2) then exitshort ("exitS1");
end
else begin
if ADX(LengthADX) < 20 then begin
if BarsSinceEntry=BES then
exitlong ("exitL2");
if BarsSinceEntry=BES then
exitshort ("exitS2");
end
else begin
if SlowD(50) > 85 then
exitlong("exitL3");
if SlowD(50) < 15 then
exitshort("exitS3");
end;
end;

程式碼還滿短的…跑出來的績效雖然是正的…不過也不太能看,所以才說要經過大修改…
有興趣的就自己參考吧。

推薦 - 高勝算操盤

說來慚愧…這兩本書 高勝算操盤 - 學做操盤高手 (上)高勝算操盤 - 學做操盤高手 (下) 我從 93 年就買了…然後一直躺在我的書架上沒翻過…這兩個星期才又把它拿出來看完…很多內容其實很不錯…推薦一下

在這邊先摘錄一些我覺得作者寫得很不錯的話…

◎唯有投入真正的鈔票,你才對感覺到痛苦,讓你出現一些不正常的行為。
◎模擬交易過程中,很多人的表現都一板一眼,非常傑出;可是,一旦投入真正的資金,就再也看不見紀徑規範,一切都走調了。
◎風險/報酬比率過高的交易,就是不當的交易。
◎「出場」的重要性往往勝過「進場」,因為「出場」才是決定輸贏的關鍵。
◎當人們閱讀《如何利用一般工具進行血管外科手術》的書籍時,我想很少人期待能夠在自家車庫成立一家診所,賺點業餘的收入貼補家用。可是,一些沒有經驗的人只不過閱讀一、兩本交易書籍,就期待能夠在金融市場大展身手。
◎保障珍貴的資本
◎把金融交易視為事業--對於大多數行業來說,如果資本不能因應最初兩年需要,就算是資本不足。
◎金融交易的首要之務在於求取生存,不在於賺多少錢。
◎千萬不要太過頑固。身為交易者,你必需保持彈性,隨時隨意改變看法。
◎每筆交易都應該有進場理由。
◎過度交易是一種致命的行為。
◎如果不是持有這些部位,我對於目前的市況有何看法?
◎交易最難之處,就是承認自己錯誤,然後認賠出場。


在這兩本書中…(上)的前半部主要說了進場的心態…有不少好觀念是應該要有的…而後半部則是介紹了一些技術分析。而在(下)的部份,則介紹了交易系統…所用的就是 TradeStation 這套軟體,有興趣玩 TradeStation 的大概可以好好看看這部份…當然,裡面沒有提到很多的程式…也不能期望看完了這本書…你就能寫出一個大賺特賺的系統出來…不過至少對於該如何建構一個適合你的系統會有個初步的了解。


高勝算操盤 - 學做操盤高手 (上)
高勝算操盤 - 學做操盤高手 (下)

2008年8月25日 星期一

TradeStation 從程式碼到訊號 PowerEditor 教學

剛好有人問了,所以就順便寫一篇吧…這篇主要是講從 PowerEditor 裡寫好程式之後,要怎麼樣變成訊號…圖還滿多的…照著圖走囉…

首先在 PowerEditor 按下 File - New ,可以看到上圖的畫面,基本上常用到的是 Indicator (指標) 和 Signal (訊號),Function 偶爾也會用到…這裡先不提了…今天用指標來教學…選擇 Signal 後,就給你的訊號一個名字吧…第二欄可以不用理它…要注意的是…名字請給英文…給中文滿容易有問題的


接著…當你寫好你的程式之後,請按下上方工具列的 Verify 選項



如果你的程式沒問題的話…應該會在視窗中央看到下面的小圖出現…

這樣…代表你的程式沒問題…接下來要把程式放到一個策略裡面…HTS 也有這樣的功能,但是 HTS 不強制一定要用…不過 TS 這邊就不能省啦…所謂策略就是一個可以加入多個訊號的東西…當然只有一個訊號也是可以的…先到 PowerEditor 上面工具列選擇 Go - TradeStation StrategyBuilder。


接著…按下右邊的新增,一樣給個英文名字喔。


這個畫面顯示著目前有的訊號…因為是新增的…所以訊號來源還是空的…按下 Add 吧…


接著選擇剛剛 Verify 過沒問題的訊號程式…這邊用 DK-friend 說明…後面的勾代表著這個訊號有著多單進場、空單進場、多單出場、空單出場。所以…透過 StrategyBuilder,你可以把進場、出場、多單、空單的訊號完全分開…只要在這邊把它都加進去就行了。分開寫也方便你交叉測試…是個很不錯的功能…


選完之後可以看到訊號已經新增了…如果沒有要再新增訊號的話…就按下一步囉…


這個畫面顯示你的 Input 參數有幾個…然後目前設定的值是多少…想改參數的話可以在這邊作修改…


這個設定的意思是…是否允許訊號重覆進場…也就是如果你的程式裡有多個訊號…訊號是否可以重覆進場…也就是說今天也許 B1 進場了…過一陣子 B2 成立是不是還可以進場的設定…


這邊用預設值吧…


接下來的設定要注意一下…這個 50 代表的你要軟體記憶幾根 k 線…如果你的程式用到 100ma …那就請設 100 以上…或是你的程式裡需要用到 200 根之前的 k 線值…那就設 200…這邊需依照你的程式而定…


到這邊一個新的策略應該已經建立好了…轉換到 ProSuite 來吧…在 k 線圖上按下右鍵…接著選 Insert Analysis Techniques。


接著在上方分頁的部份選擇策略 Strategy,如果你是要加入指標就選 Indicator。


選擇完後有個設定…Costs 的部份是設定手續費和滑價之類的…依照需求設定囉…目前我的程式都是以來回 2000 當作手續費,沒有設定滑價…


接著 Properties 的部份又有了剛才的是否允許重覆進場的設定了…這邊分別是不允許、允許不同訊號重覆進場(例:S1、S2可分別進場)、允許同訊號重覆進場(例:S1 進場後…S1 還可再進場…關於第三個選項請小心使用…)


按下確定後應該就可以看到訊號出現了…(如果你的程式沒寫錯的話..)


最後想看程式的績效就按下 View - Strategy Performance Report 囉…


希望大家看的懂啦…

2008年8月22日 星期五

Peopleware: 腦力密集產業的人才管理之道

如果您每天有接不完的電話、辦公室吵得要命、加班是常態、還有開不完的會……別再忍耐了,您應該看這本書!

  為什麼微軟公司有那麼多生產力超高的團隊?主要就是因為,微軟公司的經理人幾乎都讀過《Peopleware》。我極力推薦這本書,它是每個軟體經理人都必讀的書,而且不是讀一次就好,要每年都讀一次。──Joel Spolsky, www.joelonsoftware.com

  近年來,軟體工程領域的一大貢獻是DeMarco和Lister所寫的《Peopleware》,其基本論點是「我們在工作中所面臨的,在本質上,主要都是社會性的問題,而非技術性的問題」……我由衷地推薦這本書。──《人月神話》第19章

  如果您讀過《人月神話》還不過癮,這本暢銷二十年的專案管理聖經《Peopleware》將可滿足您工作上所有的需求──

  《Peopleware》1987年一出版就引起轟動,因為它一針見血指出了團隊管理的問題點──如何管理天馬行空、但能力特強的腦力工作者。書中強調,腦力密集產業(知識型企業,例如軟體開發、研發工作、或所有創意型工作)的核心是人,不是技術,應該給予這些工作者充分的自由與信任。傳統的勞力密集產業管的是員工的「身體時間」,而腦力密集產業要管的是員工的「腦力時間」。如何帶領好這些腦力工作者,適才發揮,就是這本書的重點。

  本書讀來辛辣而幽默,加上務實的建議、作者豐富的專案經驗,帶動了一股熱潮,Peopleware在軟體業也成了專有名詞。它和《人月神話》共同被譽為軟體書中「兩朵最鮮豔的奇葩」。《人月神話》關注的是「軟體開發」本身,而《Peopleware》關注的是軟體開發中的「人」。1999年第二版推出,又增加8章的新內容。書中的經典名言:

.對屬下的真心關懷,就是管理。
.身處時間壓力下的人不會把工作做得更好,只會做得比較快,結果被迫交出低品質的產品,自尊心降低,最後辭職不幹。
.團隊殺手一覽表:防禦式管理、官僚作風、實體隔離……
.讓團隊產生化學作用的方法……
.容許建設性的混亂,過度強調秩序只會排擠人才。
.給員工一個足夠安靜、不受無謂干擾的辦公環境。
.知識工作者就像自由電子,無為而治才是最有效的管理。
.終極的管理罪惡,就是浪費員工的時間。例如儀式性的會議。

  如何真正發揮人才的力量,這本書做了最佳建議。對於今天越來越重要的知識型產業、創意產業,這本書都值得參考。對於管理者來說,則是每年都該讀一次。

* 本書原有中文譯本《天才當家》,經濟新潮社重新取得中文版權後,將該譯文由《人月神話》譯者錢一一先生修稿、審訂,期能更精確呈現原文精要。並特請作者Timothy Lister撰寫中文版序,書末並附有索引。



Peopleware: 腦力密集產業的人才管理之道

這本書是接下來要看的書…是看完人月神話後由作者推薦的一本…

程式交易請小心再小心

今天下班回到家之後,突然發現我的電腦竟然還開著…目前我的設定是二點會自動關機的…六點到家電腦還開著那絕對不是個正常的現像…我知道我的程式出錯了…
趕快打開螢幕一看…我看到電腦打開了四、五十個下單機…差點沒昏倒…

這就是看到的狀況…整個畫面被下單機佔滿了啊…

系統列上堆滿了下單…還不只一列…足足有近三列之多…


問題就出在我的 MacroExpress 啦…昨天剛更新了下單機的版本…所以程式列的 Title 換了…讓 MacroExpress 認為我的下單機沒打開,所以它就這樣一直一直幫我執行下單機出來了…


還好啊…還好今天我的系統沒訊號…如果有訊號出來的話,五十個下單機一起下單的情況不知道會是怎麼樣…所以…提醒一下有玩程式交易的朋友囉,請檢查檢查再檢查…很多情況一發生會讓你的心血完全白費掉…最好在系統上線的幾天之內都能隨時觀察注意…程式有變動時更要多花時間檢查…才不會像我今天一樣一回家心都涼了…

要是有訊號我人又在公司的話…那就真的沒救啦…

2008年8月21日 星期四

Tradestation 程式碼轉 HTS

請先撥空看看這篇 更改 Feed 網址

我想還是不少人拿到 TS 的程式碼不知道該怎麼轉成 HTS 的…雖然之前有寫過由 HTS 轉到 TS 的教學 HTS 程式碼轉 TradeStation 程式碼HTS 程式碼轉 TradeStation 程式碼 - 函數篇。不過我想看的人應該不多吧..orz

好吧…首先,當拿到 TS 程式碼的時候…

var:count(0), buyline(99999), sellline(0);

if date[0] <> date[1] then begin
count = 0;
buyline = 99999;
sellline = 0;
end;

if time = 1100.00 then begin
buyline = highest(high, 27);
sellline = lowest(low, 27);
end;

if time > 1100.00 and time < 1230.00 and count = 0 then begin
if open < buyline and close > buyline and opend(0) > closed(1) then begin
buy ("b4") next bar at market;
count = count + 1;
end;
if open > sellline and close < sellline and opend(0) < closed(1) then begin
sell ("s4") next bar at market;
count = count + 1;
end;
end;

if marketposition > 0 and time < 1335.00 and close < closed(1) and count > 0 then begin
exitlong next bar at market;
end;
if marketposition < 0 and time < 1335.00 and close > closed(1) and count > 0 then begin
exitshort next bar at market;
end;

if marketposition > 0 and time = 1335.00 then begin
exitlong next bar at market;
end;
if marketposition < 0 and time = 1335.00 then begin
exitshort next bar at market;
end;

第一步:請先檢查程式裡有沒有用到 input,如果有的話第一個就是把 input 改成 parameter。
第二步:把所有的分號(;)去掉。
第三步:把所有的 begin 去掉。
第四步:再所有的if 結尾的 end 後面加上 if 成為 end if
第五步:如果有時間參數的話,把 1000.00 改為 100000,也就是把小數點去掉。
第六步:檢查程式內有沒有用到 opend()、closed()、highd()、lowd()等在分線讀日線資料的函式,如果有的話比較麻煩,後面再提。
第七步:代換函式…例如把 average 代換為 ma。

應該經過上面的步驟後…可以成功轉換 80% 的 TS 程式碼…其它比較複雜的,我大概也要看到程式碼才知道該怎麼轉換…最後,再提一下如何更改 opend() 等的函式到 HTS。

由於 HTS 並沒有提供 opend() 等函式,只有提供 openofd 這樣的 user function…所以如果 TS 程式碼內有用到這些東西…請先建立一個 var 和一個 array…我的習慣如下:

vars:openOfD0(0), closeOfD1(0)
Array:OoD0[84](-1), CoD1[84](-1)

接著…再去計算 openOfD0(0) 的值

openOfD0 = OpenOfD(0, OoD0)
closeOfD1 = CloseOfD(1, CoD1)

現在,HTS 裡面的 openOfD0 這個值就會等同於 TS 內的 opend(0),如果有用到 highd()、lowd()的,就依樣畫葫蘆吧…

真的最後了…如果還是改不出來…那…留言吧…XD…我有時間就幫忙囉。

大盤-970821

請先撥空看看這篇 更改 Feed 網址

很久沒寫有關大盤的文章了…我也很久沒能在盤中看盤,所以盤感現在大概歸零了…很多東西還是要在盤中一直看一直看才會看出個花樣來的…不過,這樣子的東西就當個記錄吧…目前看法還是偏空。



跌破就 6300 見了…週線收黑量增的情況下,續跌的機會滿大的…再加上日線目前盤了個小 m 頭…我想跌破的機會也不小…等比例來算也是在 6300 附近…所以多單還是小心為上,沒事別亂猜底比較好…

程式交易 - 當日高低點程式 HTS 版

請先撥空看看這篇 更改 Feed 網址

回到正題,目前我大概都只在 TradeStation 上寫程式而已,除非有寫出很不錯的東西,才會想到要轉到 HTS 上…所以,大部份時候我附的程式碼應該都會是 TS 的程式碼…要從 TS 程式碼轉到 HTS 其實也滿簡單的…有時間的話我當然是很樂意幫大家轉…只是如果比較忙的話…就沒辦法囉。

而從 TS 程式碼轉到 HTS 程式碼其實說真的也不難…因為基本上兩種的語言是很相近的…參考一下之前寫的教學HTS 程式碼轉 TradeStationHTS 程式碼轉 TradeStation 程式碼 - 函數篇 只要倒著做就行了…有空的話再來寫一篇 TradeStation 程式碼轉 HTS 的吧…

話說這麼多…還是回到這篇的重點… 當日高低點程式 的回應裡有人提到要 HTS 的程式碼…就在這篇附上啦…


vars:count(0), buyline(99999), sellline(0)
vars:openOfD0(0), closeOfD1(0)
Array:OoD0[84](-1), CoD1[84](-1)

openOfD0 = OpenOfD(0, OoD0)
closeOfD1 = CloseOfD(1, CoD1)


if date[0] <> date[1] then
count = 0
buyline = 99999
sellline = 0
end if

if time = 110000 then
buyline = highest(high, 27)
sellline = lowest(low, 27)
end if

if time > 110000 and time < 123000 and count = 0 then
if open < buyline and close > buyline and openOfD0 > closeOfD1 then
buy ("b4") next bar at market
count = count + 1
end if
if open > sellline and close < sellline and openOfD0 < closeOfD1 then
sell ("s4") next bar at market
count = count + 1
end if
end if

if marketposition > 0 and time < 133500 and close < closeOfD1 and count > 0 then
exitlong next bar at market
end if
if marketposition < 0 and time < 133500 and close > closeOfD1 and count > 0 then
exitshort next bar at market
end if

if marketposition > 0 and time = 133500 then
exitlong next bar at market
end if
if marketposition < 0 and time = 133500 then
exitshort next bar at market
end if


記得有空學學怎麼轉喔…自己釣魚總是比等人家給魚快多了嘛。

更改 Feed 網址

先跟已經訂閱的朋友說聲抱歉了…今天在逛 Google Adsense 的時候突然發現了一個新的功能 Adsense for Feed,所以就想說來玩玩看…本來想無痛的把原來的 Feedburn 網址轉過去的,所以就手賤的把舊的刪掉了…結果還是沒辦法用原來的名字申請啊…orz
所以只好麻煩已經訂閱的朋友更變一下 Feed 的網址了…新的 Feed 網址如下:

http://feedproxy.google.com/ssdk

不然也可以直接點下面圖示訂閱

Subscribe in a reader

至於還沒訂閱的…就訂下去吧…你的訂閱是我繼續亂寫的小小動力…XD
舊的 Feed 似乎只能再發三十天而已呢…

2008年8月20日 星期三

在分線內實作 ATR 指標

ATR指標的原文是Average True Range,原文的意思是「平均真實區域」指標,所謂的真實區域,指的就是真實的股價「波動」區域,這個指標可以在開盤時就大概抓出今天可能的波動範圍,其實還滿好用的,只是 TS 內鍵的 AverageTrueRange 函式是利用每根 k 線來計算,跟我想要的不同,所以又只好自己動手作啦。

首先,還是得先準備幾個 function 才行…
第一個 DTrueLow

If Closed(2) < Lowd(1) Then
DTrueLow = Closed(2)
Else
DTrueLow = Lowd(1);

第二個 DTrueHigh

If CloseD(2) > Highd(1) Then
DTrueHigh = Closed(2)
Else
DTrueHigh = Highd(1);

第三個 DTrueRange

DTrueRange = DTrueHigh - DTrueLow;

最後,才是主角…DAvgTrueRange

Inputs: Length(NumericSimple);

DAvgTrueRange = Average(DTrueRange, Length);

搞定…已經可以在分線內用上日線的 ATR 了…畫張圖來看看…準備個 Indicator

plot1(DAvgTrueRange(10), "ATR", yellow, yellow, 2);

就可以得到下面的圖了…


不過看看圖…這樣子的參考價值實在不高…所以把 Indicator 的部份改一下吧…

plot1(opend(0)+DAvgTrueRange(10), "ATR", yellow, yellow, 2);
plot2(opend(0)-DAvgTrueRange(10), "ATR", green, green, 2);

就可以得到下面這張圖…


有參考價值多了…除了當天走勢比較強之外(紅色鍵頭),其餘幾乎都是在範圍內…更有許多天碰到就往上走的情況(黃色鍵頭)…這實在是當沖交易者不得不看的一個指標啊…

個人覺得…這是個很不錯的參考指標…

網友 peter 幫忙實作出來的 HTS 版本…大家給他拍拍手。


Variables: DTrueHigh(0), DTrueLow(0), DTrueRange(0)
Array: OoD[84](-1), HoD[84](-1), LoD[84](-1), CoD[84](-1)

Value2 = HighOfD ( 1, HoD)
Value3 = LowOfD ( 1, LoD)
Value4 = CloseOfD( 1, CoD)

Value7 = CloseOfD( 2, CoD)

Value11 = (Value2+Value3+Value4)/3
//DTrueHigh

If Value7 > Value2 Then
DTruehigh = Value7
Else
DTruehigh = Value2
End If

//DTrueLow

If Value7 < Value3 Then
DTrueLow = Value7
Else
DTrueLow = Value3
End If

//DTrueRange

DTrueRange = (DTruehigh - DTrueLow) / 2

Draw1 ( Value11 + DTrueRange,"ATR",cyan)//Average
Draw2 ( Value11 - DTrueRange,"ATR",cyan)

2008年8月17日 星期日

DreamTrade Beta

天相寫的程式經過我們兩人的修改後,其實已經很不錯了…裡面也有一些我的東西…不過,對於自己寫的程式總是割捨不下啊…畢竟自己也花了不少時間在寫 Draem Trade V4,那怎麼辦呢?那就別爭了…摻在一起做撒尿牛丸吧…

所以,今天把修改完的版本裡面…再加上我原本的程式後…再下去修改了一下…得到了下面的績效圖:


不小心破三百萬了…雖然交易次數稍微多了一些…不過就這樣吧…寫程式寫到快昏頭了…


這應該就定案了吧…晚上改為 HTS 就上線了…短時間不想再碰當沖程式啦…XD
所以轉行寫波段單吧…

2008年8月15日 星期五

程式交易 - 運用連續虧損次數執行動態加減碼

會有這個想法呢…是從連續虧損後勝率會變高的情況…也就是說,如果一個系統回測後最多的連續虧損次數是 4 次,那在連續虧損已經 2 次的情況下,下一次進場的勝率會增加不少;如果已經連續虧損 3 次,那下一次進場的勝率更是會提升…所以在這種情況,如果能在已經出現連續虧損的情況下,讓程式自行加碼,那應該會不錯吧…所以就完成了這個程式…

先看下圖…這是原本的情況,一口單不加碼…


也許有人會想說…何必這麼麻煩呢…我直接每次都下二口單不就好了…當然,這樣獲利會變二倍,不過相對的…最大連續虧損也會變二倍…請看下圖,這是直接下二口單的情況…


接下來,就是本篇的重點了…由於我的程式最多連續虧損是 4 次…所以我設的設定為出現連續虧損 2 次後,就轉為每次下二口單…一直到賺錢單出現再出現虧損單後,就再轉回一口…也就是說下單的情況是這樣:賺(1)賺(1)賠(1)賠(1)賠(2)賺(2)賺(2)賺(2)賺(2)賠(2)賺(1)
在這樣的下單模式會有如下的績效…


當然…沒有一次直接下二口單來的好…不過最大連續虧損並沒有增加太多呢…下面這張圖是下單的狀況…可以比較清楚看到什麼時候變為二口單…又什麼時候轉回一口單…


這種利用連續虧損的次數來動態加減碼…必需自行對程式做調整,也許你的程式最大連續虧損次數是六次…那也許出現連續虧損三次後再加碼會比較好…當然…這就自己研究吧…

下面就來說說這要怎麼寫到程式裡…因為 TS 並沒有函數可以回傳目前已經連續虧損幾次了…所以…全部的東西就自己來做吧…

首先…準備幾個變數

vars:con(1), wintrade(0), lostrade(0);
vars:testcon(0);
wintrade = numwintrades;
lostrade = numlostrades;

這邊是利用到目前賺的次數和賠的次數來計算…所以先準備好上面的東西吧…接著重點來囉…

if wintrade > wintrade[1] then begin
testcon = 0;
end;
if lostrade > lostrade[1] then begin
testcon = testcon + 1;
end;
if testcon = 2 then begin
con = 2;
end;
if testcon = 1 and testcon[1] = 0 then begin
con = 1;
end;

我運用了如果賺錢的次數是增加,那 testcon 為 0,另外如果賠錢的次數增加,那 testcon 就加一,再由 testcon 去判斷目前下單的口數是多少, con 這個變數就是下單的口數…
大概就這樣囉,最後只要再進場時加上 con 這個變數就行了…如下:

buy ("B1") con contract next bar at market;

也許這樣的寫法不是很好…不過目前就只有想到這樣寫啦…想要更好更簡單的寫法…那就只好等待有緣人啦…

補上 HTS 版本…

vars:con(1), wintrade(0), lostrade(0)
vars:testcon(0)
wintrade = numwintrades
lostrade = numlostrades

if wintrade > wintrade[1] then
testcon = 0
end if
if lostrade > lostrade[1] then
testcon = testcon + 1
end if
if testcon = 2 then
con = 2
end if
if testcon = 1 and testcon[1] = 0 then
con = 1
end if

buy ("B1") con contract next bar at market

2008年8月13日 星期三

Tradestation 鱷魚線指標(Alligator)

The Alligator鱷魚線介紹
市場方向的羅盤,協助辨認真正的趨勢並遠離侵蝕利潤的盤整市協助在有方向的趨勢中獲利由三條穩定的均線組成,分別為鱷魚的顎(藍線)、齒(紅線)、唇(綠線)當三條線糾纏在一起時,表示鱷魚在睡覺(盤整)當三條線分開排列時,表示鱷魚已睡醒(產生趨勢),此時鱷魚會猛烈追逐獵物,可能是牛或熊,吃飽後繼續沉睡,等到下次醒來再繼續追逐獵物。

這個指標在 Tradestation 裡面沒有,HTS 比較好實作出來,TS的話需先建立一個 function..
指標的圖如下:


在 Tradestation 內的實作方法…先建立一個 Function,名稱為 SMA,程式碼如下:

inputs : Price(Numeric), Length(Numeric);
Vars : Summation(0), Counter(0);

If CurrentBar = 1 Then begin
Summation = 0;
For Counter = 0 To Length - 1 begin
Summation = Summation + Price[Counter];
End;
SMA = Summation / Length;
end
Else begin
Summation = Summation[1] - SMA[1] + Price;
SMA = Summation / Length;
End;

接著,就可以建立指標了,程式碼如下:

Value1 = SMA((H+L)/2, 5);
Value2 = SMA((H+L)/2, 8);
Value3 = SMA((H+L)/2, 13);

plot1( Value1[3],"唇",green);
plot2( Value2[5],"齒",red);
plot3( Value3[8],"顎",blue);

以鱷魚線來做長線的話,算是有還不錯的成績…有興趣一樣自己玩玩看囉。

2008年8月7日 星期四

一個有趣的指標

這是在聚財網看到人家要求把奇狐裡的指標轉成 HTS 的程式碼,應該是奇狐內建的指標吧,還滿有趣的,隨手把他轉成 HTS 後,也弄成了 TS 的程式來畫看看…結果,看來似乎不錯用…有興趣的就自行參考吧…



這是指標畫出來後的樣子…有發現什麼嗎?附上程式碼給大家玩玩看吧,也許能玩出個心得來也說不定…


value1=(3*c+l+o+h)/6;
value2=(20*value1+19*value1[1]+18*value1[2]+17*value1[3]+16*value1[4]+15*value1[5]+14*value1[6]+13*value1[7]+12*value1[8]+11*value1[9]+10*value1[10]+9*value1[11]+8*value1[12]+7*value1[13]+6*value1[14]+5*value1[15]+4*value1[16]+3*value1[17]+2*value1[18]+1*value1[19])/210;
value3=average(value2,10);
value4=0.5*(value2+value3);
if value3[1] < value3 then begin
plot1(value3, "BBI", magenta, magenta, 2);
end;
if value3[1] >= value3 then begin
plot2(value3, "BBI", cyan, cyan, 2);
end;


其實這隻程式還沒完呢,奇狐後面還有個線性回歸的東西,不過在 TS 裡面畫出來似乎有點怪,也許是因為奇狐的算法和 HTS 的不一樣吧…不過,光是上面這個東西就值得研究了…

有回應說想要 HTS 的程式碼…這邊順便補上囉…

value1=(3*c+l+o+h)/6
value2=20*value1+19*value1[1]+18*value1[2]+17*value1[3]+16*value1[4]+15*value1[5]+14*value1[6]+13*value1[7]+12*value1[8]+11*value1[9]+10*value1[10]+9*value1[11]+8*value1[12]+7*value1[13]+6*value1[14]+5*value1[15]+4*value1[16]+3*value1[17]+2*value1[18]+1*value1[19])/210
value3=ma(value2,10)
value4=0.5*(value2+value3)
if value3[1] < value3 then
draw1(value3, "BBI", magenta, magenta, 2)
end if
if value3[1] >= value3 then
draw2(value3, "BBI", cyan, cyan, 2)
end if

最近有一批鋼鐵好便宜啊

就是鋼鐵。就是中鋼…這可不是因為我目前在子公司上班自推啊…中鋼好久沒看到四十塊以下的價錢了,上次看到已經是一年前了,姑且不論會不會繼續再往下跌,目前這個價錢真的是長期投資的一個不錯的進場點。


38 塊會不會跌破,在我內心小小的希望是希望他跌破的…跌愈多我買的愈高興…不過就算以目前的價格來說,長期投資真的很不錯…


上圖是十年來的股息股利,平均起來一年有 2.7 塊,算起來一年有 7% 的投資報酬率…更不用說近幾年幾乎都是 10% 左右的報酬率了…所以說…最近這一批鋼鐵真的好便宜啊…

2008年8月4日 星期一

程式交易 - 當日高低點程式

今天又把之前的想法拿出來弄了一下,這個想法也滿簡單的,就是在一段時間之後,把當日的高低點抓出來,往上做多、往下做空。其實昨天完成的程式我已經很滿意了,也打算就用那程式開始跑交易,只是因為交易次數實在不夠,所以才想到再寫一個交易次數高一點,但卻又能小賺點錢的程式,今天的這隻…還不算滿意…

來看看不怎麼樣的績效吧…手續費來回還是設二千…



真的是個不怎麼樣的程式啊…所以程式碼就順便貼了…醜話說在前頭,可別直接拿去用然後賠錢找我算帳…
以下,TS 程式碼…


var:count(0), buyline(99999), sellline(0);

if date[0] <> date[1] then begin
count = 0;
buyline = 99999;
sellline = 0;
end;

if time = 1100.00 then begin
buyline = highest(high, 27);
sellline = lowest(low, 27);
end;

if time > 1100.00 and time < 1230.00 and count = 0 then begin
if open < buyline and close > buyline and opend(0) > closed(1) then begin
buy ("b4") next bar at market;
count = count + 1;
end;
if open > sellline and close < sellline and opend(0) < closed(1) then begin
sell ("s4") next bar at market;
count = count + 1;
end;
end;

if marketposition > 0 and time < 1335.00 and close < closed(1) and count > 0 then begin
exitlong next bar at market;
end;
if marketposition < 0 and time < 1335.00 and close > closed(1) and count > 0 then begin
exitshort next bar at market;
end;

if marketposition > 0 and time = 1335.00 then begin
exitlong next bar at market;
end;
if marketposition < 0 and time = 1335.00 then begin
exitshort next bar at market;
end;


2008年8月3日 星期日

這才是 Dream Trade v4

今天又花了一整天的時間寫程式,為什麼要這麼拚?當然是為了賺錢…現在每個月領那少少的薪水,才剛拿到手上還沒熱…就得匯到銀行付房貸去了…壓力啊…
話說回來,今天看天相寫了個 v4? 出來…所以當然要拚一下…總算,今天寫出來的東西可以直接上 v5 了…v4 先丟一邊吧。

交易次數壓更低了,而且獲利和勝率向上提升!雖然交易次數真的少的可憐,七年半的時間才三百三十次…這樣要達到 HTS 的限制實在有困難…不過與其追求高交易次數,倒不如賺得多一點比較實在…

這張圖也不錯,沒有之前走平的樣子了…而且每年都是賺錢的…雖然05年只獲利一萬多,不過至少是賺的…
忙了一天總算是有點結果出來。

Macro Express 簡易教學

會玩到 Macro Express 這套軟體,當然最主要的是因為要打造自動交易電腦,也玩了一陣子才慢慢有點熟,所以,就來簡單的講一下這套軟體怎麼用吧…雖然 Macro 的使用方式就是你想要電腦做什麼事,就一步一步跟他講,接著他就會去做了…不過,因為這套軟體太強大了,有些地方不說說還真的不知道是做什麼用的…


首先…這是開啟後的畫面…右邊就是現有的 Macro 列表,想回到這個畫面請按左側的 Macro Express就會回來了,中間的樹狀目錄則是方便方類用,左側的按鈕包含 Macro Express、Scripting Editor(到 Macro 的編輯畫面)、Direct Editor(直接編 Macro 的文字檔,這…除非很熟了,不然還真的不會用到這個功能…)、Capture(錄影功能,懶的一個指令一個指令編就用這個直接錄吧…不過不建議用錄的…)、Quick Wizard(Macro 建立精靈)、Macro Recycle Bin(刪掉的 Macro 筒)。

主畫面上方則是一些工具鈕,常用到的就是新增 Macro、和 Enable Macro 一個燈泡的按鈕。

看完了主畫面,先用一個自動關機的 Macro 來介紹一下吧,進立 Macro 編輯畫面後,左側就是可以用到的指令啦,包羅萬像,幾乎你想的到的應該都會在裡面找的到才對,右方就是現在存的指令,其實應該滿好懂的,第一行就是移動滑 鼠到螢幕某個地方,我第一行是移動到右上方去按視窗的「X」,這裡要提一下的是 Macro Express 做了一個很好用的功能在滑鼠移動上,就是只要按下 Ctrl - 空白鍵 它就會自己去抓到目前的座標了,以往的 Macro 還要自己 key 呢…

移動完接下來就是按下左鍵啦,然後暫停個 5 秒鐘等電腦反應一下…剛說到不建議用錄影功能就是不容易加入這種暫停指令,再往下就是移動到另一個點,再按下左鍵,然後暫停個 5 秒鐘,接著電腦關機。


其實真的很簡單啊,難的地方就是找到你要的指令,如此而已…



接下來是 Properties 這個分頁,重點是在這邊囉,左邊上方是這個 Macro 的名稱,下方有個 Active 的選項,如果你要這個 Macro 會自動執行的話記得打勾,主畫面也有個燈泡可以按;右邊呢,就是這個 Macro 執行的方式,這邊可以選用 Hot-key 來執行(Hot Key)、或是固定時間自動執行(Schedule)、或是針對某個視窗畫面控制(Control)等。



Hot key 就不用多介紹了吧?…就是按下某個組合鍵就讓該 Macro 執行。所以這邊跳過啦,Schedule 的畫面如上,最上方是執行的方式,可以選擇電腦啟動時(At Startup)、一次(Once)、每小時(Hourly)等,中間的部份則是執行的日期從什麼時候到什麼時候。

以上方畫面為例,我選了每日執行,在這個畫面裡就可以針對每一天的時間、或是星期幾才執行等做設定。


接下來這個是 Control 設定的畫面,按下 Control 後,會有一個上方的視窗跳出來,下方有一個瞄準星,這是可以拖移的,要用 Control 的功能先得把目標視窗叫出來才行。以下圖為例:


我的目標視窗是 HTS 的登入視窗,利用 Control 的功能就是每當這個視窗一跳出來的時後,在 Control 選項可以選擇該視窗在最上方或時成為目標視窗就執行等兩種。接著,把準星拉到密碼的欄位後放開即可,以後只要這個登入視窗一跳出來,不管是什麼時間,該 Macro 都會自動執行。下面就是這個 Macro 主要的設定囉:


這個 Macro 就是要幫忙輸入密碼用的,所以在 Macro 的密命部份找到 Text Type 這個命令,接著在上方輸入密碼後,用滑鼠找到下方的 Enter 鍵,完成即可。

接下來主要該視窗出現,Macro Express 就會自動在該視窗裡幫忙填上密碼並按下 Enter 登入了。

簡易教學至此,應該多玩玩就能上手了,這可是打造自動交易電腦的好工具呢。

Related Posts Plugin for WordPress, Blogger...