jacklcl 發表於 14-7-25 11:26

osdak 發表於 14-7-25 11:20 static/image/common/back.gif
我之前也試過,是因為同一個static variable在不同analysis windows同一時間在跑,互相干擾,後來那一下v ...

想問問是什麼意思?
我沒用scan去下單
只開了圖表

osdak 發表於 14-7-25 11:42

jacklcl 發表於 14-7-25 11:26
想問問是什麼意思?
我沒用scan去下單
只開了圖表

我同一時間有兩個afl在跑,後來發現,原來名字相同會互相干擾,如果你同一時間跑一個afl, 那就應該不是的遇見的問題

jacklcl 發表於 14-7-25 11:47

osdak 發表於 14-7-25 11:42 static/image/common/back.gif
我同一時間有兩個afl在跑,後來發現,原來名字相同會互相干擾,如果你同一時間跑一個afl, 那就應該不是的 ...

我應該不是這個問題了
我只有1個AFL在跑
師兄你現在下單順利嗎

osdak 發表於 14-7-25 11:57

jacklcl 發表於 14-7-25 11:47 static/image/common/back.gif
我應該不是這個問題了
我只有1個AFL在跑
師兄你現在下單順利嗎

我還在papertrade呢, 之前試過不停下單, 因為我同一時間開幾個圖和scan, 後來改了statics variable的名字, 就可以, 但奇怪的, 我測試了個多月, 平均一個月總有兩,三次下單出問題, 所以我剛剛加了一個條間, position size大於1時(我的口數)或小於-1時, 就會馬上平倉停止, 但這只是治標, 我還未找出問題在那裡....

jacklcl 發表於 14-7-25 12:21

osdak 發表於 14-7-25 11:57 static/image/common/back.gif
我還在papertrade呢, 之前試過不停下單, 因為我同一時間開幾個圖和scan, 後來改了statics variable的名字 ...

你意思是否指那些OrderID要在不同AFL設定不同的名?

jacklcl 發表於 14-7-25 16:41

skyler 發表於 14-7-25 11:12 static/image/common/back.gif
j兄您好
我在 250樓 也曾遇過這樣的問題
簡單說


S大, 這個Code你能用嗎
我試過還是會有重複下單的問題
這次不是連續Buy及Sell
而是連續Sell

skyler 發表於 14-7-25 18:16

本帖最後由 skyler 於 14-7-25 18:17 編輯

jacklcl 發表於 14-7-25 16:41 static/image/common/back.gif
S大, 這個Code你能用嗎
我試過還是會有重複下單的問題
這次不是連續Buy及Sell


我貼一下我自己闗於IB的那段程式碼
你參考看看

_SECTION_BEGIN( "IB Controller" );
{
    ibc = GetTradingInterface( "IB" );

    BuyTrigger = LastValue( Buy );
    SellTrigger = LastValue( Sell );
    ShortTrigger = LastValue( Short );
    CoverTrigger = LastValue( Cover );
   
    Reset = ParamTrigger( "Reset All", "RESET" );
    PrevTN = StaticVarGet( "TimeNumber" + Name() );
    TN = LastValue( TimeNum() );
    NewBar = TN != PrevTN;
    StaticVarSet( "TimeNumber" + Name(), TN );
   
    BuyOrderID = StaticVarGetText( "BuyOrderID" + Name() );
    SellOrderID = StaticVarGetText( "SellOrderID" + Name() );
    ShortOrderID = StaticVarGetText( "ShortOrderID" + Name() );
    CoverOrderID = StaticVarGetText( "CoverOrderID" + Name() );
   
    BuyPending = ibc.IsOrderPending( BuyOrderID );
    SellPending = ibc.IsOrderPending( SellOrderID );
    ShortPending = ibc.IsOrderPending( ShortOrderID );
    CoverPending = ibc.IsOrderPending( CoverOrderID );
           
    Shares = 1;

    if ( NewBar )
    {
      if ( NOT BuyPending )
      {
            StaticVarSetText( "BuyOrderID" + Name(), "" );
      }

      if ( NOT SellPending )
      {
            StaticVarSetText( "SellOrderID" + Name(), "" );
      }

      if ( NOT ShortPending )
      {
            StaticVarSetText( "ShortOrderID" + Name(), "" );
      }
      
      if ( NOT CoverPending )
      {
            StaticVarSetText( "CoverOrderID" + Name(), "" );
      }
    }

    if ( BuyTrigger AND BuyOrderID == "" )
    {
      ibc.CloseAllOpenPositions( ContractMonth );
        BuyOrderID = ibc.PlaceOrder(ContractMonth, "BUY", Shares, "MKT", 0, 0, "DAY", True);
               
      StaticVarSetText( "BuyOrderID" + Name(), BuyOrderID, true );
      
    }
    else if ( SellTrigger AND SellOrderID == "" AND ibc.GetPositionSize( ContractMonth ) > 0 )
    {         
        SellORderID = ibc.PlaceOrder(ContractMonth, "SELL", Shares, "MKT", 0, 0, "DAY", True);
               
      StaticVarSetText( "SellOrderID" + Name(), SellOrderID, true );
    }
    else if ( ShortTrigger AND ShortOrderID == "" )
    {
      ibc.CloseAllOpenPositions( ContractMonth );
        ShortOrderID = ibc.PlaceOrder(ContractMonth, "SELL", Shares, "MKT", 0, 0, "DAY", True);
               
      StaticVarSetText( "ShortOrderID" + Name(), ShortOrderID, true );
    }
    else if ( CoverTrigger AND CoverOrderID == "" AND ibc.GetPositionSize( ContractMonth ) < 0 )
    {
        CoverOrderID = ibc.PlaceOrder(ContractMonth, "BUY", Shares, "MKT", 0, 0, "DAY", True);
               
      StaticVarSetText( "CoverOrderID" + Name(), CoverOrderID, true );      
    }
    else if ( Reset )
    {
      StaticVarSetText( "BuyOrderID" + Name(), "" );

      if ( BuyPending )
        {
                ibc.CancelOrder( BuyOrderID );
        }

        StaticVarSetText( "SellOrderID" + Name(), "" );

        if ( SellPending )
        {
                ibc.CancelOrder( SellOrderID );
        }
               
        StaticVarSetText( "ShortOrderID" + Name(), "" );

      if ( ShortPending )
        {
                ibc.CancelOrder( ShortOrderID );
        }

        StaticVarSetText( "CoverOrderID" + Name(), "" );

        if ( CoverPending )
        {
                ibc.CancelOrder( CoverOrderID );
        }
    }
}

