COCO研究院

 找回密碼
 註冊
搜索
查看: 3962|回復: 16

請問如何跑多策略

[複製鏈接]
發表於 14-5-9 14:22 | 顯示全部樓層 |閱讀模式
如我有2個完全不同的策略在單商品跑, 應如何做到?
爬過一下文, 但不太理解
希望有大大指點!!
謝謝!!
發表於 14-5-9 14:34 | 顯示全部樓層
HI
有幾個方式

1. 開兩個圖表
2. 開一個圖表

但結果都一樣,你必須把倉位的數量正確送出到下單機下單

所以得計算這兩個策略進場訊號的倉位總和


參考看看了
 樓主| 發表於 14-5-9 14:43 | 顯示全部樓層
本帖最後由 jacklcl 於 14-5-9 14:54 編輯
kilroy 發表於 14-5-9 14:34
HI
有幾個方式

如開一個圖表, 請問具體操作是怎樣?
我還沒去到下單階段, 只用來做回測看看
我再補充一下
這2個策略的買賣點不同
1個是突破策略並在當天BUY或SHORT
另一個則是捕捉轉折點策略, SIGNAL出現後, 在隔天OPEN PRICE BUY 或 SHORT
所以我不知如何將2個策略結合
主要我是想看看結合後EQUITY CURVE會怎樣

謝謝大大!!

發表於 14-5-9 15:19 | 顯示全部樓層
本帖最後由 joshsmi 於 14-5-9 15:20 編輯

#6 http://www.coco-in.net/thread-34191-1-1.html
發表於 14-5-9 15:21 | 顯示全部樓層
jacklcl 發表於 14-5-9 14:43
如開一個圖表, 請問具體操作是怎樣?
我還沒去到下單階段, 只用來做回測看看
我再補充一下

寫兩組買賣條件

分別畫指標
 樓主| 發表於 14-5-9 15:32 | 顯示全部樓層
本帖最後由 jacklcl 於 14-5-9 15:34 編輯
joshsmi 發表於 14-5-9 15:19
#6 http://www.coco-in.net/thread-34191-1-1.html

Hi joshsmi,

I have just read yr AFL in this post but found that the entry prices are the same in these multiple strategies (BuyPrice = SellPrice = Close;).

But if the strategies have different entry point, says one will buy at breakout out point at intraday but another will buy at next day at open price, how can I write this in AFL if i want to combine it into one?

Thank you again!!
發表於 14-5-9 15:44 | 顯示全部樓層
寫2個afl,開2個analysis,都指向同一個商品,run
that's all
 樓主| 發表於 14-5-9 15:49 | 顯示全部樓層
lwhuang 發表於 14-5-9 15:44
寫2個afl,開2個analysis,都指向同一個商品,run
that's all

大大, 現在我就是這樣做
不過這樣做就會有2個回測報告
而我想將2個合併後只出一個回測報告
主要是想看合併後EQUITY CURVE走勢
所以不知如何做到

謝謝!!
發表於 14-5-9 16:26 | 顯示全部樓層
推薦策略經理人

http://www.quantitative-advisors.com/strategymanager

你的需求先用他的試用版就夠了
 樓主| 發表於 14-5-9 17:42 | 顯示全部樓層
wicebing 發表於 14-5-9 16:26
推薦策略經理人

http://www.quantitative-advisors.com/strategymanager

謝大大, 剛看過了
只能測試台指
不能自行匯入其他商品
發表於 14-5-9 17:43 | 顯示全部樓層
jacklcl 發表於 14-5-9 17:42
謝大大, 剛看過了
只能測試台指
不能自行匯入其他商品

輸出成 excel 在自製一下吧 XD
 樓主| 發表於 14-5-9 21:23 | 顯示全部樓層
kilroy 發表於 14-5-9 17:43
輸出成 excel 在自製一下吧 XD

大大意思是將回測結果輸出成EXCEL
再自行用EXCEL將2個策略的EQUITY CURVE畫出?
發表於 14-5-9 21:36 | 顯示全部樓層
大家有寫信去amibroker問過嗎?他們會回答喔!針對這個問題我去信問了,回覆如下:還沒研究,先貼上來

Hello,

Thank you very much for your e-mail. You can create a copy of equity from each backtest run:
http://www.amibroker.com/kb/2006 ... f-portfolio-equity/

If you use different names for the composite tickers you create, then you can use FOREIGN to combine them all:



equityTicker = Foreign("~EquityCopy1", "C")+Foreign("~EquityCopy2", "C")+Foreign("~EquityCopy3", "C");





See:

http://www.amibroker.com/f?foreign



