python海龟交易策略_海龟交易法则的基本原理是什么,如何实现海龟交易策略?...
海龜交易法則簡介
什么是海龜交易法則?
?
1983年年中,著名的商品投機家理查德.丹尼斯與他的老友比爾.埃克哈特進行了一場辯論,這場辯論是關于偉大的交易員是天生造就還是后天培養的。理查德相信,他可以教會人們成為偉大的交易員。比爾則認為遺傳和天性才是決定因素。
?
為了解決這一問題,理查德建議招募并培訓一些交易員,給他們提供真實的帳戶進行交易,看看兩個人中誰是正確的。
?
他們在《巴倫氏》、《華爾街期刊》和《紐約時報》上刊登了大幅廣告,招聘交易學員。廣告中稱,在一個短暫的培訓會后,新手將被提供一個帳戶進行交易。
?
理查德從報名的人中精選出13個人,1983年12月底,學員被邀請到芝加哥進行兩周的培訓,到1984年1月初,開始用小帳戶進行交易。到了2月初,在學員證明了自己的能力之后,丹尼斯給其中的大多數人提供了50萬至200萬美元的資金帳戶。
?
“學員們被稱為‘海龜’(丹尼斯先生說這項計劃開始時他剛剛從亞洲回來,他解釋了自己向別人說過的話,‘我們正在成長為交易員,就象在新加坡他們正在成長為海龜一樣’)。”----斯坦利.W.安格瑞斯特,《華爾街期刊》,1989年9月5日
?
海龜成為交易史上最著名的實驗,因為在隨后的四年中這些海龜交易員取得了年均復利80%的收益。
?
是的,里克證明了交易可以被傳授。他證明了用一套簡單的法則,他可以使僅有很少或根本沒有交易經驗的人成為優秀的交易員。而這個交易法則被后世稱為“海龜交易法則”。
海龜交易法則具體內容
海龜交易法則:海龜交易法則屬于趨勢交易,首先建立唐奇安通道(下文會具體解釋),即確定上突破線和下突破線,如果價格突破上線,則做多,如果價格突破下線就平倉或做空。
唐奇安通道與開倉
唐奇安通道,作為一個通道必定有上線和下線,上線就是前N1日內的最高價,下線就是前N2日內的最低價,一般來說N1=20,N2=10;然后,價格上穿就買,下穿就賣,就是這么簡單。
但是僅僅只用唐奇安通道進行買賣,其實效果跟MACD線等其他趨勢策略的效果差不多,并沒有更優
ATR與倉位管理
海龜交易法則最核心的部分,在于倉位的控制,這種止損會讓你基準的虧損不超過總資金的n%,所以這部分的思想是需要我們學習的。
當日的真實波幅TR(true range)
計算當日真實波幅公式
?
TR_1=Max(H_1?L_1,H_1?C_0,C_0?L_1)
其中,下表1代表當日,下表0代表昨日,C_0是昨日開盤價close,H是最高價high,L是最低價low。
平均波幅ATR(Average true range)
一般取前20日的平均TR。
? ATR_{20}=mean(TR_1,TR_2…TR_{19},TR_{20})
其中,公式mean(X_1,X_2)代表求X_1和X_2的平均數。
這時候我們已經求出ATR,這個數字可以當做衡量今天的價格波幅的基準,為1單位,比如現在價格是100元,基準波幅ATR=4元,代表今天基準波幅在98-102元,如果是2倍ATR,波幅就在96-104元。
倉位管理
在僅討論多頭的情況下:
1、如果標的價格跌破"持倉均價-0.5(1、1.5、2)倍的ATR",則平倉至原始倉位的75%(50%,25%,0%)。
2、如果標的價格跌破唐奇安通道下軌,則全平倉。
海龜交易法則策略實現(基于掘金量化平臺)
策略思想
當價格上穿唐奇安通道且短MA在長MA上方時開多倉;當價格下穿唐奇安通道且短MA在長MA下方時開空倉(8手)
?
若有多倉則在價格跌破唐奇安平倉通道下軌的時候全平倉位,否則根據跌破持倉均價 -
x(x=0.5,1,1.5,2)倍ATR把倉位平至6/4/2/0手
?
若有空倉則在價格漲破唐奇安平倉通道上軌的時候全平倉位,否則根據漲破持倉均價 +
x(x=0.5,1,1.5,2)倍ATR把倉位平至6/4/2/0手
?
策略主要步驟實現
訂閱數據
subscribe(symbols=symbols, frequency='1d', count=31, wait_group=True)
? 訂閱數據需要在定義init
函數里面設置,并調用subscribe函數,這里注意,我們需要通過計算前三十根bars來作為開平倉的標準,并在當前bar上做出開平倉操作,所以需要獲取31根bar:
symbols?需要設置訂閱的標的代碼。
frequency需設置訂閱數據的周期級別,這里設置1d表示以一天為周期。
?
count需要設置獲取的bar的數量
?
數據獲取
data = context.data(symbol=symbol,
frequency='1d', count=31, fields='close')
?
訂閱數據之后,需要獲取已經訂閱的數據來進行操作,這時需調用context.data函數:
symbols需要設置訂閱的標的代碼。
frequency需設置訂閱數據的周期級別,這里設置1d表示以一天為周期。
count需要設置獲取的bar的數量
fields需要設置返回值的種類
?
獲取持倉信息
position_long = context.account().position(symbol=symbol,
side=PositionSide_Long)
position_short = context.account().position(symbol=symbol,
side=PositionSide_Short)
?
在判斷平倉條件時,需要獲取持倉信息(包含持倉均價),這就需要調用context.account().position函數:
symbols需要設置訂閱的標的代碼。
side需要設置持倉方向,有PositionSide_Long和PositionSide_Short兩個選擇。
?
策略回測分析
回測報告
?分析
?
我們選取了2017年6月至2017年12月作為回測周期,“RB1801”與“FG801”作為標的合約,均線長短周期分別為5d,20d,唐奇安通道上下軌計算周期分別為20d,10d,ATR計算周期為20d,可以看出:
勝率(具有盈利的平倉次數與總平倉次數之比)達到了34.48%,因為海龜交易法則為趨勢跟蹤策略,所以勝率不會太高。
?
卡瑪比率(年化收益率與歷史最大回撤之比)是使用最大回撤率來衡量風險。采用最大回撤率來衡量風險,關注的是最極端的情況。卡瑪比率越高表示策略承受每單位最大損失獲得的報酬越高。在這里卡瑪比率超過了9。
?
夏普比率(年化收益率減無風險收益率的差收益波動率之比)超過2.5,也即承受1單位的風險,會有超過2.5個單位的收益回報。
?
策略收益曲線整體相對穩定,適合穩定型投資者,最大回撤極小,另外,策略在趨勢行情行情中表現更加。
總結
以上是生活随笔為你收集整理的python海龟交易策略_海龟交易法则的基本原理是什么,如何实现海龟交易策略?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios没有StringBuilder,哥
- 下一篇: 海龟交易法-期货