COCO研究院

 找回密碼
 註冊
搜索
樓主: kilroy

[教學] [分享] 用AB踏入外期程式交易

  [複製鏈接]
 樓主| 發表於 14-4-27 13:13 | 顯示全部樓層
osdak 發表於 14-4-27 11:56
那改的過程,其實也是所有商品停下來,可以這樣說嗎?
還有一事想請教,我見大大interval可以調做2小時, ...

Hi,

當 SCAN 停止後,AFL就不會執行,所以所有商品也都不會有訊號了

---
tools -> preferences -> intraday 裡可以設定 custom time intervals


參考看看了
發表於 14-4-27 19:29 | 顯示全部樓層
請教 kilroy 大
如果我想再 30分鐘的K線圖
去參考 60分
或是反過來的情況
是否能做的到?

另外
小弟在
這篇對於程式寫法上有疑問
http://www.coco-in.net/thread-34132-1-1.html

若兄台方便能否幫我解答疑惑
感謝~~
 樓主| 發表於 14-4-27 20:03 | 顯示全部樓層
skyler 發表於 14-4-27 19:29
請教 kilroy 大
如果我想再 30分鐘的K線圖
去參考 60分

Hi,

不同周期的東西丟出來要小心 look into the future

除了語法上要注意外,最簡單檢視的方式就是透過 bar replay 來觀察

兩個或多個不同週期的數據相互參考,這點在 AB 上可以做得到的

要注意上述提到的 bug

---
寫法的話,我只會用最簡單的方法來寫

MA5_P1 = Ref( MA( C, 5 ), -1 );     //前一根的 MA5
MA5_P2 = Ref( MA( C, 5 ), -2 );     //前二根的 MA5
Cond_MA5_Buy = MA5_P1 > MA5_P2;  //前一根的MA5 > 前二根的MA5 表示 MA5在前一根是向上
Cond_MA5_Sell = MA5_P1 < MA5_P2;  //前一根的MA5 < 前二根的MA5 表示 MA5在前一根是向下

Cross5_Buy =  Cross ( Ref( C, -1 ), MA5_P1 );    //前一根K棒向上穿過MA5
Cross5_Sell = Cross ( MA5_P1, Ref( C, -1 ) );     //前一根K棒向下穿過MA5


Buy = Cond_MA5_Buy AND Cross5_Buy ;
Sell = Cross5_Sell;
Short = Cond_MA5_Sell AND Cross5_Sell ;
Cover = Cond_MA5_Buy ;


Buy = ExRem(Buy, Short);
Short = ExRem(Short, Buy);
Cover = ExRem(Cover , Sell );
Sell = ExRem(Sell , Cover );


BuyPrice = CoverPric = O;
ShortPrice = SellPrice = O;


---
AB 麻煩的地方就像大大這裡想要做到 for 迴圈去判斷目前倉位還有buy short cover sell 訊號進場

建議先用最基本的方式來寫買賣訊號

如果要做加碼的策略就是將 buy buy1 buy2 ... 的訊號組合起來做


參考看看了


評分

參與人數 1金錢 +2 收起 理由
skyler + 2 收到您的建議~~ 感謝指導

查看全部評分

發表於 14-4-27 20:33 | 顯示全部樓層
大大, 還有一事想請教, 理論上不應在這板提出, 但又跟這帖有關, 希望不要見怪.
大大的策略是建於多商品之上, 那如果有幾個商品於策略中開始表現不濟, 那會否把他們移除?
 樓主| 發表於 14-4-27 20:47 | 顯示全部樓層
osdak 發表於 14-4-27 20:33
大大, 還有一事想請教, 理論上不應在這板提出, 但又跟這帖有關, 希望不要見怪.
大大的策略是建於多商品之上 ...

小弟比較偏向總體表現
因為我沒有辦法從幾次的進出或是近期的狀況

而判斷這個商品不行了,或是不能做了

目前只有考慮增加再增加


參考看看了


評分

參與人數 1金錢 +2 收起 理由
osdak + 2 感謝分享