So – you can for example modify the built-in Portfolio-equity formula for that like this:
  1. eq = Foreign("~EquityCopy1", "C")+Foreign("~EquityCopy2", "C")+Foreign("~EquityCopy3", "C");;

  2. Cash = Foreign("~EquityCopy1", "L")+Foreign("~EquityCopy2", "L")+Foreign("~EquityCopy3", "L");;

  3. dr = eq - Highest(eq);

  4. bslh = HighestBars(eq);

  5. GraphZOrder=1;

  6. Plot(eq, "Portfolio Equity", colorLightBlue, styleArea );

  7. if( ParamToggle("Show Cash", "No|Yes", 1 ) ) Plot(cash, "Cash", colorGreen, styleArea );

  8. if( ParamToggle("Show Drawdown", "No|Yes", 1 ) ) Plot(dr, "Drawdown", colorDarkRed, styleArea );

  9. if( ParamToggle("Show #bars since last high", "No|Yes", 0 ) ) Plot(bslh, "#bars since last high", colorDarkYellow, styleLine | styleOwnScale, 0, 10 * LastValue( Highest( bslh ) ) );

  10. islastbar = Status("lastbarintest");

  11. isfirstbar = Status("firstbarintest");

  12. bar = BarIndex();

  13. firstbar = LastValue( ValueWhen( isfirstbar, bar ) );

  14. lastbar = LastValue( ValueWhen( islastbar, bar ) );

  15. al = LastValue( ValueWhen( islastbar, LinRegSlope( eq, Lastbar - firstbar + 1 ) ) );

  16. bl = LastValue( ValueWhen( islastbar, LinRegIntercept( eq, Lastbar - firstbar + 1 ) ) );

  17. Lr = al * ( BarIndex() - firstbar ) + bl;

  18. Lr = IIf( bar >= firstbar AND bar <= lastbar , Lr, Null );

  19. if( ParamToggle("Show lin. reg.", "No|Yes", 0 ) )Plot( Lr , "Linear Reg", colorRed, styleThick );
複製代碼

評分

參與人數 2金錢 +7 收起 理由
jacklcl + 2 按一個讚
kilroy + 5 感謝分享

查看全部評分

發表於 14-5-9 21:37 | 顯示全部樓層
jacklcl 發表於 14-5-9 21:23
大大意思是將回測結果輸出成EXCEL
再自行用EXCEL將2個策略的EQUITY CURVE畫出?

是的

AB 可以一個 AFL 回測 多個商品

而多個 AFL 跑一個商品的回測,沒辦法跑在同一個 report 上

這點 MC 就做得很好,也方便多了
---

以下是輸出進出場點位的範例

_SECTION_BEGIN("BackTest Export");
BT=fopen("C:\\BackTEST.csv","w");
_PZ=1;
y = Year(); m = Month(); d = Day();
ThisIsLastBar = BarIndex() == LastValue( BarIndex() );

for( i = 0; i < BarCount; i++ )
{
  if( Buy )
  {
   BTE=StrFormat("%02.0f/%02.0f/%02.0f,B,%.04f,%g\n",Y,M,D,BuyPrice, _PZ);
   fputs(BTE,BT);
  }

  if( Short )
  {
   BTE=StrFormat("%02.0f/%02.0f/%02.0f,S,%.04f,%g,%g\n",Y,M,D, ShortPrice, _PZ);
   fputs(BTE,BT);
  }

  if( ThisIsLastBar )
  {
   BTE = StrFormat("%02.0f/%02.0f/%02.0f,Close,%.4f\n",Y,M,D, C);
   fputs(BTE,BT);
  }

}
fclose(BT);

_SECTION_END();



---
當中 _PZ 是口數,請依照自己的策略來設定囉

跑出來的 CSV 還需要再自行輸入判斷式來計算損益(記得將滑價與成本加進去算)

兩個 AFL 跑出 CSV 檔之後,計算好了再畫圖表出來


參考看看了

評分

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

查看全部評分

發表於 14-5-9 21:46 | 顯示全部樓層
本帖最後由 kilroy 於 14-5-9 21:54 編輯
lwhuang 發表於 14-5-9 21:36
大家有寫信去amibroker問過嗎?他們會回答喔!針對這個問題我去信問了,回覆如下:還沒研究,先貼上來

Hel ...

小弟也愛發問

之前問過的問題,比較有印象的大概是...

1. 可否自行設定 rollover date
    ans: 沒有這樣的功能,可以自己寫 AFL 來接資料 (但不提供範例 囧")

2. 可否增設關閉確認視窗
    ans: 不小心關閉視窗(chart)時,可以用 new -> defult chart 再開啟原本預載的AFL視窗
           (但不符合我的需求) 目前也無打算增設這樣的功能 囧"
           其實我只要一個關閉前的確認視窗而已 XD

3. 回補 eSignal 為何 1min 的資料只能回補到 2011/7 左右
    ans: 說是 eSignal 的問題,不過把 time base interval 設定成 5min 就可以回補到 2007/mar 了
           而 time base 不影響即時接收 tick 的週期

4. 有關於 IB Controller 對應 IB TWS 的語法使用,如重複送單問題等等...
    ans: 參考此網站


大大能提供建議給 AB,AB 再增加新功能,這點很棒~~


感謝分享



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

本版積分規則

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

GMT+8, 24-5-14 01:59

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 | AI繪圖AI超擬真美女AI beauty AI Stable DiffusionAI正妹AI Lookbook