kilroy 發表於 14-5-22 15:18

osdak 發表於 14-5-22 15:02 static/image/common/back.gif
大大, 我想請教一下, CME的商品的資料, 應在那裡找到?
if(Name() == "6A #F")   {TickSize = 0.0001; Margi ...
Hi,

ps 小弟是用來指定幾位數的 (PS 代表 price scale)

ex. currency 期貨的報價都是 0.0000 小數點後四位,所以 PS=10000

用意是方便計算

如果最小跳動是 ex. 0.01, 0.0001 這類的話,還好計算

但如果像是 HG, ES, SI, ZC, ZS, ZW 這些可能最小跳動是 0.25 之類

我用的計算方式就是 pointvalue=0.5*ps;

---
剛看了一下之前貼的範例,發現 ES 的部分貼到以前未修改的範例了

正確計算如下

if(Name() == "ES #F")   {ContractMonth = "ESM4-GLOBEX-FUT";       TickSize = 0.25;   MarginDeposit = 4000;PS = 100;   PointValue = 0.5*PS;}



---
合約規格的網站,我習慣會去看這幾個網站

http://www.capitalfutures.com.tw/product/specs-us.asp?xy=1&xt=2
http://www.capitalfutures.com.tw/product/finalday_us.asp?xy=6&xt=2
http://www1.interactivebrokers.ch/contract_info/v3.8/index.php?site=IB&action=Top%20Search&symbol=&description=
https://www.interactivebrokers.com.hk/cn/index.php?f=marginnew&p=fut

參考看看了

skyler 發表於 14-5-22 16:10

kilroy 發表於 14-5-22 15:18 static/image/common/back.gif
Hi,

ps 小弟是用來指定幾位數的 (PS 代表 price scale)


不過k大
HG好像也有錯原來您是寫
if(Name() == "HG #F=1") {TickSize = 0.0005; MarginDeposit = 4000;PS = 1000;PointValue = 12.5*PS; }

是否應該是如下才對呢?!
if ( Name() == "HG #F=1" )
{
    TickSize = 0.0005;
    MarginDeposit = 3300;
    PS = 1000;
    PointValue = 25 * PS;
}





kilroy 發表於 14-5-22 16:12

本帖最後由 kilroy 於 14-5-22 16:14 編輯

skyler 發表於 14-5-22 16:10 static/image/common/back.gif
不過k大
HG好像也有錯原來您是寫
if(Name() == "HG #F=1") {TickSize = 0.0005; MarginDeposit = 4000;   ...
Hi,

if(Name() == "HG #F=1") {ContractMonth = "HGM4-NYMEX-FUT";      TickSize = 0.0005; MarginDeposit = 4000;PS = 10000; PointValue = 2.5*PS; }

感謝指正 ^^"






skyler 發表於 14-5-22 17:57

k大
請問一下
scan商品時是否不會如同
在回測資料按scan時
會將結果顯示在下面的清單中呢?

kilroy 發表於 14-5-22 18:00

skyler 發表於 14-5-22 17:57 static/image/common/back.gif
k大
請問一下
scan商品時是否不會如同



可是我覺得還是開圖表比較安心

參考看看了

skyler 發表於 14-5-22 18:29

本帖最後由 skyler 於 14-5-22 18:31 編輯

會問這個問題是我也預期會有資料
但結果空空的
而用我AlertIF 傳MAIL 到我GMAIL 是有資料
表示策略是有在跑的


GAMIL 收到訊息


SCAN 下確沒有顯示資料




我在回測點scan 如下結果
會有資料



不知道有那邊需要特別設定嗎?

感謝您的回覆







kilroy 發表於 14-5-22 18:39

skyler 發表於 14-5-22 18:29 static/image/common/back.gif
會問這個問題是我也預期會有資料
但結果空空的
而用我AlertIF 傳MAIL 到我GMAIL 是有資料


auto-repeat 打勾好後,要按下 scan 才會開始自動重複掃描唷

skyler 發表於 14-5-22 19:27

kilroy 發表於 14-5-22 18:39 static/image/common/back.gif
auto-repeat 打勾好後,要按下 scan 才會開始自動重複掃描唷

我知道~
所以會看到畫面會每隔一秒閃一下
而且如果沒有按scan
那也不會觸發

AlertIf( Buy, "EMAIL", "Buy " + Name() + " at " + BuyPrice, 1 );
AlertIf( Sell, "EMAIL", "Sell " + Name() + " at " + SellPrice, 2 );
AlertIf( Short, "EMAIL", "Short " + Name() + " at " + ShortPrice, 3 );
AlertIf( Cover, "EMAIL", "Cover " + Name() + " at " + CoverPrice, 4 );

寄到我MAIL了~

不知K大的AB版本是多少? 是64bit的嗎?

另外
Symbol 是否要 Add to Realtime Quote window ?





kilroy 發表於 14-5-22 19:29

skyler 發表於 14-5-22 19:27 static/image/common/back.gif
我知道~
所以會看到畫面會每隔一秒閃一下
而且如果沒有按scan


我是用 64-bit 5.79beta
real time quote 那個用不到

skyler 發表於 14-5-23 08:55

本帖最後由 skyler 於 14-5-23 09:16 編輯

k大您好
想跟您確認一下我的想法是否正確
以下我的測試CODE

_SECTION_BEGIN( "Product Settings" );
SetPositionSize( 1 , spsShares );
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 = 2035 ;
    PS = 10000;
    PointValue = 10 * PS;
}
//加幣
if ( Name () == "6C #F" )
{
    TickSize = 0.0001 ;
    MarginDeposit = 1265 ;
    PS = 10000;
    PointValue = 10 * PS;
}
//歐元
if ( Name () == "6E #F" )
{
    TickSize = 0.0001 ;
    MarginDeposit = 2475 ;
    PS = 10000;
    PointValue = 12.5 * PS;
}
//日幣
if ( Name () == "6J #F" )
{
    TickSize = 0.0001 ;
    MarginDeposit = 3465 ;
    PS = 10000;
    PointValue = 12.5 * PS;
}
//瑞郎
if ( Name () == "6S #F" )
{
    TickSize = 0.0001 ;
    MarginDeposit = 2530 ;
    PS = 10000;
    PointValue = 12.5 * PS;
}
//輕原油
if ( Name () == "CL #F=1" )
{
    TickSize = 0.01 ;
    MarginDeposit = 3190 ;
    PS = 100;
    PointValue = 10 * PS;
}
//emini S&P
if ( Name () == "ES #F" )
{
    TickSize = 0.25 ;
    MarginDeposit = 4758 ;
    PS = 100;
    PointValue = 0.5 * PS;
}
//黃金
if ( Name () == "GC #F=1" )
{
    TickSize = 0.1 ;
    MarginDeposit = 7150 ;
    PS = 10;
    PointValue = 10 * PS;
}
//天然氣
if ( Name () == "NG #F=1" )
{
    TickSize = 0.001 ;
    MarginDeposit = 3135 ;
    PS = 1000;
    PointValue = 10 * PS;
}
//白銀
if ( Name () == "SI #F=1" )
{
    TickSize = 0.005 ;
    MarginDeposit = 9900 ;
    PS = 1000;
    PointValue = 5 * PS;
}
//小道瓊
if ( Name () == "YM #F" )
{
    TickSize = 1 ;
    MarginDeposit = 3575 ;
    PS = 1;
    PointValue = 5 * PS;
}
//玉米
if ( Name () == "ZC #F" )
{
    TickSize = 0.25 ;
    MarginDeposit = 2025 ;
    PS = 100;
    PointValue = 0.5 * PS;
}
//黃豆
if ( Name () == "ZS #F" )
{
    TickSize = 0.25 ;
    MarginDeposit = 4050 ;
    PS = 100;
    PointValue = 0.5 * PS;
}
//小麥
if ( Name () == "ZW #F" )
{
    TickSize = 0.25 ;
    MarginDeposit = 2025 ;
    PS = 100;
    PointValue = 0.5 * 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 = CoverPrice = O;
ShortPrice = SellPrice = O;

AlertIf( Buy, "EMAIL", "Buy " + Name() + " at " + BuyPrice, 1 );
AlertIf( Sell, "EMAIL", "Sell " + Name() + " at " + SellPrice, 2 );
AlertIf( Short, "EMAIL", "Short " + Name() + " at " + ShortPrice, 3 );
AlertIf( Cover, "EMAIL", "Cover " + Name() + " at " + CoverPrice, 4 );

1.
在實際做SCAN下單時
從最上面的
_SECTION_BEGIN( "Product Settings" );

_SECTION_END();
裡面的所有內容
是否都應該刪除或是註解掉
不要寫在程式中
因為這些只有在回測時才會用
實際的情況下是沒用的
不知我理解對嗎?!

2.
Buy = ExRem( Buy, Short );
Short = ExRem( Short, Buy );
Cover = ExRem( Cover , Sell );
Sell = ExRem( Sell , Cover );
在實際交易中是有作用的嗎?!

3.
AlertIf 寫在最末端是否會有問題?

感謝您的回覆

kilroy 發表於 14-5-23 11:21

skyler 發表於 14-5-23 08:55 static/image/common/back.gif
k大您好
想跟您確認一下我的想法是否正確
以下我的測試CODE


Hi,
1.
scan 時,那些回測相關語法都不會用到

只會用到 buy/sell/short/cover 這個部分

不過也不用刪除

2.
有作用

3.
沒問題

參考看看了

osdak 發表於 14-5-28 16:32

大大,想請教一下,我發現6月的白銀(SI)不讓我下單(papertrade account),說違反了physical delivery 規定,我想請教是否正常?6月期貨,現在才5月,於real acount中是否也是不容許?以si為例,那大大一般是什麼時間換下期合約呢?謝謝!

kilroy 發表於 14-5-28 23:14

osdak 發表於 14-5-28 16:32 static/image/common/back.gif
大大,想請教一下,我發現6月的白銀(SI)不讓我下單(papertrade account),說違反了physical delivery 規定, ...

Hi,

IB 不會讓客戶實物交割

所以會有其下單限制 (無論是真實帳戶或是模擬帳戶)

我通常會在收到通知前平倉,換次月合約,這些都是手動

如果忘了或錯過了,最多就是不給你下

所以策略會平倉,只不過不能建新部位

---
大大可以參考 first notice day 去換倉

我沒有一定的答案


參考看看了

osdak 發表於 14-5-29 12:04

kilroy 發表於 14-5-28 23:14
Hi,

IB 不會讓客戶實物交割


原來如此!謝謝解釋!我怕有什麼問題。

greg 發表於 14-5-31 02:08

你好, K 大, 想請教一下~ 我的自動交易(AB+IB)出現的"進出點" 跟我backtesting 時"進出點"大致一樣, 但出現了兩個問題:

1. 還未出現 "Buy" 之前就出現"Sell"
每月第一個Buy signal 出現前, 都有機會在還未出現buy 之前就出現sell 了,
我試過了Sell = exrem (Sell, buy)
還試過了
dn = DateNum();
NewDay = dn != Ref( dn, -1);,
Sell = Sell AND Sum( Buy, BarsSince( newDay) +1) > 0;
但他把我其他的"Sell" 都過濾了
請問大大是用什麼方法避免這種情況的?


2. Max Loss 無法正確send 到IB
我的交易都用 percentage stop, e.g. Max loss = 1%
但我試過幾個方法都無法正確send 到IB, 錯過了止蝕.
包括把止蝕order 跟placeorder 一起send 到IB, 但試了很多次都不成功,
請問大大是如何做自動交易止蝕的?

萬分感激K 大的回覆!

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