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 大的回覆!