kilroy 發表於 14-4-27 13:13

osdak 發表於 14-4-27 11:56 static/image/common/back.gif
那改的過程,其實也是所有商品停下來,可以這樣說嗎?
還有一事想請教,我見大大interval可以調做2小時, ...

Hi,

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

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


參考看看了

skyler 發表於 14-4-27 19:29

請教 kilroy 大
如果我想再 30分鐘的K線圖
去參考 60分
或是反過來的情況
是否能做的到?

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

若兄台方便能否幫我解答疑惑
感謝~~

kilroy 發表於 14-4-27 20:03

skyler 發表於 14-4-27 19:29 static/image/common/back.gif
請教 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 ... 的訊號組合起來做


參考看看了


osdak 發表於 14-4-27 20:33

大大, 還有一事想請教, 理論上不應在這板提出, 但又跟這帖有關, 希望不要見怪.
大大的策略是建於多商品之上, 那如果有幾個商品於策略中開始表現不濟, 那會否把他們移除?

kilroy 發表於 14-4-27 20:47

osdak 發表於 14-4-27 20:33 static/image/common/back.gif
大大, 還有一事想請教, 理論上不應在這板提出, 但又跟這帖有關, 希望不要見怪.
大大的策略是建於多商品之上 ...

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

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

目前只有考慮增加再增加


參考看看了


skyler 發表於 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);


kilroy 發表於 14-4-29 16:57

skyler 發表於 14-4-29 16:11 static/image/common/back.gif
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);


參考看看了

skyler 發表於 14-4-29 18:51

本帖最後由 skyler 於 14-4-29 19:07 編輯

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

感恩~~

kilroy 發表於 14-4-29 19:08

skyler 發表於 14-4-29 18:51 static/image/common/back.gif
kilroy 大 您好
我剛跑 BackTest 再切回K線看沒有顯示



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

osdak 發表於 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能看到到價錢?

感謝!!

kilroy 發表於 14-5-4 23:31

osdak 發表於 14-5-4 23:13 static/image/common/back.gif
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


參考看看了

skyler 發表於 14-5-19 10:31

請教一下k大
將要回測的商品放入favourities中能否指定商品的順序
以便讓回測時能依照指定的順序scan是否有訊號

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

謝謝


kilroy 發表於 14-5-19 12:27

skyler 發表於 14-5-19 10:31 static/image/common/back.gif
請教一下k大
將要回測的商品放入favourities中能否指定商品的順序
以便讓回測時能依照指定的順序scan是否有 ...

Hi,

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

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

參考看看了

skyler 發表於 14-5-19 13:57

kilroy 發表於 14-5-19 12:27 static/image/common/back.gif
Hi,

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


不好意思
我沒有寫的很清楚
例如
我想將
6A6J 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 序號
然後回測時會依這個序號來依序測試

謝謝~

kilroy 發表於 14-5-19 14:16

skyler 發表於 14-5-19 13:57 static/image/common/back.gif
不好意思
我沒有寫的很清楚
例如

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

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

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

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

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

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

這些都是很有技術的層面

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


頁: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17
查看完整版本: [分享] 用AB踏入外期程式交易