2014年9月29日 星期一

●亞當理論 [程式碼]

EasyTrader ArtNo 205
     這是在前輩 D.K異世界部落格看到的一篇文章,程式交易 - 簡易型亞當理論策略
亞當理論的基本原則就是方向不對就停損,然後再等待下一個進場訊號…所以寫成突破型的策略可以變為:以某一個為基準…上下加上一個 range 後,突破進場…然後停損點隨著最高點移動…出場後再尋找下一個進場點…
因此將網上相關亞當理論資料瀏覽閱讀整理如下
 亞當理論是美國人威爾德(J.W.Wilder)所創立的投資理論。威爾德於1978年發明瞭著名的強弱指數RSI,還發明瞭其它分析工具如PAR、拋物線、動量線(MOM)、搖擺指數、市價波幅等。這些分析工具在當時的時代大行其道,受到不少投資者的歡迎,即使在今天的證券投資市場中,RSI仍然是非常有名的分析工具。但很奇怪,威爾德後來發表文章推翻了這些分析工具的好處,而推出了另一套嶄新理論去取代這些分析工具,即[亞當理論]。
亞當理論的精義是:「沒有任何技術指標,可以準確地預測大盤的走向。」每一套分析工具都有其缺陷,如果市場可以預測的話,只用一些技術指標,理論上就可以發財了。但有不少人運用這些指標,卻得不到預期效果,仍然輸的很慘,原因就是依賴一些並非完美的工具,推測去向不定、難以捉摸的市勢,將會是徒勞無功的。亞當理論的精神是:「與其試圖猜頭摸底,還不如順勢而行。」漲時就買,跌時就賣,原因是漲時,漲完可以再漲。跌時,跌完可以再跌。事前無人可以預測升跌會何時反轉。只要順勢而行,讓巿場決定我們的買賣方向。

亞當理論提出下列做法
1.在介入投機市場前,一定要認清該市場的趨勢是上升還是下跌,在漲市中主要以做多為主,在跌市中則以賣空為主,切記買賣方向不要做錯,即在漲市做空、跌市買漲是最愚蠢而且相當危險的。
2.買入後遇跌,賣出後卻漲,就應該警惕是否看錯大勢,看錯就要認錯,及早投降,不要和大勢為敵。不要固執己見,要承認自己看錯方向,及早認識錯誤則可將損失減到較少的程度。
3.在未買賣之前一定要訂立停損點,並且不隨意更改既定的停損點。切忌尋找各種藉口為自己的錯誤看法辯護,因為那樣只會使自己深陷泥潭,損失更大。在投機市場中,不要把面子看得太重,看重臉面則損失票面。
4.拋棄迷信技術分析指標或工具的做法,各種技術分析、技術指標均有缺陷,過於依賴這些技術分析指針的所謂買賣信號,有可能使資金遭遇被套的危險,那些相反理論買入法或馬丁基的加碼法教人越跌越買並不是好的投資理論和方法,這些做法堅決摒棄。
亞當理論提出期貨買賣的十大戒條。
1.一定要認識市場運作,認識市勢,否則絕對不買賣。
2.進場買賣時,應在落盤時立即訂下停損價位。
3.停損價位一到即要執行,不可以隨便更改,調低停損位。
4.進場看錯,不宜一錯再錯,手風不順者要離,再冷靜分析檢討。
5.進場看錯,只可停損,不可一路加碼以平均價位,否則可能越蝕越多。
6.切勿看錯市而不肯認輸,越錯越深。
7.每一種分析工具都並非完善,一樣會有出錯機會。
8.市升買升,市跌賣跌,順勢而行。
9.切勿妄自推測漲到哪個價位才漲到頂,或跌到哪個價位才跌到底,浪頂浪底最難測,不如順勢而行。
10.看錯市,一旦虧損10%就一定要斬立刻斷,重新來過,不要蝕本超過10%,否則再追翻本就很困難。
『亞當理論』中,影響獲利的重要心法:
1.專注於『當下』實際走勢,不讓任何有關市場的意見阻礙自己操作。
2.單純『追隨』市場腳步,讓市場走勢決定如何操作,忘掉便宜與昂貴。
3.走勢經常出現『對稱』~ 漲跌速度越快,準確度越高;越近期的走勢,出現對稱機率越高。
4.只在『突破』並有『明顯趨勢』時進場,買強賣弱、順勢操作,去頭去尾賺中間,不摸頭探底。
5.只在『波動大』的市場交易。
6.絕對要有『停損』,只能『順勢移動』停損,賠小賺大,決不攤平。
7.保持『彈性』,下錯站要勇於重新上車。
8.資金控管好,採金字塔式加碼,有獲利才加碼,且越加越少。
9.操作規模與頻率都不要太大,循序漸進。
10.專注於『操作』,而非『金額』。
11.平常心,不論賺賠都淡然處之,操作不順,縮手休息。
12.認清自己,遠離恐懼與貪婪。賺多少不重要,留的住才要緊!
在市場中待得越久、看過越多,對上述心法會更有感受。如果常常違反上述心法就容易經常賠錢,而不是單純『倒楣』而已。

