31 十月
以下是海龜交易策略的程式碼 /**************************************************************************************************** /海龜交易策略 /*****************************************************************************************************/ var nLastRawTime = 0; var BLBarOffset = 0; var vPrev = 0; var vState = 0; [...]
Posted in 交易系統程式碼範例, 順勢交易系統 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
The ATR Trailing Stop Indicator for TradeStation
Tushar S. Chaande 跟 Stanley Kroll 合著的「The new Technical Trader」(寰宇財金45 最新技術分析指標);是一本我一直覺得不錯的技術分析深度探討書籍。它探索了許多我們使用技術指標交易的工作者,心裡想瞭解與思考的問題。辟如說;之前我也寫過TradeStation程式碼的VIDYA均線指標,就是嘗試將天數參數的影響力變得比較有彈性;如果我們無法把它去除掉的話。這本書討論許多一般人認為正常的事、無法改變的事,但其實所有的事情都可能被改變!
在幾乎書的最末章,作者提出一個新的止損工具指標。它使用ATR(真實交易區間 Average True Range)為設計的核心,善用ATR的變動率(Volatility)特性動態調整了止損點趨近價格的速度,成為一個表現不錯的逐勢停損系統(Trailing Stop System)。不過當時我實在有點受不了書上那段寫得非常饒舌的設計原理,其實寫成函式也沒有那麼的麻煩,真不曉得他為啥要這樣的繞呀繞呀的?
這指標後來被我收藏到自己的盤後系統裡頭。那今天為什麼又要再拿出來用TS玩呢?因為呀、、我無意中發現一個國外的網站,竟然把這個指標變成商品標價美金49元?!呵呵~我想來當個好人,送大家這個紅包好啦!
怎樣?沒呼嚨你吧!不過我這裡可沒有那一條紅字寫的東西喔。
然後花49美元,看到的是這樣的東西。心動吧?告訴你這個停損真的不錯的。
我們的程式包括了兩個函式與一個指標,如下、、
圖1 多頭ATR停損函式
圖2 空頭ATR停損函式
圖3 指標部份的程式碼
其中的Smooth參數,將可以調整該彈性停損與價格間關係的緊貼程度。如果調整為比較小則趨近緊貼,反之則反應比較寬鬆。
圖4 這是把多頭停損都顯示出來的圖形。紅色代表交易多頭時使用的停損,而綠色代表空頭停損。
圖5 顯示單一條ATR停損的圖形,圖上為道瓊的一段空頭走勢。
標籤: 停損, 程式交易, 程式交易技術分析
相關文章
華爾街操盤高手:麥可‧史坦哈德—獨到的操作理念 ~ 文/By上海金源期貨經紀有限責任公司提供 (0)
華爾街操盤高手:馬蒂‧舒華茲—冠軍交易員 ~ [...]
Posted in 交易系統程式碼範例, 出場機制--停損與停利, 技術指標 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
當旗標為-3時,如果價格創新低超越第一比對組的低價記錄,則我們將旗標設定為-4。此時並開始初設第二對照數據組的低價與指標低值。
If CFlag = 4 Then Begin
If High > PrHi2 Then PrHi2 = High;
If Rsi_Ind > Hi2Ind Then Hi2Ind = Rsi_Ind;
end;
當旗標繼續維持在4的位置時,如果發現出現比前值高的高價,或比較高讀數的RSI值;我們就置換成最新的比對組數據。
If CFlag = -4 Then Begin
If Low < PrLo2 Then PrLo2 = Low;
If Rsi_Ind < Lo2Ind Then Lo2Ind = Rsi_Ind;
end;
當旗標繼續維持在-4的位置時,如果發現出現比前值低的低價,或比較低讀數的RSI值;我們就置換成最新的比對組數據。
If CFlag = 4 and (Hi2Ind > Hi1Ind or Hi2Ind [...]
Posted in 交易系統程式碼範例, 技術指標 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
相隔十年的兩次向後轉 - 如何在TradeStation上標示RSI背離
如果沒有記錯,距離在以前網站發表RSI背離文章的時間已經快要十年了。當時為了想一個方法讓大家比較容易可以快速瞭解如何辨識RSI背離,所以嘗試把自己當時寫的程式碼(V.B),轉個彎寫成白話表達!這也是那五個旗標的由來。
這段時間以來,卻有許多人希望我把背離寫成程式碼;這叫我有點哭笑不得。設定的那五個旗標根本就是一段程式碼直譯過來的,可以很容易的再還原為程式碼的,無論你使用什麼開發語言。
不過既然有那麼多人不知道如何下手,在歷經快十年後的今天;只好再來一次向後轉,把它變回程式碼。對我而言這是第一次嘗試把背離寫在TradeStation上頭,因為在TS出來之前我已經知道背離是如何的一個訊號了。而且、說真格的;將近十五年的時間嘗試寫過不下二十多種模組,至今仍沒有找到一個讓我滿意的模組。不過如果是要一個「樣版」的模組,那這個應該是可以派上用場的。
以下是TradeStation的程式原始碼,抱歉這次用這樣的呈現方式!因為希望有興趣的人可以自己至少花時間打上一次。我不吝嗇跟其他人分享,但很討厭浪費食物的人。許多人成天忙著追逐所謂的秘密,死求活盼的。然後看到之後剪貼一下Run Run之後「啊~不過如此」,丟到傷心太平洋去了。
圖1
你可以把它稍微的修正,就可以改成ShowMe或策略。RSI背離訊號是我交易裡的一個重要基礎項目,但卻只是全部系統的一部份;所以我並沒有在TS上頭執行完整的系統過,旗標部份我給了,想玩出什麼鳥來自己決定吧!接下來還是來說明這些程式碼、、、
{*******************************************************************
Description : This function math RSI flag for Patriot trading system
Provided By : Parkson Dow
********************************************************************}
這個不用再說明了吧?「Patriot」是以前給這交易系統取的名字。
Input : IndLen(9), HiP(80), LoP(20), RevH(65), RevL(35);
我們設定幾個必須要的外部輸入數據。IndLen(9)是可以改變RSI的計算天數,這裡內定為9天。HiP(80)是設定觸動旗標1的值,這裡為80。Lop(20)是設定進入旗標-1的值,與HiP為100補數所以為20。RevH(65)與RevL(35)是旗標3與-3的設定值,也互為100補數,所以設為65與35。
Vars : Hi1Ind(0), Hi2Ind(0), Lo1Ind(0), Lo2Ind(0), PrHi1(0), PrHi2(0), PrLo1(0), PrLo2(0);
Vars : Rsi_Ind(0), Flag_3(0), Cflag(0);
變數方面Rsi_Ind(0)用來保存RSI的計算結果,CFlag(0)用來記錄旗標狀態。Flag_3(0)則拿來存放旗標在3或-3時的極限值。其餘八個變數分別使用在記錄背離時所須的四個比對數據,多空兩組一共八個。
Rsi_Ind = RSI(Close, IndLen);
計算今天的RSI數據。
If Rsi_Ind >= HiP and CFlag <> 1 Then [...]
Posted in 交易系統程式碼範例, 技術指標 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
相信這段時間大家對TS2000i的語法應該已經不陌生,甚至駕輕就熟了。所以、我從現在起不再談基礎寫作,而來專心介紹一些新發表的指標概念;因為、我們最終不就是要運用TS來交易獲利的,不是嗎?
這裡介紹的指標應該大多來自兩個來源,一是商品與股票技術分析月刊『Technical Analysis of STOCKS & COMMODITIES』。二是來自TS2000i的使用者討論區,如果你是正版的使用者請不要放棄你的權益,加入吧!今天所介紹的指標便是來自於後者。
HMA (Hull Moving Average) Hull 移動平均線,它的設計者是一位澳大利亞的分析師Alan Hull。所以你看的出來Hull是來自他的姓,不必查字典啦。設計的原由是想設計出一條超快反應的移動平均線,你知道的、移動平均因為它被平均、鈍化,所以在劇烈的行情裡它往往跟電影的警察一樣在劇終時出現,特別是除權、分割等一些狀況總得等上一等才能使用。當然啦、包括急漲或急跌時等待交叉完成來進出,真的的有多$%^$^&就有多#%^$&^!
其實這個概念也談不上新囉!因為已經有許多前輩為此努力過嘗試過當一個人所能想到的所有方法來克服;我們以前拿來當基礎與法說明的VIDYA就是這種努力的產品。『有點黏又不要太黏』或是、、『應該黏就黏、不該黏就離開點』說是容易做是、、唉!
這個地球上頭有一家公司叫Jurik(http://www.jurikres.com/)。他們竟然發表一系列美夢成真(還是似真似幻)的指標,據稱已經完全解決移動平均不良於行的問題,實也引起交易圈內一陣騷動。不過這家公司畢竟不是紅十字單位,它是要花錢來買的。錢倒事小,不過交易不是在開玩笑,用黑盒子總叫人心頭不踏實(原始碼未公開)。
所以Alan Hull寫了這個HMA指標來追求如Jurik的反應速度。而這指標也不只是畫移動平均罷了,它也跟Jurik的指標用法一樣,可以帶入其他已知的指標變數中,產生一個新的指標。比如你代入RSI指標,把HMA寫成函式取代Close來計算RSI;平滑的效果還有點像磨皮美容。
好的、我們就來看看這個HMA的函式:
{jtHMA – Hull Moving Average Function}
{Author: Atavachron}
{May 2005}
Inputs: price(NumericSeries), length(NumericSimple);
Vars: halvedLength(0), sqrRootLength(0);
{
Original equation is:
———————
waverage(2*waverage(close,period/2)-waverage(close,period), SquareRoot(Period)
Implementation below is more efficient with lengthy Weighted Moving Averages.
In addition, the [...]
Posted in 交易系統程式碼範例, 技術指標 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
現在、我們點取『Graphs』,顯示的第一張圖應該是『Equity Curve 資產變化曲線』如下圖一般。
這張圖觀察你的系統在這段時間,對你的帳戶資金做的改變。看這張圖的重點有兩個;壹、它是否是正的成長,就是它是否讓你賺錢,這件事比較簡單些。第貳、我們應該觀察它雖然努力的往上爬,但問題是它如何的爬?比如說:在第11次交易後我們的資產值創了新高,但是隨後到第16次另一個新高之前它向下的回吐資產是不是幅度很大?在我們的例子裡似乎這套系統是非常穩定的在運作著。好玩的說法是它讓你的心臟非常健康的、有益的跳動著。
接下來我們要看另一個比較重要的圖表。點選圖表的左上選單,從Equity Curve 改變為Drawdown / Run-up Graphs,你會看到下圖『Drawdown』的分析圖表。
Drawdown表示未平倉前部位產生的最大浮動虧損值。這是對每一次交易逐次檢討的,水平的藍線代表Drawdown的平均值,這裡為147.62。你可以把游標靠近一些點,它會給你詳細的數字;本例中標示的是第12的虧損值,也是圖上最大的一筆負值。
這張圖與數據告訴我們,使用這個交易系統無論每次進出最後的盈虧為何;我們都可能在平倉前承受約147.62的浮動虧損。這代表如果你是以虧損百分比或盤中虧損值來設定停損的人,當你設定在147.62以下的金額時,你有可能『冤死』許多可能獲利的部位。
別忘了我們先前數據Average losing trade 為180.36;這是平倉實現的虧損平均。這兩個數據給我們什麼東西呢?當我們的盤中浮動虧損在147.62以內的時候,部位可能還是處於正常的波動值,我們仍可以期待該部位未來開始產生獲利。而當虧損擴大到180.36以上時,你對這個部位的獲利想法應該修正往比較保守的想法。如果我們的數據分佈是趨向穩定的,我們可以嘗試設定147.62減一個標準差來設定我們的資金停損點。在這裡我們用180當範例來設定,在TS2000i中我們可以用內定函式SetStopLoss( 180 );來設定虧損資金式的停損。程式可以修改為:
{***************************************
Written by : Parkson Dow
Name : Vidya_1
****************************************}
Inputs: Length(21), Smooth(5), St_Loss(180);
Value1 = SS_Vidya(Length, Smooth);
SetStopLoss(St_Loss);
Condition1 = Close[1] > Value1 AND Close > Value1 ;
Condition2 = Close[1] < Value1 AND Close [...]
Posted in 交易系統程式碼範例, 歷史績效回測, 程式交易資金管理 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
在點選Trades的部份後,我們會看到像底下的視窗內容。
這部份詳列了評估系統每筆的交易細節。這頁裡特別強調策略與財務的分析,所以稱它是高等的分析報表。在左上角你可以點選不同的報表展現方式。也可以用傳統的報表如下所列。
我們現在解釋的名詞以高等的報表為主,因為上頭有許多名詞隱藏許多公式,反正就是不說你永遠也搞不清楚的啦。
Trade # 交易次數編號
Type 交易類別,買進或賣出
Date 進出日期
Time 進出時間
Price 進出價格
這個不用解釋吧?
Contracts 建立部位數目(幾口)
Profit 盈虧、損益
上半部的數字顯示進場的部位是幾口,下面的數字為交易的損益;跟小學的成績單一樣紅的就是打屁屁的,特別怕你忽略掉它還幫你括符起來。
% Profit 單筆獲利百分比
Cum Profit 累計盈虧金額
上項為此筆交易相對於資金的獲利百分比。下方為自第一筆交易以來所累計的總交易盈虧。
Run-up 部位持有時間曾經產生的最大獲利
Drawdown 部位持有時間曾經產生的最大虧損
Run-up跟Drawdown是相反的名詞。Run-up在標示你這筆交易可能產生的最大利潤,非平倉利潤是指你當過路財神的部份。比如你買進一口小麥,最後你平倉賺得USD$1000,可是盤中可能曾經發生過USD$1500的浮動獲利;我們總是沒法平在最好的價位不是嗎?Run-up就是那個最好的價位。至於Drawdown就是嗯~最大夢魘的那一部份囉。
Entry Eff. 進場價位效率
Exit Eff. 出場價位效率
多頭進場價位效率
Entry_Efficiency = (Highest_Price – Entry_Price)/(Highest_Price – Lowest_Price).
做空進場價位效率
Entry_Efficiency = (Entry_Price – Lowest_Price)/(Highest_Price – Lowest_Price).
不要被上頭的兩個公式嚇到了(現在說會不會有點晚了)!其實你不覺得蠻眼熟的嗎?它根本就是用來算KD裡那個RSV(或%R公式)的公式啦。這個公式是在分析你的進場價位是在這段時間(在平倉之前)價格範圍的百分比。為什麼分多空呢?因為你做多進場當然是越靠近最低價格越好囉,所以拿最高價減進場價再去除價格範圍;得到的比數越高表示含蓋的價區越高,自然代表一個好的開始。空單當然我們希望離最高的價格越近越好囉。至於出場的效率計算公式是這樣的,自己依樣畫葫蘆想想吧!
多單出場
Exit_Efficiency = (Exit_Price – Lowest_Price)/(Highest_Price [...]
Posted in 交易系統程式碼範例, 歷史績效回測 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
第四部份:不要再背離科學盲目交易下去了
你認為到上頭的箭頭出現你的工作就大功告成了?錯!痛苦的事才剛剛開始呢。我們學習交易的人,摸著良心說;有幾個人做過我上一章説的『白紙黑字』呢?還有、有幾個人真正的逐筆逐筆的核對過訊號的進出呢?更徨論在不同的數個市場的歷史價格中一筆筆的計算記錄呢?這些難道不重要嗎?你是怎麼放心的去用你的系統交易的呀?
今天、TS2000i幫你迅速的完成上面那些不可能的任務。它幫你一筆一筆的標上進出的訊號時機,最重要的它幫你計算盈虧還有做你想像不到的策略分析與風險控管。現在我們就是要開始介紹這部份,另一個TS2000i的寶藏。保持你的TS2000i停在上面最近的一張圖上頭;點選View>Strategy Performance Report你會看到像這樣的一個新視窗,我們交易系統的策略效能評估報告。
這個評估報表是非常複雜與「龐大」的,不下於你在閱讀上市公司的財報。基本上你要不俱備某種程度的統計學知識,我保證你會像諸葛亮寫出師表的最後那一句『臨表涕泣,不知所云』。在這裡我只選擇性的介紹一些我們這些統計的『門外漢』可以理解與重要的數據來做解說。先看最上頁Summary摘要的部份,這部份你必須要全部瞭解的。
TradeStation Strategy Performance Report – Vidya_1 W N5-60 min. (2005/1/3-2005/6/24)
這行沒什麼要解釋的,只是讓我們知道報表的分析項目與時間。我用的策略是Vidya_1的系統,商品是2005年7月份的小麥小時圖。分析期間為2005年的1月3日到6月24日。
Performance Summary: All Trades 分析摘要:全部的交易。
這部份分析與顯示包括做多與做空混合並列,也就是完整的交易部份。在摘要的這部份你往下看會找到一共有三部份;除這個包含多空的All Traders部份還有只列做多『Long Traders』與只列做空的『Short Traders』部份。
Total Net Profit 淨盈
Cross Profit 毛利
Cross Loss 毛損
雖然我寫淨盈,但是它不代表你的系統一定會產生最後的盈利,它仍有正負數的表示。它是代表你的系統獲利部份減去虧損的數值;也就是下方的Gross Profit(毛利、獲利交易)減去Gross Loss(毛損、虧損交易)。有些人喜歡直接以Net profit是否為正與正值多寡來評斷系統的好壞,其實這是很「不健康」的方式。比如說兩個系統Net Profit都為產生20,000美元的獲利;系統A的Gross Profit是USD$25,000,Gross Loss為USD$5000。系統B的Gross Profit為USD$60,000,Gross Loss為USD$40,000 。我會喜歡系統A多一點,因為系統A所產生的交易過程資金變動會比較小,就是說心臟會比較平穩跳動過日子。交易次數也應該不會像B系統多,幹嘛便宜了期貨公司?
Open position P/L 未平倉損益
如果你尚有未平倉的部位,這裡會顯示它目前結算的盈虧。
Total # of trades 時間範圍內總共交易次數
Percent profitable 系統獲勝百分比
Number winning trades 獲利(成功)交易次數
Number [...]
Posted in 交易系統程式碼範例, 歷史績效回測 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
第三部:讓想法自由飛行
問問我們自己,花這麼多時間學習最終要的是什麼?什麼都不是!我們要的只是自由,一個人生命的自由。從知識得到財富的自由,最終解放我們自己,親嘗生而自由的感覺,這才是交易最終的目的。
我從未想過用一生浸淫交易當中,生命還有很多我想學習的東西,地平線的那端還有許多我未曾走過的地方。你希望在垂垂老已的時候還搞精密計算來交易維生嗎?還是這只是你現在唯一想到防止自己老人癡呆的方法?十多年前我便放棄傳統的圖形分析、抽象交易法;轉入機械化交易的研究。因為它是目前我所認知的最好解決交易的方式。在目前它可以讓你明確的走到設定的未來,達成你的資產目標。未來、不知多久的未來,只要你一息尚存;你都可以使用一個最簡單與有效的方法交易獲利,你為什麼不選擇這樣的路呢?
從以前我的網站已然談過許多機械化交易的觀念,達到機械化交易的方式就是跟我做像以下的事:白紙黑字寫下你的交易法則,並確實執行!如果你不能用確定的字眼寫成,那你零分。如果你寫的像萬里長城那麼長,那60分。你以為很容易?寫看看吧!這些年來還沒人真的寫給我看過。知道嗎?這就是你交易無法成功的盲點。相信我、現在就開始做這件事!完成了、你就完成機械化交易的目標。
上TS2000i是另外一回事;我們稱為『程式化交易』。因為你可以機械化你的交易,也就是說你的交易可以『數據化』、『量化』,所以可以把它『程式化』。很多人以為非得上電腦才叫機械化,其實不完全對的。機械化交易其實就是要我們把自己的交易條理化罷了。
現在我們來看看VIDYA的交易;如果我們依它來交易,我們的白紙黑字會是什麼?
做多條件:如果今天跟昨天的收盤都大於VIDYA;那麼我們明天在今天的高點外買進。
做空條件:如果今天跟昨天的收盤都小於VIDYA;那麼我們明天在今天的低點外買進。
做多回補:如果今天收盤跌落VIDYA之下,多單回補。
做空回補:如果今天收盤站上VIDYA之上,空單回補。
這是最基本的交易規則,包括了我們何時、如何進場與出場。不要緊張,這章會有點長度,最終我會讓規則最終很充實的;但現在我們一步一步來。依慣例先讓你看一看程式碼,也請你先比較程式跟上頭的規則之間轉移的技巧。
{***************************************
Written by : Parkson Dow
Name : Vidya_1
****************************************}
Inputs: Length(21), Smooth(5);
Value1 = SS_Vidya(Length, Smooth);
Condition1 = Close[1] > Value1 AND Close > Value1 ;
Condition2 = Close[1] < Value1 AND Close < Value1 ;
Condition3 = CLose Crosses Under Value1;
Condition4 = Close Crosses Above Value1;
If Condition1 Then
Buy ("Buy_V") Next Bar at High [...]
Posted in 交易系統程式碼範例, 技術指標 by: 股票 期貨 選擇權贏家
No Comments
26 十月
文章來源:Me And You And A Dog Named BIBO
再來!我們現在已經把多空用PaintBar順利的『分化』它們了。接著我們學著用ShowMe來幫我們試著標示進場點。開一個ShowMe新頁寫以下的程式:
{***************************************
Written by: Parkson Dow
Name : Vidya_BS
****************************************}
Inputs: Length(21), Smooth(5);
Value1 = SS_Vidya(Length, Smooth);
Condition1 = Close[1] > Value1 AND Close[2] > Value1 AND Close[3] < Value1 AND Value4 = 0;
Condition2 = Close[1] < Value1 AND Close[2] < Value1 AND CLose[3] > Value1 AND Value4 = 0;
If Condition1 Then Begin
Value2 = High[1] [...]
Posted in 交易系統程式碼範例, 技術指標 by: 股票 期貨 選擇權贏家
No Comments