2013年9月24日 星期二

停損點轉向指標-SAR

 

SAR停損點轉向指標,或稱為拋物線型指標,是 Technical 技術分析  中很常見的一個指標,常用在設定停損點。在 investopedia 的介紹 中如下圖

 

SAR定義


 

它是移動式的跟隨著行情,當反向穿越時就是進/出場點,計算的公式如

 

SARt = SARt-1 + AF * ( EP - SARt-1)

 

其中AF為加速因子(acceleration factor),EP為極值(extreme price)

反轉條件:SARt與當天價格發生交會,即下跌波段時SARt < Hight,上漲波段時SARt > Lowt,即為反轉訊號。此時,SAR0= EP。

 

網路上有篇文章對於SAR指標有蠻詳細的說明,想進一步瞭解SAR可以點進

SAR指標介紹 - 部落格 - 財經知識庫 - MoneyDJ理財網

 

而我們在應用上,也不需要自己重新編寫指標的原始碼,SAR指標在 Multicharts 有內建函數 ParabolicSAR,訊號有 ParabolicSAR LE及 ParabolicSAR SE,兩者都可以直接看原始碼參考或修改。SAR指標可以用在進場或出場訊號,不過單單僅用在進場訊號時表現並不好,原因和一般趨勢型策略相同,在震盪區間時進出次數太多,另外SAR若套用在短時間的K線上也有同樣的問題,太容易翻單了。

 

而讓單一指標發揮效用的最簡易方法就是交配,把不同屬性的指標拿來結合使用,因此我們除了用較長的K線之外,還要增加些過濾的邏輯,建議是能表示趨勢的指標,例如ADX(可參考  動能指標-ADX與Momentum  此篇)。

 

以下提供一個SAR及ADX結合應用的程式範例,主要邏輯是當ADX小於門檻值時,就照著SAR的方向作部位,另外再加上停損停利的設定。另外,這次同樣沒直接顯示參數的數值,請有興趣的朋友自己測試。

 

ADXSAR_noin


 

加上ADX的判斷後可以有效避免區間震盪時的洗刷,在有趨勢時(ADX大於門檻)的波段,不讓訊號翻轉。例如以下的圖示,若無ADX的過濾,那麼高檔的震盪會多了許多無謂的反轉。但反過來說,也就沒翻的那麼快,或許等到ADX轉弱已經回吐獲利一大段,這些就是邏輯設計的取捨了。

 

高檔避免震盪進出


 

這樣的邏輯有以下績效。L所使用的是台指期30分K線,測試時間為2005~2013,費用雙邊設定共800。

 

策略績效


 

獲利風險比 : Profit / Drawdown 值為13.63

 

總交易分析


 

Kelly 值 : 13.3

 

年週期


 

月週期


 

在 損益期間的評估 上,年週期表現穩定,近兩年波動較小,獲利也較小了。而月週期看來是有不短的時間要忍受,整體看來還是正常。

 

損益曲線


 

損益曲線是挺漂亮的。以上是SAR指標的介紹及結合ADX應用,請有興趣的讀者一起動手測看看吧~

 

 

 

2013年9月23日 星期一

交易心理-錨點

 

與前幾篇一樣 ( 交易心理-可用性與捷徑 、 交易心理-認知放鬆  ) ,在說明名詞之前,先來體驗一下。

 

交易心理-錨點1


 

看過上圖後,要請問讀者兩個問題:

1. 請問今天壓力支撐在哪,交易區間大概多大?

2. 請預估明天開盤價與交易區間大概多少?

 

在回答這兩個問題的時候,你的眼睛在看哪裡? 也許第一題讓我們很直覺得去看了這張圖的高低點或實體K的高低點,而區間則為兩者相減,本題答案大約為30-40點。而第二題我們眼睛則看得是8238這個數字,透過今天收盤(也就是最新資訊)配合大概一般開高開低是多少後,就可猜測明天可能的開盤位置,再透過上一題得到的資訊推算,假設有事件影響,就估計交易區間會比今天放大,也許變成50-70點,若無特別事件,則採用原本的30-40點。

 

經過這簡單的測驗,可以發現我們透過眼睛蒐集現有的資訊,經過大腦去調整現有資訊來形成對未來的估計。而錨點就像是一種建議,當我們再考量一個未知的數量時,會採用特定的價值來估計比較,這個特定的價值就是經由連結機制在我們心理中選擇性得找出相容的證據,而系統一則習慣相信你所看到的事

 

然而經由錨點去推估未來,則常出現調整不足的錨點效應,例如在交易中,區間大小的估計,即可看出調整不足的現象,以及一般人不容易賺到錢的原因。

 

觀察下圖,如果只看黃線左邊,該天交易區間大約為25點左右,會透過這個錨點25來估計明天大約也是35點左右的區間,造成隔天一開始下跌時,心中認為今天跌40點已經算多了,猜測往下空間有限,而不敢追空。即使勇敢於破底追空,當第一根K棒為紅色時已經從高點下跌了60點,受到心理面覺得已經跌多了的影響,將難以抱持著空單到尾盤。

 

交易心理-錨點2


 

反之,若是看到今天(下圖左側)交易區間為140點,就容易因為調整不足的估計明天(下圖右側)的交易區間可能也會有100點左右,因此當隔天破底後,將認為還有許多空間可以賺而追空在底部,最後收盤才知道整天是區間不過50點的震盪盤,並沒有獲利機會。

 

交易心理-錨點3


 

錨點效應中另一個有趣的部分是,他可以計算錨點指數,以了解效應的程度。

 

藉由上述兩張圖我們來試著計算錨點指數,我們分別用兩個交易區間不同的左圖,來估計隔天(右圖),此時可稱交易區間比較大的(140點)為高錨,比較小的(25點)為低錨,而錨點指數=(高錨預估的值-低錨預估的值)/(高錨-低錨)*%,因此本例的錨點指數=(100-35)/(140-25)=56.5%

 

快思慢想書中提及,錨點指數55%,是在許多實驗中常得到的數字,而數字越大,表示錨點效用越高,從本例來看交易區間的錨點效應是高而且常見的,讀者可再想想看是否交易中有許多的預估都受到了錨點的影響,也許有不少的交易邏輯可從此來發想。

 

 

 

2013年9月16日 星期一

網站介紹(Daily FX、鉅亨網)

 

從事海外期貨程式交易的人,經濟數據公布產生的事件交易機會,將是一個不可缺少的交易概念,本篇將介紹兩個好用的網站協助讀者了解經濟數據公布,再透過公布日期規則的了解,建置自己的事件交易策略。

 

Daily FX ,透過這個中文網站(右上角可點選繁體中文),我們可以清楚的掌握到今天或特定日子的經濟數據公布,也可藉由國旗的按鈕選擇單獨觀察的國家。

 

網站介紹(Daily FX、鉅亨網)1


 

而本網站如同多數外國外匯交易網站一樣,公布了數據公布的時間、訊息的重要性、前值、預估的數值與即時公布結果,但對台灣的讀者來說,最方便的是不用換算公布時間,網站上時間就是台灣的時區

 

若尚未公布數據之前,將顯示如下圖,結果部分將持續出現偵查中,而在數據一公布即會顯示出結果。

 

網站介紹(Daily FX、鉅亨網)2


 

另可透過日期的查詢可以找出過去美國經濟數據公布的狀況,如下圖所示。

 

網站介紹(Daily FX、鉅亨網)3


 

若判斷美國非農就業人數變化對走勢影響較大,可直接點選歷史數據的按鈕觀察近期的經濟數據走勢圖,如下圖所示。

 

網站介紹(Daily FX、鉅亨網)4


 

再了解有哪些數據在公布後,若希望建置事件交易的策略,在回測上,須要在mc中建立過去歷史事件公布時間的表,而鉅亨網是大家常用的財金網站,其中在經濟指標的FAQ中就可以找到公布的規則,讀者可透過下列聯結直接進入。

 

鉅亨-國際金融-經濟指標教室

 

 

網站介紹(Daily FX、鉅亨網)5


 

而所提及的非農就業人數變化即可在就業部份找到,期公布時間為每月第一個星期五美國時間早上8:30。

 

經過了解與尋找可能影響盤勢的經濟數據後,將交易規則寫進程式碼中,若可驗證當日波動確實較一般交易日放大,即可藉此增加獲利機會,因此多結合此類外部因素影響的事件型交易策略,將能有效分散一般純價量關係所撰寫的組合風險。

 

 

 

2013年9月9日 星期一

基本出場策略

 

一般程式交易者一開始常常花時間在思考進場邏輯比較多,而例如均線交叉、通道突破等,都是直接利用下一個訊號進場,當成前一訊號的出場,例如黃金交叉買進,死亡交叉時將買進訊號直接反手做空,又或是漲破通道買進,跌破通道直接反手做空。這樣的交易特色是,沒有空手的時期,也就是認為隨時要有方向,導致在震盪盤的時候,交易次數比有先出場的策略來的多,因此本篇先介紹一些J認為若要寫出有空手時期的策略,最基本需要有的出場寫法。

 

本篇一樣採用通道突破的邏輯擔任進場主邏輯,讀者可先複習 通道突破策略 ,本篇將進場稍微增加了每日交易次數與時間的濾網,交易次數控制的程式碼如下:

 

J 基本出場策略1


J 基本出場策略2


 

利用DTTL(多單用)與DTTS(空單用)來建立一個開關,每天第一根K棒後即計算為1,當部位變化為多單或空單,則將其歸0,藉此控制減少區間過小時來回進出的狀況,因此進場的程式碼改寫如下。

 

J 基本出場策略3


 

在交易次數與時間控制下,當價格突破HH或跌破LL就進場。

 

        再透過進場濾網的限制後,此通道突破已不若原本隨時都會有部位的設計(因可能進場條件被濾掉),所以原本通道反手作多或反手作空的進場線,須另外撰寫成為出場邏輯,避免進場濾網檔掉原本通道的出場,故可如下圖般重新撰寫

 

J 基本出場策略4


 

我們簡單看一下這樣的留倉績效,如下圖。(本篇主要凸顯增加停損機只與原本策略的差異,因此參數與K棒周期並不特別提供,讀者可以自行嘗試適合自己的周期。)

 

J 基本出場策略5


 

績效有個印象後,我們開始試著增加最基本的固定停損邏輯,如下圖。

 

J 基本出場策略6



 

透過SETSTOPLOSS內建功能的使用,可以設定多空兩者分別輸多少金額停損,將多空特性不同的想法結合進去,但讀者須特別注意,若使用MP來判斷多空,則會漏掉一進場時,瞬間價格可能在當根就已經超過停損的狀況,因此特別增加一個不分多空的SETSTOPLOSS,善用只要有部位就能在K棒內產生委託的出場功能 

增加後的績效如下圖。


 



J 基本出場策略7



 
 多單明顯的改善,空單在獲利上卻減少了,雖整體的獲利上升,回檔卻變大,結果並不令人滿意,顯示只有固定停損是不夠的,接著我們來撰寫也很常用的獲利拉回出場法

 

        在撰寫獲利拉回出場時,為了避免MC計算上產生K棒內價格走勢假設的錯誤(例如在未開啟精密回測時,K棒只用開高低收4個點運算,而若當根走勢很大,在回測計算獲利拉回時,將利用該K棒最高或最低點計算,然而真實情況可能在還沒出現最高或最低點時已經達成獲利拉回出場的現象,導致高估獲利能力的狀況。)




 

因此J將不建議讀者使用setpercenttrailing與setdollartrailing等內建功能,下圖將示範如何利用自行撰寫的程式碼達到同樣的目的。  


 





J 基本出場策略8



 


透過MPH與MPL的設計,可以計算進場後最高的價位,與最低的價位,再透過變數GAINL與GAINS的調整,設定要達到多少點以上才滿足"獲利"的條件並再由TRLX與TRSX來設定拉回的百分比,於確立出現上一根K棒最高最低點後,掛出STOP單,等待"拉回"時觸碰價格即出場
 

 增加此出場法後,績效如下圖。


 




J 基本出場策略9



J 基本出場策略10






 

可以發現獲利持續增加,回檔也大幅減少,近年績效也持續創高,顯示出場的設計將明顯的影響策略表現,而本篇除了主邏輯通道得出場,另增加了固定停損與獲利拉回的出場,但實際上還有許多不同類型的出場設計,在有了本篇基礎後J將於日後介紹更多面向的出場邏輯,以提供讀者思考如何打造一個更完整的交易策略。


 
 







2013年9月7日 星期六

建立文字檔下單機 (with C#)

 

文字檔下單機是常用的自動下單接法,它一定不是最有效率的作法,但非常通用,不論是策略產生是由TS、MC、EXCEL或客製的程式,都可以在訊號產生時寫入文字檔,再由文字檔下單機處理委託送單。

 

網路上也有多種免費的文字檔下單機可以利用,或許之後可以請J再介紹一下,但套裝的總是有點用不順手,寫的太完整的感覺又很複雜,所以L就來紀錄文字檔下單機的設計架構,若有朋友嘗試自己設計一個文字檔下單機,也是個起步的參考。

 

設計程式一開始當然就是確認需求,還有定義好文字檔的格式。這格式設計有很多種,例如

  1. 方向,口數,價位 (“Buy”, ”1”, “8000”) (買一口8000)

  2. 方向結合口數,價位 (”2”, “8000”) (買兩口8000)、(“-1”, ”7950 ”) (賣一口7950)

  3. 方向結合口數 ,(“1”) (買一口)、(“-3”) (賣三口)

  4. 給部位OI ,(“1”) (調到買進一單位)、(“-1”)(調到賣出一單位)、(“0”)(調到無部位)


 

如果文字檔沒寫入價位,那麼下單機就要能收行情,不然就只能丟市價單很奇怪,另外依照不同的文字檔定義,下單機也要設計不同的判斷邏輯。資料給的越少,下單機要處理的事情就越多,那我們就來看給最少的第四種為範例,文字檔只寫策略現在是0、1、-1,這三種狀態。

 

繼續確認需求,這個下單機對於使用上的功能希望如下:

  1. 設定連結下單的帳號

  2. 設定文字檔所在路徑

  3. 設定讀取的文字檔

  4. 設定策略的口數倍數

  5. 設定下單的滑價點數

  6. 設定下單機開啟/關閉

  7. 目前策略狀態以燈號顯示

  8. 策略進出紀錄


 

內部要作到的功能如下:

  1. 登入帳號

  2. 收取行情並顯示

  3. 判斷文字檔後產生委託資料及送出

  4. 寫出訊號紀錄


 

以上,就先來刻介面,如下圖展示的範例:

 

TXTOrder


 

介面各功能如需求所述就開始寫程式吧,唯一的按鈕[登入並啟動],要寫的程式大致是

 
private void buttonLogin_Click(object sender, EventArgs e)
{
FN1 = textBox1.Text;
Algo1 = System.IO.File.ReadAllText(@"L:\"+FN1+".txt");
changeColor();
Commodity = textBoxCommod.Text;

//登入並訂閱行情
api.login("XXXXX", "XXXXXX", "XXX.XX.X.XX");

if (api.loginStatusFlag == true)
{
labelLogin.Text = "登入成功";
api.regItem(Commodity);
}
else
{
labelLogin.Text = "登入失敗";
}
/*
這邊寫把行情顯示到介面的Label上
....
*/

//啟動新執行緒讀取文字檔動作
Thread ProcessPSTD = new Thread(ProcessPS);
ProcessPSTD.Start();
}

 

其中一開始的

FN1 = textBox1.Text;

Algo1 = System.IO.File.ReadAllText(@"L:\"+FN1+".txt");

就是先到設定路徑去讀取文字檔,所用到的方法是System.IO.File.ReadAllText,然後將文字檔的內容設定到Algo1這個字串(別忘了它只有可能是三種狀態0、1、-1),這是第一次讀取文字檔的狀態,之後文字檔的變動會要依據這個Alog1字串變數。

 

2013年9月3日 星期二

交易心理-可用性與捷徑

 

在你目前的認知下,先在心中回答下列2個問題


  1. 出現長上引線後,作多容易賺錢還是做空容易賺錢?




  2. 賺錢機率有多高?




 


現在不論你上2個答案為何,看看下圖,再次思考同樣上2個問題

 

 

可用性與捷徑



 

你是否有改變心意? 如果先不論真實上到底答案是什麼(雖然J很久以前有做過簡單測試,我的答案會是往上容易賺錢,但勝率低於五成,如同一般順勢交易,但本篇重點不在此,因此暫時不詳細提供驗證資料,建議讀者可以嘗試看看。)如果你的答案,從做空容易賺換成作多容易賺,這樣整個過程中你就使用了3次可用性偏見與捷徑思考,現在我們一一來分析整個思考過程。

 

 

第一個問題,我們容易使用到可用性偏見來思考他,當這問題一提出,我們便開始在腦中思考過往經驗,還有課本上或名師書籍中,教導我們K棒型態如果出現長上引線,表示可能出現假突破,上檔賣壓沉重,可能出現回檔壓力,因此應該往下做比較有機會賺錢,而我們也常常在交易中看到轉折點時,可以容易觀察到這個現象,所以最後我們選擇了我們容易思考到的結果,即可用性偏見的特色-用一個最容易進入心中的答案替代思考許多複雜的事。

 

 

第二題,機率判斷,我們會將這個問題簡化到可以回答的程度,而做法就是去判斷簡化後的事情。這時透過捷徑思考,這種系統一的能力,我們能藉由替代問題來思考-我常不常看到長上引線後出現下跌? 而此時回憶的流暢程度就決定了機率高低,如果很容易想到,你可能就給的機率比較高。

 

 

第三個問題,更明顯的藉由剛剛看的圖,來影響你回想長上引線與上漲下跌的關係,如果你原本的在這方面的回憶不夠清晰,就更可能受到剛剛或最近發生的事情影響,因為這個長上引線,之後上漲的狀況,最容易進到你心中,所以透過這樣可用性的思考,你就會偏向選擇上漲作為答案,機率也會比真實或你原本預估高。

 

 

然而同樣的狀況屢見不顯,例如最近常常出現,美股大跌卻開低走高,有人會說這是打第幾隻腳,然後出現這種狀況後,近期將造成許多散戶出現一種現象-開低就更想做多(雖然開低散戶本來就喜歡作多,所以只能說程度可能更為增加。)因為這種狀況最近太容易想到這樣的結果,而導致常常可以聽到作交易的人過類似的話:行情總是不如預期,獲利總在最不確定的時候發生。

 

 

再來討論捷徑受到情緒喜好的影響,書中稱之為情意捷徑。

 

 

主要在探討我們透過捷徑思考來快速回答替代的問題時,受到我們本身對那件事的喜好而產生影響,例如在交易上,常可聽到有人是只喜歡做多,從不做空,而推究其原因多可發現其實是情意捷徑影響了我們的思考,也許是日常生活或交易中多數人買進東西並持有,是較賣出東西容易且習慣的多,而這樣的偏好導致我們認為作空(希望價格往下)是件危險也不開心的事情,因此容易忽略作空可能導致的收益,而成為一個只多不空的交易者。

 

 

再一個常見的例子,買低會賺還是追高會賺?這個問題也許能用情意捷徑角度思考為何多數人喜歡買低而不愛追高,也許一般我們思考買進期待上漲,成本當然越低越好,追高形同現在不想買,漲上去才想買,成本是往上增加,沒有人喜歡,而這種喜不喜歡的偏好就影響了下一層次的思考,認為追高買的高,所以風險高(常聽到有人說要居高思危...),因此追高比較不會賺錢,完全忽略去思考追高可能的獲利機會與延續性是大於低買。

 

 

最後,可用性偏見也影響我們對交易風險的態度-我們不是太看重風險,就是完全忽略它,沒有中間地帶。例如最近常常出現漲跌停,將使我們特別重視漲跌停對我們交易的影響,但難道最近的事件真的影響了長期出現漲跌停的機率?也許以指數期貨來說漲跌停常態性來看是本來就有出現的機率,但我們卻容易在最近有發生的時候才開始特別在意,進而調整交易行為,然而像最近幾年很久沒發生漲跌停,就容易忽略這樣的留倉風險實際上長期是一樣的。

 

 

        本篇J舉了一些交易上的小例子,讓讀者可以透過不同的方式思考自己的交易是否受到可用性與捷徑的心理因素影響了決策? 也許換個角度思考一些原本認為理所當然的事情,或利用程式交易去驗證決策,可以大幅減少這些現象,增加交易的獲利性。