國外知名策略-dual thrust策略源碼
作者:開拓者 TB 來源:cxh99.com 發布時間:2012年11月15日
|
- 內容:
dual thrust是八幾年一個老外寫的,目前在自動化交易里應該還能排到前三吧。
這個系統核心相當簡單,我一直都相信越簡單越有效,而且作者的思想很有借鑒之處,為方便與大家分享,我重寫了一個TB版本。
原形很簡單,很多人經驗都比我豐富,一定能擴充不少,如加入止損,止贏,加入資金/風險管理,改成日內系統等,從而打造成為自己的一個利器。
寫在前面的話:
從看dual thrust的原形到重寫TB代碼,用時大概半小時,因為我本人是從事研發工作,代碼從構思開始就會首先考慮邏輯思維的嚴密和健壯性,但也很可能有疏忽之處,比如這個系統我就沒有加入漲跌停和最小幅度控制(我只想原汁原味重寫,其它的大家自己擴充吧),所以大家在提問的時候,不要先入為主的認為我會犯很多低級錯誤,一定要認真讀過代碼,并對TB機制有足夠的了解,這也是對我的尊重吧,坦白說,前幾次發分享系統,看到大家的回復,我有些失落。
- TB源碼
- //------------------------------------------------------------------------
- // 簡稱: dual_thrust
- // 名稱:
- // 類別: 公式應用
- // 類型: 用戶應用
- // 輸出: 穿堂風
- //------------------------------------------------------------------------
-
-
- Params
- Numeric K1(0.5);
- Numeric K2(0.5);
- Numeric Mday(1);
- Numeric Nday(1);
- Numeric lots(1);
- Numeric offset(0);
-
- Vars
- Numeric BuyRange(0);
- Numeric SellRange(0);
- Numeric BuyTrig(0);
- Numeric SellTrig(0);
- Numeric HH;
- Numeric LL;
- Numeric HC;
- Numeric LC;
- Numeric i_offset;
- Numeric BuyPosition;
- Numeric SellPosition;
-
- Begin
- If(CurrentBar > 44*Max(Mday,Nday))//使用的是5分鐘周期,其它的周期自己做相應修改
- {
- i_offset = offset*MinMove*PriceScale;
- HH = Highest(HighD(1),Mday);
- HC = Highest(CloseD(1),Mday);
- LL = Lowest(LowD(1),Mday);
- LC = Lowest(CloseD(1),Mday);
-
- If((HH - LC) >= (HC - LL))
- {
- SellRange = HH - LC;
- }
- Else
- {
- SellRange = HC - LL;
- }
-
- HH = Highest(HighD(1),Nday);
- HC = Highest(CloseD(1),Nday);
- LL = Lowest(LowD(1),Nday);
- LC = Lowest(CloseD(1),Nday);
-
- If((HH - LC) >= (HC - LL))
- {
- BuyRange = HH - LC;
- }
- Else
- {
- BuyRange = HC - LL;
- }
-
- BuyTrig = K1*BuyRange;
- SellTrig = K2*SellRange;
-
- BuyPosition = OpenD(0)+BuyTrig;
- SellPosition = OpenD(0)-SellTrig;
-
- PlotNumeric("BuyPosition",BuyPosition);
- PlotNumeric("SellPosition",SellPosition);
-
- If(MarketPosition == 0)
- {
- If(High>=BuyPosition)
- {
- Buy(lots,Max(Open,BuyPosition)+i_offset);
- Return;
- }
-
- If(Low<=SellPosition)
- {
- SellShort(lots,Min(Open,SellPosition)-i_offset);
- Return;
- }
- }
-
- If(MarketPosition == -1)
- {
- If(High>=BuyPosition)
- {
- Buy(lots,Max(Open,BuyPosition)+i_offset);
- Return;
- }
- }
-
- If(MarketPosition == 1)
- {
- If(Low<=SellPosition)
- {
- SellShort(lots,Min(Open,SellPosition)-i_offset);
- Return;
- }
- }
- }
- End
-
- //------------------------------------------------------------------------
- // 編譯版本 GS2010.12.08
- // 用戶版本 2011/07/24 02:14
- // 版權所有 穿堂風
- // 更改聲明 TradeBlazer Software保留對TradeBlazer平臺
- // 每一版本的TrabeBlazer公式修改和重寫的權利
- //------------------------------------------------------------------------