jinace 發表於 16-8-11 13:20

AmiBroker試用心得

本帖最後由 jinace 於 16-8-11 13:23 編輯

AmiBroker試用心得

最近有了進軍海外市場的念頭,第一個讓我想到的就是amibroker,因為寬大提供了很完整的solution.

基本上操作起來非常順手,選單介面很直覺,速度也很快,評估的這段時間還發現很多教學資源都來自印度朋友,關鍵字搜尋好像印度也名列前茅,印象中印度人的數學可是一級棒的!

---

對AFL(即AmiBroker使用的程式語言)的一些評估:

AFL每一次的執行都是一個全新的狀態,也就是說每一次被執行時與上一次執行都是不相關的,也就是說一般宣告的number或array都沒辦法延續到下一次的執行,除非用StaticVar或從外部載入

AFL會在不同的狀況下被要求執行(觸發),觸發的原因可以透過Status("actionEX")得知

BarCount是AFL執行時能夠存取的陣列元素(K棒)數量,但不一定等於全域的K棒數量,AFL會自動計算出一個適合該AFL運算的一個最佳size(或透過SetBarsRequired指定),例如有一百天的資料,但只需要顯示最後10天的5日均線,BarCount就有可能是10+5.也就是說BarCount是一個區間的K棒數量,這個區間會是N到全域的最後一根K.

通常拿AFL做backtest只會執行一次,所以不會察覺BarCount在變動,但在圖表(chart)中就會發現BarCount可能隨著可視區間一直在調整,也就是說系統可能每次都會給AFL不同區間的陣列做運算.

這樣的做法會有一些問題,可以試試看ema100 = EMA(C, 100);當可視區域的K棒從最少慢慢調多時,ema100的值也會跟著變動,因為ema是一個累計運算,如果不從頭算起就會有誤差,雖然誤差不大,但會造成一些難以掌控的因素.

陣列取值除了指定索引外也很常用函數取值
LastValue取得最後一個值
SelectedValue取得點選值(highlight位置或最後位置)
其中SelectedValue為一些函數內部預設的取值方式

範例:
LastValue(C) == C == C == 最後的C值

---

花了五六天研究評估,到今天想棄守了,可能打算先擱置再試試看multicharts或tradestation,把我評估的一些缺憾與不適應跟大家分享一下:

1.AFL的生命週期僅只有執行的當下
無法保留變數做累積的運算,只能用StaticVarSet,但我覺得這個挺難用的,因為一個AFL不會只有一個實體,必須指定一個變數名稱讓每個實體不會衝突,而且這個變數的生命週期是從建立後就一直存在硬碟中,除非執行函數刪除.具有累積意義的變數有時候蠻需要init或reset的...

2.1.歷史資料不是依時序執行
我所謂的依時序執行是從第一天逐步執行到最後一天,但AFL一次的執行就解決了所有的歷史資料,陣列式的運算在數學統計上確實很好寫,但逐元素的邏輯運算就變得有些綁手綁腳.

2.2.思考邏輯的轉換
通常我們的思考比較偏向處理當下時間點的局面,但AFL每次執行都要求你完成一個"區段時間"的資料,有點像是用人腦替電腦最佳化....,像是給你最近100根K的報價,你就必須把這100根K內的每個進出信號都算出來,而且必須確保下一次執行也能在過去的同時間點算出同樣的值,否則你會被自己搞混. 沒想到這會成為我的障礙,腦袋不太好使...

3.圖表(chart)
圖表很方便,但圖表無法執行歷史的暫態,即K棒內發生的變化都會被忽略,例如周K圖中就無法處理日K發生的事情,若有這樣的需求,只能把K線調成日K,在AFL再建立周K,或跑Bar Replay,但每秒好像只能跳5筆,或執行回測時將periodicity設為1日,但跑完只有回測數據無法對應K線圖(當然你可以自己開...但與回測無關)

4.回測(backtest)
會希望能夠在K線上看到進出的點位,信號的路徑,口數,註解等等,點擊每筆交易都能開啟策略圖表到適當的時間點觀察.感覺回測與圖表的整合度相當低.

5.實單系統
好像只有幫忙做了下單api,其他都沒有?基本上要搭配backtest運作.這是我比較失望的部分,原本想說會有一套系統紀錄實單的信號/點位/口數/權益數等,結果交易最重要的一環著墨最少.

---

以上是我初步評估的結果,當然研究的不是很透徹,可能還有些技巧我遺漏了,或錯用,還請先進指教.

接下來還會試試看其他軟體,希望各位過來人也能給我些建議,也不排除amibroker.


keymaker 發表於 16-8-13 22:01

saucer 發表於 16-8-13 21:39
你不要替他講話

那人總自以為是


好吧..大大息怒..大大息怒..
雖然他個性比較衝..但是..他還是有貢獻的..

目前華人世界只有本站 coco-in 討論 AmiBroker .. 大家和諧一點..




zaqimon 發表於 16-8-11 13:47

[教學] [分享] 用AB踏入外期程式交易
http://www.coco-in.net/thread-33044-1-1.html

分享一下kilroy大大的文章
只能說不是做不到但是真的不容易

magier 發表於 16-8-11 14:53

1.AFL的生命週期僅只有執行的當下

StaticVarGet 有參數可以控制變數的生命期間


2.1.歷史資料不是依時序執行

使用 for loop bar by bar implement

2.2.思考邏輯的轉換

? 不是很懂 , 使用matlab也是一樣的狀況才對
邏輯本來就應該要保持一致
不應該出現新的input 讓舊有訊號消失除非使用到未來的資料


3.圖表(chart)

使用 multi time frame 可以解決

4.回測(backtest)

右鍵"show current trade arrow" 會幫你開啟到交易時間點的圖表

5.實單系統

這只能自己弄了....通用平台不太會對特定broker去客製化

jinace 發表於 16-8-11 19:01

magier大:

您說的我明白~就是腦袋轉不過來...

想在行動初期找到比較適用的產品~

jinace 發表於 16-8-11 19:10

zaqimon 發表於 16-8-11 13:47
[教學] [分享] 用AB踏入外期程式交易
http://www.coco-in.net/thread-33044-1-1.html



K大這篇超讚的~這幾天讀了兩遍

對我很有幫助~

jinace 發表於 16-8-11 21:14

再測試了NinjaTrader

完全是VC的的寫法~雖然我沒學過

不過這一類的程式語言對我再熟悉不過了

其實一直也有個想法~就是不要再用寫應用程式的角度去看待交易語言

在交易的領域裡應用程式語言就是所謂的低階語言

雖然神通廣大~卻曠日廢時

---

啟動時花了些時間~展示了很多視窗

操作起來有些遲鈍~尤其是選單部分

裡面已包含了各種指標與應用的程式碼可以參考

也有交易策略的部分~很容易編譯~但需要些時間

回測也很容易~產生數據~顯示交易K線路徑圖等等

不過似乎沒有portfolio backtest~好像要跟別的公司買?

雖說是免費~但要接經紀商就要付費了~終身$999

keymaker 發表於 16-8-11 21:30

其實..您說的問題..任何一套平台都有.. (並沒見過全能型的)

jinace 發表於 16-8-11 22:06

這些軟體我都聽過很多年了~

卻從未真正了解使用過~

分享的這些內容當是經驗也好挑毛病也罷~

挑得出毛病表示知道自己要什麼~

反正全部試一輪找到最適合自己的~



---

剛剛試用了中文版的MC

感覺非常不錯~跟我想像的很接近!


從介面上能看到的一些選項及功能...

我幾乎已經確定就是他了~

不過今天到此為止了~累了~

有心得再分享吧~

keymaker 發表於 16-8-13 16:26

本帖最後由 keymaker 於 16-8-13 16:30 編輯

我使用 MC 多年之後才轉成 AmiBroker .. 是因為 .. 我發現 .. 雖然 MC 比較美..但是
AmiBroker 改善並且內建許多 MC 必須開外掛或是加許多碼才有的功能 (例如 GV, ADE, 趨勢線做單)

而且 AmiBroker 語法精煉..少冗字..比較容易記憶以及思考邏輯..
如果有時間多讀一些 AmiBroker 的資料人..或許就會發現..上列優點..
再者..MC 9.0 號稱最新最強的 Portfolio Trader 其實早早就存在於 AmiBroker

總之..AmiBroker 會存在這麼久..絕對不是因為比較便宜..

keymaker 發表於 16-8-13 16:46

如果想要租用 MC 的人..建議 Google 一下 Multicharts 產品比較表
http://www.multicharts.com.tw/characteristic.aspx?FID=29

keymaker 發表於 16-8-13 16:46

上列網址說明了..出租版..無法引用外掛 (例如 GV, ADE....)
也就是說..須要叫用外掛的策略..執行時期存取不到所須的值
這就好像打 LOL 的時候..對手使用寶劍..你用木棍...(您懂的)

harsout 發表於 16-8-13 17:08

MC, AB ... 我老早就扔到外太空去了
MC 忘光
AB記得一丁點

joshsmi 發表於 16-8-13 18:25

I think in your post there seem to be a lot of nonsense resulting from missing knowledge but I only understand half of it because Google's Chinese to English translator is awful.

For example you wrote Barcount would be an array. That's totally wrong. Barcount is not an array but a number/scalar.

As for your points 1 to 5 I think there are a few errors in there too. So if you are looking for proper response I would like to ask whether you could translate them to English and send to my private message box. Then I could give a valuable response to those 5 points.

saucer 發表於 16-8-13 20:13

joshsmi 發表於 16-8-13 18:25
I think in your post there seem to be a lot of nonsense resulting from missing knowledge but I only...

你嘛卡拜託點

什都是你的話

人家哪裡提到 Barcount 是個 Array

jinace 自己都開發了軟件 http://acechart.blogspot.tw/

他會搞不清是 Array 還是 單值 喔




jinace 發表於 16-8-13 21:17

joshsmi 發表於 16-8-13 18:25
I think in your post there seem to be a lot of nonsense resulting from missing knowledge but I only...

不否認我對amibroker的認識不夠深,畢竟我才研究了四五天,有些技法在我的思緒中並沒有浮現.

我列的那幾項內容,我稱它為"缺憾與不適應",並不是要攻擊它,好與壞每個人都有一把尺,但被討論或被檢討在所難免,請以平常心看待,或許我理解錯誤,或許你誤解我的內容,但我不會怪你,because Google's English to Chinese translator is aaaawful. XDDDD

頁: [1] 2
查看完整版本: AmiBroker試用心得