這是D.K前輩的程式交易 - 簡易型亞當理論策略中的原始交易策略
input:ran(82);
vars:longentry(99999), shortentry(0), longex(0), shortex(99999), count(0);
if date[1] <> date[0] then begin
longentry = opend(0)+ran;
shortentry = opend(0)-ran;
end;

if marketposition = 0 and count = 0 then begin
buy next bar at longentry stop;
sell next bar at shortentry stop;
end;

if marketposition > 0 and high-ran > longex then begin
longex = high-ran;
count = 1;
end;

if marketposition < 0 and low+ran < shortex then begin
shortex = low+ran;
count = 1;
end;

if marketposition > 0 and count = 1 then
exitlong next bar at longex stop;
if marketposition < 0 and count = 1 then
exitshort next bar at shortex stop;

if marketposition = 0 and count = 1 then begin
longentry = close[1]+ran;
shortentry = close[1]-ran;
longex = 0;
shortex = 99999;
count = 0;
end;
由於參數只有一個,但是想法是順勢突破因此我將參數 ran 換成N根K棒的 ATR * M比例,多空不同
longentry = open+AdonL*AvgTrueRange(ATRBarL);
shortentry = open-AdonS*AvgTrueRange(ATRBarS);


出場改為常用的移動停損利方式
if ExitType = 5 then Begin
{*******************************************************************
Description : ATR Trailing Stop Long Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}
{Inputs: ATRs_L(3);}
Variables: PosHigh(0), ATRVal_L(0);
ATRVal_L = AvgTrueRange(10) * ATRs_L;
If BarsSinceEntry = 0 Then PosHigh = High;

If MarketPosition = 1 Then Begin
If High > PosHigh Then PosHigh = High;
ExitLong ("ATR") Next Bar at PosHigh - ATRVal_L Stop;
End else ExitLong ("ATR eb") Next bar at High - ATRVal_L Stop;

{*******************************************************************
Description : ATR Trailing Stop Short Exit
Provided By : Omega Research, Inc. (c) Copyright 1999
********************************************************************}
{Inputs: ATRs_S(3);}
Variables: PosLow(0), ATRVal_S(0);
ATRVal_S = AvgTrueRange(10) * ATRs_S;
If BarsSinceEntry = 0 Then PosLow = Low;

If MarketPosition = -1 Then Begin
If Low < PosLow Then PosLow = Low;
ExitShort ("ATR_1") Next Bar at PosLow + ATRVal_S Stop;
End else ExitShort ("ATR_1 eb") Next bar at Low + ATRVal_S Stop;
end;
台指期 60 min K 多空留倉 交易週期 2004/8/31~ 2014/8/29 交易成本 1200

台指期 30 min K 多空留倉 交易週期 2004/8/31~ 2014/8/29 交易成本 1200


如果加上 布林帶上下通道作波動確認的濾網,績效都有相當程度改善

5 留言:

匿名 提到...

順勢易,整固難。

匿名 提到...

請問此文章中改善後的程式碼可以提供給小弟參考嗎?
mail:flowerflower0212@hotmail.com

D.K. Chang 提到...

原來我已經變前輩了啊...老了老了

WEN 提到...

DK前輩,您好!

MuYuan Lin 提到...

請問這程式碼是否有MT4 程式可以用的版本
謝謝

張貼留言

如果有私人問題想請教,請透過網站右方『與站長聯絡』之表單,謝謝!

----------------------------------------------------------------------------------------------------
網站聲明(Disclaimer)
本教學網站內所提供之程式碼(包括函數、指標、訊號)屬開放程式碼,用意在於讓使用者學習程式語法之撰寫,使用者可以任意修改語法內容並調整參數。本網站所有之內容(包括文章、影片、歷史紀錄、程式碼、教材)限用於個人學習使用,請勿轉寄、濫用,嚴禁私自串接帳戶交易。
-------------------------------------------------------------------------------------------------