jacklcl 發表於 14-7-25 18:29

skyler 發表於 14-7-25 18:16 static/image/common/back.gif
我貼一下我自己闗於IB的那段程式碼
你參考看看



S大, 我明白了!
我根據你指導加了GetPositionSize
但在下面紅色那2句我仍然用ClosePosition來寫
所以會重複下單
   else if ( SellTrigger AND SellOrderID == "" AND ibc.GetPositionSize( ContractMonth ) > 0 )
    {         
      SellORderID = ibc.PlaceOrder(ContractMonth, "SELL", Shares, "MKT", 0, 0, "DAY", True);
               
      StaticVarSetText( "SellOrderID" + Name(), SellOrderID, true );
    }

else if ( CoverTrigger AND CoverOrderID == "" AND ibc.GetPositionSize( ContractMonth ) < 0 )
    {
      CoverOrderID = ibc.PlaceOrder(ContractMonth, "BUY", Shares, "MKT", 0, 0, "DAY", True);
               
      StaticVarSetText( "CoverOrderID" + Name(), CoverOrderID, true );      
    }

由於我之前並沒有學過程式語言
有時要想很久才明白它的含意{:4_155:}
K大這個貼子真的幫了很多!






skyler 發表於 14-7-25 19:39

本帖最後由 skyler 於 14-7-25 19:42 編輯

jacklcl 發表於 14-7-25 18:29 static/image/common/back.gif
S大, 我明白了!
我根據你指導加了GetPositionSize
但在下面紅色那2句我仍然用ClosePosition來寫

是的!
問題就是在那裡
因為 sell 與 short 的id
永遠都是""
因為if 的條件永遠都會執行
我後來加倉位的判斷就不會有這種問題了

k大開的這樓
裡面有很多的問題與解答
對於初接觸的人
能得到很多的解答
所以值得從頭到尾看一看


jacklcl 發表於 14-7-25 21:11

skyler 發表於 14-7-25 19:39 static/image/common/back.gif
是的!
問題就是在那裡
因為 sell 與 short 的id


是的, 這個帖子我經常重看
還打算把它列印出來XD
相信大部份在香港用AB的人都跑到COCO了
在香港, 做程式交易的人少
用AB的人相信更少了, 而且聽回來的評價都不怎麼樣
反而用MC的人會較普遍

osdak 發表於 14-7-26 09:10

jacklcl 發表於 14-7-25 21:11
是的, 這個帖子我經常重看
還打算把它列印出來XD
相信大部份在香港用AB的人都跑到COCO了


很同意,我之前都沒有聽過程式交易,也不知道amibroker, mc什麼的,偶然看到這裡,實在很感謝kilroy兄和一眾網上朋友大大。

jacklcl 發表於 14-7-26 11:30

試了一天, 基本上重複下單問題已解決
但我發現我策略會出現K大之之前說的那種bug
有些時候H及L同時符合出場及入場條件
而之前我把策略出場設定為H > 某條件就不出場
但真實交易時有可能是L已符合出場條件
那時候我在真實交易時已出場, 但在回測中我還在持有倉位!

tuan 發表於 14-7-28 10:09

大大真是佛心來的!不知道國外哪裡有比較多的Amibroker參考程式碼,之前都研究MultiChart,但最近也想研究一下Amibroker,因為Amibroker真的效能很不錯

kilroy 發表於 14-7-28 10:30

tuan 發表於 14-7-28 10:09 static/image/common/back.gif
大大真是佛心來的!不知道國外哪裡有比較多的Amibroker參考程式碼,之前都研究MultiChart,但最近也想研究一下 ...

最大宗的範例網站就是這個了
http://www.wisestocktrader.com

jacklcl 發表於 14-7-29 11:54

試了幾天, 基本上連續下單已解決
但我發現有一個問題
我用突破策略試下的
有時當突破後, 會連續出現2次多單或空單
我在想會不會是突破後OrderID未傳回就再出現突破
因H會不斷變動, 當第2次突破後
此時第1次突破的OrderID應已傳回
所以我看見最多只出現2次重複下單
簡單說是OrderID傳回速度慢過第2次的signal出現
這個問題要看看怎樣解決
頁: 14 15 16 17 18 19 20 21 22 23 [24] 25 26 27 28 29 30 31
查看完整版本: [分享] 用AB踏入外期程式交易