海龜交易特訓班(The Complete Turtle Trader)
哪一個交易人成功?
是那位受訓期就賺了3900萬美金從此不再交易的費斯?還是把系統拿來賣一堂2500美金課程的桑茲!亦或經過10年的操作後賺進10億的帕克,還是僅僅間接學到系統,透過自己的資金操作績效證明,就被法人請去的亞伯拉罕?
這本書透過採訪,了解海龜事件的前後,與相關人物後續的生活.比起The Way of Turtle,這本書比較有趣,你不會一下就欇於海龜之名而對系統言聽計從,奉為規臬;因為,當你看過此書,你就知道,雖然大多數的海龜後來都發展的不錯,但也不是人人盡是如使,使用同一個系統,結果卻如此不同,能不讓那些醉心於魔術數字的人一個些醒思?千萬不要衝動!本來就該如此....
魔術系統?精典循環?大師名言?去它x的.
看看海龜的發展,跟咱們社會很像吧!你看,並沒有全部的海龜都從事交易為生,另有,
賣交易軟體,賣課程,賣書的,賣訊號的,不一而足.我想這些東西,你在網路上已經看太多了,還有很多人因此被奉為智者,大師,導師,..........什麼都有,什麼都行,但就是沒做交易~
如果系統這麼好,去做這些幹什麼?但系統如果這麼差,帕克,亞伯拉罕,香儂,謝爾瓦等海龜又怎能在交易上如此成功?
問題就只有一個,那就是自己而已!
這本書最主要要的重點就此而已,其它,不過枝節,即便是關於那個系統,系統參數 ,資金管理的問題,這種種都不過次要,成功的海龜也是有對系統做過屬於自己的修正,但它們對屬於自己的好球帶,都很一致堅持.
以下是我用tradestation的easy language 寫的一個簡單的海龜系統,不過,不用拿去台指期實戰,因為歷史回測的結果很差,這也反映書中所說的,Richard Dennis是要海龜們把系統使用在所有當時能以此系統交易的商品,而不是押在一個商品上,這邊就引出一個值得研究的課題
"一個市場多個系統,一個系統多個市場".
程式碼提供參考
/參數 20日最高價突破買入,跌破20日最低價放空
/停損 多單 跌破10日低或採2R跌破停損,空單漲過10日高或採2R突破停損
/加碼 採倉價的 1/2 R,為基準,最多可至10口
/轉倉 採每月第三個星期三出清 星期四再建回 所以可能又部份價差之誤
/手續費 設 1000 滑價採 2000
依上所設 回測極差 就算不採加碼也好不了多少 單邊亦同
input:Length(20),len1(10);
variable:maxhand(0),nowhand(0),banotherprice(0),sanotherprice(0),a1(0),b1(0),i(0),n1(""),sun(0),oldbuy(0),oldsell(0),sho1(""),part(0),trange(0),buystopline(0),sellstopline(0);
value1 = Highest(High, Length);
value2 = Lowest(Low, Len1);
value3 = Lowest(Low, Length);
value4 = Highest(High, Len1);
value11=Absvalue(high-low);
value12=Absvalue(high-close[1]);
value13=Absvalue(low-close[1]);
trange = MaxList( Value11, Value12 ,Value13) ;
Condition1 = Close Cross over value1[1];
Condition2 = Close Cross Under value2[1];
Condition3 = Close Cross Under value3[1];
Condition4 = Close Cross over value4[1];
if month(date) <> month(date[1]) then begin
sun=0;
end;
if dayofweek(date) = 3 then begin
sun=sun+1;
end;
If Condition1 and currentcontracts=0 then begin
Buy("begin-buy") 1 Contracts next bar at market;
buystopline=entryprice - 2 * trange;
banotherprice = entryprice + (trange / 2);
End;
if CurrentContracts * marketposition > 0 and Currentcontracts <= 10 then begin
if close Cross over banotherprice then begin
if currentcontracts=1 then Buy ("buy+1contracts") 1 Contracts next bar at banotherprice stop ;
if currentcontracts=2 then Buy ("buy+2contracts") 1 Contracts next bar at banotherprice stop ;
if currentcontracts=3 then Buy ("buy+3contracts") 1 Contracts next bar at banotherprice stop ;
if currentcontracts=4 then Buy ("buy+4contracts") 1 Contracts next bar at banotherprice stop ;
if currentcontracts=5 then Buy ("add+5contracts") 1 Contracts next bar at banotherprice stop ;
if currentcontracts=6 then Buy ("add+6contracts") 1 Contracts next bar at banotherprice stop ;
if currentcontracts=7 then Buy ("add+7contracts") 1 Contracts next bar at banotherprice stop ;
if currentcontracts=8 then Buy ("add+8contracts") 1 Contracts next bar at banotherprice stop ;
if currentcontracts=9 then Buy ("add+0contracts") 1 Contracts next bar at banotherprice stop ;
buystopline=entryprice - 2 * trange;
banotherprice = entryprice + (trange / 2);
end;
end;
If Condition2 or close cross under buystopline Then begin
ExitLong CURRENTCONTRACTS contracts next bar at market ;
End;
If Condition3 and CurrentContracts=0 Then begin
Sell ("begin-sell") 1 Contracts next bar at market;
sellstopline=entryprice + 2 * trange ;
sanotherprice = entryprice - (trange / 2);
End;
if CurrentContracts * marketposition < 0 and currentcontracts <= 10 then begin
if close Cross under sanotherprice then begin
if currentcontracts=1 then sell ("sell+1contracts") 1 Contracts next bar at sanotherprice stop ;
if currentcontracts=2 then sell ("sell+2contracts") 1 Contracts next bar at sanotherprice stop ;
if currentcontracts=3 then sell ("sell+3contracts") 1 Contracts next bar at sanotherprice stop ;
if currentcontracts=4 then sell ("sell+4contracts") 1 Contracts next bar at sanotherprice stop ;
if currentcontracts=5 then sell ("sell+5contracts") 1 Contracts next bar at sanotherprice stop ;
if currentcontracts=6 then sell ("sell+6contracts") 1 Contracts next bar at sanotherprice stop ;
if currentcontracts=7 then sell ("sell+7contracts") 1 Contracts next bar at sanotherprice stop ;
if currentcontracts=8 then sell ("sell+8contracts") 1 Contracts next bar at sanotherprice stop ;
if currentcontracts=9 then sell ("sell+9contracts") 1 Contracts next bar at sanotherprice stop ;
sellstopline = entryprice + 2 * trange;
sanotherprice = entryprice - (trange / 2);
end;
end;
If Condition4 or close cross over sellstopline Then begin
ExitShort absvalue(Currentcontracts) contracts next bar at market;
End ;
if sun=3 and dayofmonth(date)< 22 then begin
if currentcontracts * marketposition > 0 then begin
oldbuy=currentcontracts;
ExitLong Currentcontracts contract this bar on close;
Buy ("buy-nextmonth") oldbuy Contracts next bar at market;
buystopline = entryprice - 2 * trange ;
banotherprice = entryprice + (trange / 2);
end;
if currentcontracts * marketposition < 0 then begin
oldsell=currentcontracts;
ExitShort absvalue(currentcontracts) contract this bar on close;
Sell ("sell-nextmonth") absvalue(oldsell) Contracts next bar at market;
sellstopline = entryprice + 2 * trange;
sanotherprice = entryprice - (trange / 2);
end;
sun=0;
end;