查看全部評分

發表於 14-4-29 16:11 | 顯示全部樓層
kilroy 大您好
想要請教 箭頭畫圖
我在您 108樓 改寫的內容裡加上了 PlotShapes()
但我回到 K線圖 並沒有看到
在進出場點上有箭頭的符號

是不是
我還需要設定什麼?

感謝~

程式碼如下:

SetOption( "MaxOpenPositions" , 1 );
SetOption( "InitialEquity" , 10000 );
SetOption( "FuturesMode" , 1 );
SetOption( "CommissionMode" , 3 );
SetOption( "CommissionAmount" , 6.5 );
RoundLotSize = 1;

if ( Name () == "6A #F" )
{
    TickSize = 0.0001 ;
    MarginDeposit = 3000 ;
    PS = 10000;
    PointValue = 10 * PS;
}

_SECTION_END();

MA5_P1 = Ref( MA( C, 5 ), -1 );   
MA5_P2 = Ref( MA( C, 5 ), -2 );     
Cond_MA5_Buy = MA5_P1 > MA5_P2;  
Cond_MA5_Sell = MA5_P1 < MA5_P2;  

Cross5_Buy =  Cross ( Ref( C, -1 ), MA5_P1 );   
Cross5_Sell = Cross ( MA5_P1, Ref( C, -1 ) );   


Buy = Cond_MA5_Buy AND Cross5_Buy ;
Sell = Cross5_Sell;
Short = Cond_MA5_Sell AND Cross5_Sell ;
Cover = Cond_MA5_Buy ;


Buy = ExRem(Buy, Short);
Short = ExRem(Short, Buy);
Cover = ExRem(Cover , Sell );
Sell = ExRem(Sell , Cover );


BuyPrice = CoverPric = O;
ShortPrice = SellPrice = O;

PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Short, shapeDownArrow, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorGreen, 0, H, Offset=40);
PlotShapes(IIf(Cover, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);


 樓主| 發表於 14-4-29 16:57 | 顯示全部樓層
skyler 發表於 14-4-29 16:11
kilroy 大您好
想要請教 箭頭畫圖
我在您 108樓 改寫的內容裡加上了 PlotShapes()

試試看這個

PlotShapes(IIf(Buy, 59, shapeNone), 7, 0, WMA(O, 1)-2*ATR(15), 6);
PlotShapes(IIf(Short, 60, shapeNone), 7, 0, WMA(O, 1)+2*ATR(15), 0);


參考看看了

評分

參與人數 1金錢 +2 收起 理由
skyler + 2 感謝分享

查看全部評分

發表於 14-4-29 18:51 | 顯示全部樓層
本帖最後由 skyler 於 14-4-29 19:07 編輯

感謝 K 大~
我研究出來了
原來自己在跑完結果後沒有
show
難怪沒有出現線圖

感恩~~
2014-04-29_183946.png
2014-04-29_183707.png
2014-04-29_185336.png
 樓主| 發表於 14-4-29 19:08 | 顯示全部樓層
skyler 發表於 14-4-29 18:51
kilroy 大 您好
我剛跑 BackTest 再切回K線看沒有顯示

可以全部都寫在同一個 AFL 裡

評分

參與人數 1金錢 +2 收起 理由
skyler + 2 感謝您的指導~ 我懂了!

查看全部評分

發表於 14-5-4 23:13 | 顯示全部樓層
Kilroy大大,

我在對應你提供的商品和IB中的名稱, 但對到半路, 好像有點問題:

if(Name() == "6A #F") {ContractMonth = "6AM4-GLOBEX-FUT"; }
if(Name() == "6E #F") {ContractMonth = "M6EM4-GLOBEX-FUT"; }
if(Name() == "6S #F") {ContractMonth = "6SM4-GLOBEX-FUT"; }
if(Name() == "CL #F=1") {ContractMonth = "CLM4-NYMEX-FUT";}
if(Name() == "ES #F") {ContractMonth = "ESM4-GLOBEX-FUT"; }
if(Name() == "GC #F=1") {ContractMonth = "GCK4-NYMEX-FUT"; }
if(Name() == "NG #F=1") {ContractMonth = "NGM4-NYMEX-FUT"; }
if(Name() == "SI #F=1") {ContractMonth = "SILK4-NYMEX-FUT"; }
比如6E是否就是M6EM4? 可否請教, 我怎樣去肯定esignal的報價和IB中的下單合同是同一商品呢? 還有, 想請問大大, 你是訂了eisignal, 那是否在IB能看到到價錢?

感謝!!
 樓主| 發表於 14-5-4 23:31 | 顯示全部樓層
osdak 發表於 14-5-4 23:13
Kilroy大大,

我在對應你提供的商品和IB中的名稱, 但對到半路, 好像有點問題:

Hi,

TWS API 對應商品的部分 (要確認同一商品時)

商品名稱可以用 IB 叫出來看,就正確無誤了

ex. 6E 在 IB 裡你要打 eur 來選擇



點進去會有 description 視窗,裡面就有合約全部名稱(包含期交所、類別)

可以參考以下兩個網站來看 symbol 及 contract 資訊

https://www.interactivebrokers.com.hk/cn/index.php?f=marginnew&p=fut

http://www1.interactivebrokers.ch/contract_info/v3.8/index.php?site=IB&action=Top%20Search&symbol=&description=

---
而 eSignal 的報價是 feed 給 AB 上報價的

TWS 上的報價要向 IB 訂閱 US bundles


參考看看了

評分

參與人數 1金錢 +2 收起 理由
osdak + 2 謝謝!!

查看全部評分

發表於 14-5-19 10:31 | 顯示全部樓層
請教一下k大
將要回測的商品放入favourities中能否指定商品的順序
以便讓回測時能依照指定的順序scan是否有訊號

另外
如何在回測中能取得每筆交易後的帳號權益?
我用equity()
好像只能取得 InitialEquity 的金額

謝謝


 樓主| 發表於 14-5-19 12:27 | 顯示全部樓層
skyler 發表於 14-5-19 10:31
請教一下k大
將要回測的商品放入favourities中能否指定商品的順序
以便讓回測時能依照指定的順序scan是否有 ...

Hi,

我不懂指定商品先後順序的意思 ^^"

而權益的話,用用看這個 Equity = Ref(Equity(1), -1);

參考看看了
發表於 14-5-19 13:57 | 顯示全部樓層
kilroy 發表於 14-5-19 12:27
Hi,

我不懂指定商品先後順序的意思 ^^"

不好意思
我沒有寫的很清楚
例如
我想將
6A  6J 6E 6S ZW NG  這六個商品加入到最愛中
但是加進去時的排序是
6A 6E 6J 6S NG ZW

在策略的條件下
SetPositionSize(2 , spsShares );
SetOption( "MaxOpenPositions" , 2 );
SetOption( "InitialEquity" , 10000 );

跑多商品回測時
會依序去判斷是否有買賣訊而交易
也就是說
當6A ZW 同時間都有買訊時
當6A有訊號買進二口時
這時ZW就不會執行了

因此
我想要去排序商品
讓策略能依我想要的順序去判斷
例如:ZW 6E 6A NG 6J 6S

我有看到symbol 的information 中有一個叫index
可是好像不是我認知的
先指定symbol 序號
然後回測時會依這個序號來依序測試

謝謝~
 樓主| 發表於 14-5-19 14:16 | 顯示全部樓層
skyler 發表於 14-5-19 13:57
不好意思
我沒有寫的很清楚
例如

這樣的方式可能要透過 custom backtest 才有可能做到了
但一定是非常複雜的

---
回測的先後順序是依照(時間)誰先有訊號誰就進場

AB 是可以指定最大持倉數量

可是如果要指定哪個商品進場的優先權

我想那個複雜度是非常高的

且回測的結果還要考慮到如何把單子送出去、送的順序等等

這些都是很有技術的層面

---
大大應該是想做多商品相互參考的組合,提高資金使用率?


您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-23 10:55

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |