COCO研究院

 找回密碼
 註冊
搜索
查看: 6517|回復: 12

請問AB如何才能處理多倉位

[複製鏈接]
發表於 11-8-27 00:13 | 顯示全部樓層 |閱讀模式
小弟之前有用AB來做自動交易,
但當時都只下一口單,後來因績效不佳就停掉了,
心灰意冷之餘也停止交易一陣子,
不過最近有個想法,想說如果可以同時交易多口,
也就是部位可以伸縮的話,也許會比較有勝算。

但部位如何處理是一個問題,
小弟想達到的目標是如果滿足某條件,譬如均線金叉,
則進一口,並紀錄進場價位,供停損用或停利用
若再滿足某條件,例如進場後又漲了100點,則進第二口(順勢加碼),
並紀錄進場價位,供停損用或停利用,以此類推,若一直擴張到幾十口,
甚至更多(如果用其它的進場條件時),
那麼該如何分別的紀錄這些倉位的進場價位,
才能針對每個個別的一口做停損或停利的動作?


不知各位大大有沒有什麼想法,如果有的話,還請告知,小弟在此先謝過各位大大。
發表於 11-8-27 06:09 | 顯示全部樓層
http://www.amibroker.com/guide/afl/afl_view.php?id=272
這裡有分批出場的範例
不過要注意的是在Amibroker中,backtest跟實際下單是兩回事XD

我也還在研究加碼的問題,之後有進度會上來報告的。
發表於 11-8-27 06:15 | 顯示全部樓層
順帶一提
據我所知看別人測試的結果,所有加碼的動作都有可能讓該策略的勝率下降,但是對某些策略來說是有可能提高期望值。

所以我也看過有某些說法是不要分批加碼,而是一次下。

試想一個問題,如果你加碼的點是勝率比較高的點,那麼為什麼不等到這個點的訊號出現再壓大注呢?

這個問題我也還沒想到答案,供參考。
 樓主| 發表於 11-8-27 09:37 | 顯示全部樓層
回復 2# GnuHomot


    謝謝你的回應,能夠用來回測至少就可以比較快的知道績效如何,
有沒有繼續發展的必要,至於實際下單的寫法,等到績效可以接受再來煩惱吧。

如果你加碼的點是勝率比較高的點,那麼為什麼不等到這個點的訊號出現再壓大注呢?
這個問題我沒想過,但你說的壓大注也是可行的,譬如第一口是試單,之後行情往預期的方向走,
這時再下大注,這樣也符合該點的訊號出現再壓大注的條件。
 樓主| 發表於 11-8-27 18:58 | 顯示全部樓層
回復 5# joey0415

joey大,謝謝回覆,這個方法看起來好像是用來同時執行兩個不同的策略,
而不是只用一策略,能夠在加碼時分別紀錄每一筆的進場價。
發表於 11-8-27 20:44 | 顯示全部樓層
其實把加碼想成是兩個策略(或以上)同時運作也未嚐不可啊
 樓主| 發表於 11-8-27 23:04 | 顯示全部樓層
這樣也是一個解決的方法,
不過好像只能做少數幾口,
畢竟不太可能把一個chart分成很多個圖,
這樣就很難看清楚了。
發表於 11-8-31 22:49 | 顯示全部樓層
不佔用版面,就直接回在這篇討論串了。
實際試了發現其實也不難做到
利用sigScaleIn跟sigScaleOut做加減碼

我測試的策略很簡單
收盤高於30MA買進
收盤低於30MA賣出

持倉時間在第四天收盤加碼一口

3.PNG

實做出來的圖大概會像這樣,進場和加碼的點位如圖。

這是單純一口進出的回測結果
2.PNG


可以看到紅色圈起來是7034買進1 share

而這是有加碼機制的回測結果
1.PNG

可以看到紅色圈起來的是7467 買進 2 share
7467是這兩口進場的平均價
發表於 11-8-31 22:51 | 顯示全部樓層
記得在Settings => Initial equity要設足夠的金額才可以加碼第二口

  1. SetPositionSize(1, spsShares);
  2. Buy=Sell=Short=Cover=0;

  3. //here is original strategy
  4. Length=30;
  5. MAValue=MA(C,Length);
  6. for(i=1; i<BarCount; i++)
  7. {
  8. if(C[i-1]<MAValue[i-1] AND C[i]>MAValue[i])
  9. Buy[i]=Cover[i]=1;

  10. if(C[i-1]>MAValue[i-1] AND C[i]<MAValue[i])
  11. Short[i]=Sell[i]=1;

  12. }


  13. //here is Position Scale In
  14. Buyindex=0;
  15. Shortindex=0;

  16. for(i=0; i<BarCount; i++)
  17. {
  18. if(Buy[i]>0)
  19. {
  20.   Buyindex=i;
  21.   Shortindex=0;
  22. }

  23. if(Buyindex>0 AND i-Buyindex>3)
  24. {
  25.   Buy[i]=sigScaleIn;
  26.   Buyindex=0;
  27. }

  28. if(Short[i]>0)
  29. {
  30. Buyindex=0;
  31. Shortindex=i;
  32. }

  33. if(Shortindex>0 AND i-Shortindex>3)
  34. {
  35.   Short[i]=sigScaleIn;
  36.   Shortindex=0;
  37. }

  38. }





  39. PlotShapes(Buy * shapeSmallUpTriangle ,colorRed, 0,Low,-50);
  40. //PlotShapes(Sell * shapeHollowSmallDownTriangle ,colorDarkRed, 0,High,-45);
  41. PlotShapes(Short * shapeSmallDownTriangle ,colorGreen, 0,Low,-50);
  42. //PlotShapes(Cover * shapeHollowSmallUpTriangle ,colorDarkGreen, 0,High,-45);


  43. dist=1.5*ATR(10);
  44. for( i = 1; i < BarCount; i++ )
  45. {
  46. if( Buy[i-1] ) PlotText( "Buy\n@" + BuyPrice[ i-1 ], i, Low[ i ]-dist[i], colorRed );

  47. if(NOT Short[i-1])
  48. if( Sell[i-1] ) PlotText( "Sell\n@" + SellPrice[ i-1 ], i, High[ i ]+dist[i], colorDarkRed );

  49. if(NOT Buy[i-1])
  50. if( Cover[i-1] ) PlotText( "Cover\n@" + CoverPrice[ i-1 ], i, Low[ i ]-dist[i], colorDarkGreen );

  51. if( Short[i-1] ) PlotText( "Short\n@" + ShortPrice[ i-1 ], i, High[ i ]+dist[i], colorGreen );

  52. }


  53. _SECTION_BEGIN("Price");
  54. SetChartOptions(0,chartShowArrows|chartShowDates);
  55. _N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
  56. Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
  57. _SECTION_END();

  58. _SECTION_BEGIN("MA1");
  59. P = ParamField("Price field",-1);
  60. Periods = Param("Periods", 15, 2, 300, 1, 10 );
  61. Plot( MA( P, Periods ), _DEFAULT_NAME(), ParamColor( "Color", colorCycle ), ParamStyle("Style") );
  62. _SECTION_END();
複製代碼
發表於 11-8-31 23:37 | 顯示全部樓層
現在才看到這篇官方說明
http://www.amibroker.com/guide/h_pyramid.html
 樓主| 發表於 11-9-1 23:53 | 顯示全部樓層
Gnu大,謝謝您這麼詳盡的回覆,
雖然官方的guide已有說明,
但您舉的例子也很有參考價值,
因為是用很簡單的策略寫的,
所以能更容易的看懂,
小弟再來研究看看這些函式要怎麼用,謝謝。
發表於 11-9-2 06:23 | 顯示全部樓層
回復 12# ashell


呵,不用謝,因為是我自己本來就想做的。參考comewish大的這篇文
http://coco-in.net/thread-9899-1-1.html
我可以做類似的測試   
用1-2-3加碼實作的結果圖
擷取.PNG


不等比例的加碼測試還需要一點點小技巧,關鍵都在我上一篇回文裡面,就留給看倌們自己動一下腦了
發表於 11-9-4 09:42 | 顯示全部樓層
一個很有用的問題.. 謝謝 !
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-12-24 03:17

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |