烏龜交易系統(tǒng)是一個(gè)有趣的想法,探索趨勢(shì)追隨者和突破交易者。“烏龜”的基本目標(biāo)是在早期階段輸入趨勢(shì)-它使用范圍突破來(lái)計(jì)算這些條目的時(shí)間。 海龜?shù)碾p系統(tǒng)突破+趨勢(shì)追隨者 海龜交易策略使用雙突破系統(tǒng)進(jìn)入市場(chǎng)。這背后的想法是從新發(fā)展趨勢(shì)中識(shí)別并從中獲利。這兩個(gè)系統(tǒng)協(xié)同工作,相互補(bǔ)充。 某種突破后,新趨勢(shì)經(jīng)常開(kāi)始。突破只是價(jià)格開(kāi)始向新方向強(qiáng)勁移動(dòng)的位置,超出既定范圍,突破新高或新低的地方。 這是一個(gè)突破交易者想要進(jìn)入市場(chǎng)的時(shí)間。然而事實(shí)是,大多數(shù)突破并沒(méi)有發(fā)展成足以賺取利潤(rùn)的趨勢(shì)。 烏龜?shù)目焖偻黄浦荚诒M早進(jìn)入趨勢(shì)。它的目標(biāo)是在最初的階段建立這個(gè)位置,因?yàn)橐环N新的趨勢(shì)正在形成。 另一方面,烏龜?shù)木徛黄葡到y(tǒng)在更長(zhǎng)的時(shí)間范圍內(nèi)工作,需要更強(qiáng)烈地指示趨勢(shì)的存在。這樣做的目的是輸入比較短時(shí)間范圍內(nèi)的趨勢(shì)更為確定的趨勢(shì)。 慢速突破信號(hào)還允許比快速突破系統(tǒng)更大的回撤趨勢(shì)。這使它能夠保持強(qiáng)勁的趨勢(shì),持續(xù)時(shí)間更長(zhǎng)。 快速突破-為期20天的系統(tǒng) 以20天突破的示例。烏龜系統(tǒng)觸發(fā)買(mǎi)入條目,觸發(fā)發(fā)生的原因是價(jià)格突破了20天的區(qū)間并創(chuàng)出新高。這發(fā)生在標(biāo)有藍(lán)色箭頭的蠟燭上。 隨后趨勢(shì)進(jìn)一步上升并且在綠色箭頭處觸發(fā)第一累積信號(hào)。 隨著價(jià)格以距離1/2 N的步長(zhǎng)向上移動(dòng),原始龜系統(tǒng)累積(添加單位),其中N是市場(chǎng)的平均每日移動(dòng)(參見(jiàn)此處的解釋)。這意味著按照1/2?,1個(gè)?,1.5倍?等等。 第一綠色箭頭的條目的價(jià)格和當(dāng)前價(jià)格之間的移動(dòng)大于8.5×更多?。這會(huì)觸發(fā)另一個(gè)買(mǎi)單。 另一個(gè)累積信號(hào)以1x N觸發(fā),因?yàn)閮r(jià)格繼續(xù)在利潤(rùn)方向上升。此時(shí),頭寸總數(shù)為3個(gè)單位,平均入場(chǎng)價(jià)為1.0773。添加第三個(gè)單元后,趨勢(shì)再次開(kāi)始下降。請(qǐng)注意,不會(huì)添加其他單位,因此位置大小不會(huì)更改。 3個(gè)單位的平均價(jià)格為1.0773。在標(biāo)有紅色關(guān)閉箭頭的蠟燭上,價(jià)格下降到1.0703。 此時(shí)N的值為65點(diǎn),因此觸發(fā)止損,因?yàn)閮r(jià)格現(xiàn)在比最后入場(chǎng)價(jià)格1.0838低2x N(130點(diǎn))。 使用追蹤止損:只要向某個(gè)位置添加單位,海龜就會(huì)使用追蹤止損。這有兩個(gè)影響。第一個(gè)是鎖定早期交易的利潤(rùn),第二個(gè)是限制后期交易的下行風(fēng)險(xiǎn)。 所有單位的止損通常位于訂單填寫(xiě)的最后入場(chǎng)價(jià)格的2x N處。因此,例如,如果最后一個(gè)倉(cāng)位以1.0838和N=65點(diǎn)的價(jià)格被填充,這意味著之前添加的單位的止損將全部上調(diào)至1.0838-2x N或1.0708。 根據(jù)海龜?shù)囊?guī)定,只有在上一次突破失敗時(shí)才會(huì)進(jìn)行為期20天的突破。因此,由于這個(gè)以止損結(jié)束,下一個(gè)突破將被交易而不是跳過(guò)。 慢速突破-55天系統(tǒng) 緩慢突破類(lèi)似于快速突破,但是當(dāng)更長(zhǎng)和更大幅度的趨勢(shì)可能開(kāi)始時(shí)觸發(fā)。 價(jià)格必須突破其55天的范圍,并觸發(fā)買(mǎi)單或賣(mài)單具體取決于是分別達(dá)到高點(diǎn)還是低點(diǎn)。 與快速突破不同,55天突破在每個(gè)信號(hào)上交易。另一方面,20天的突破只會(huì)在上一次失敗時(shí)觸發(fā),如上所述。 把它們放在一起 烏龜不是一個(gè)快速的戰(zhàn)略。至少在看到好處之前必須遵循幾個(gè)月。那是因?yàn)樗a(chǎn)生了大量的小損失并帶來(lái)了一些巨大的收益。為了獲利,那些巨大的勝利必須足以彌補(bǔ)損失。 這種高失敗率意味著海龜交易者必須依靠一些技巧來(lái)增加在正確的時(shí)間進(jìn)入的機(jī)會(huì)。烏龜還依賴(lài)強(qiáng)大的風(fēng)險(xiǎn)管理,這是整個(gè)戰(zhàn)略的一個(gè)組成部分。 海龜交易法則代碼 海龜交易系統(tǒng)是由理查德丹尼斯創(chuàng)造的,并且在1980年代為交易員提供了出色的工作。但事實(shí)證明,該系統(tǒng)需要進(jìn)行一些調(diào)整,以反映新的市場(chǎng)條件并立即生效。也就是說(shuō),趨勢(shì)仍然存在,這意味著存在大量的交易機(jī)會(huì)。 海龜交易策略的核心是在55天的突破中對(duì)期貨持倉(cāng)。55天的突破是價(jià)格超過(guò)過(guò)去55天價(jià)格的高點(diǎn)或低點(diǎn)。完整的策略更復(fù)雜,但是在本文中,我已經(jīng)用Python編寫(xiě)了戰(zhàn)略的關(guān)鍵,并在Apple Inc.,Kinder Morgan Inc.和Ford Motor Company等股票上交易。 第1步:導(dǎo)入必要的庫(kù) #獲取收盤(pán)價(jià)數(shù)據(jù) 從pandas_datareader導(dǎo)入數(shù)據(jù)為pdr 將fix_yahoo_finance導(dǎo)入為yf YF。pdr_override() #繪制圖表 導(dǎo)入matplotlib。作為plt的pyplot 進(jìn)口seaborn #數(shù)據(jù)操作 導(dǎo)入numpy為np 將pandas導(dǎo)入為pd 第2步:定義一個(gè)函數(shù)來(lái)計(jì)算股票的策略性能 我們將Apple,Kinder Morgan和Ford Motor的股票代碼傳遞給此功能。 def strategy_performance(stock_ticker): #從yahoo finance獲取stock_ticker的數(shù)據(jù)。 stock=pdr。get_data_yahoo(stock_ticker,start=“2009-01-01”,end=“2017-10-01”) 計(jì)算5天的突破和意味著 過(guò)去5天的高,低和平均值被計(jì)算并存儲(chǔ)在數(shù)據(jù)框庫(kù)存中。圖5是在回測(cè)中要優(yōu)化的自由參數(shù)。大熊貓滾動(dòng)功能用于計(jì)算突破和平均值。 #5天高 股票['高']=股票。關(guān)閉。轉(zhuǎn)移(1)。滾動(dòng)(窗口=5)。max() #5天低 股票['低']=股票。關(guān)閉。轉(zhuǎn)移(1)。滾動(dòng)(窗口=5)。min() #5天意味著 股票['avg']=股票。關(guān)閉。轉(zhuǎn)移(1)。滾動(dòng)(窗口=5)。意思是() 入境規(guī)則 當(dāng)股票的收盤(pán)價(jià)高于過(guò)去55天的高點(diǎn)時(shí),我們會(huì)對(duì)股票做多,當(dāng)股票的收盤(pán)價(jià)低于過(guò)去55天的低點(diǎn)時(shí),我們會(huì)對(duì)股票做空。 stock['long_entry']=股票。關(guān)閉>股票。高 stock['short_entry']=股票。關(guān)閉<股票。低 退出規(guī)則 如果股票價(jià)格超過(guò)過(guò)去55天的平均值,我們將退出頭寸。 stock['long_exit']=股票。關(guān)閉<股票。平均 stock['short_exit']=股票。關(guān)閉>股票。平均 位置 我們現(xiàn)在將進(jìn)入和退出信號(hào)存儲(chǔ)在一列中。長(zhǎng)倉(cāng)由1表示,短倉(cāng)由-1表示,或者沒(méi)有倉(cāng)位由0表示。如果使用fillna方法在一段時(shí)間內(nèi)沒(méi)有倉(cāng)位,我們將繼續(xù)前一個(gè)倉(cāng)位。 stock['positions_long']=np。楠 股票。loc[股票。long_entry,'positions_long']=1 股票。loc[股票。long_exit,'positions_long']=0 stock['positions_short']=np。楠 股票。loc[股票。short_entry,'positions_short']=-1 股票。loc[股票。short_exit,'positions_short']=0 股票['信號(hào)']=股票。positions_long+股票。positions_short 股票=股票。fillna(method='ffill') 戰(zhàn)略回報(bào) 我們計(jì)算了股票的日志收益并乘以信號(hào)(1,-1或0)來(lái)獲得策略回報(bào)。 daily_log_returns=np。log(stock。關(guān)閉/庫(kù)存。關(guān)閉。班次(1)) daily_log_returns=daily_log_returns*stock。信號(hào)。轉(zhuǎn)移(1) #繪制'daily_log_returns'的分布 print stock_ticker daily_log_returns。hist(箱子=50) plt。show() return daily_log_returns。cumsum() 第3步:創(chuàng)建股票組合并計(jì)算每只股票的策略表現(xiàn)。 portfolio=['AAPL','KMI','F'] cum_daily_return=pd。DataFrame() 對(duì)于股票的投資組合: cum_daily_return[stock]=strategy_performance(stock) #繪制累計(jì)每日回報(bào) 打印“累積每日?qǐng)?bào)酬” cum_daily_return。情節(jié)() #顯示情節(jié) plt。show() 如果你想修改策略,那么你可以復(fù)制這個(gè)代碼,它應(yīng)該很簡(jiǎn)單。您可以在投資組合中添加更多股票,并評(píng)估這些股票的策略表現(xiàn)。 結(jié)果的一個(gè)限制是它不包括交易成本。了解上述策略涉及大量風(fēng)險(xiǎn)也很重要。您根據(jù)最近其他市場(chǎng)參與者的買(mǎi)入或賣(mài)出買(mǎi)入或賣(mài)出股票。 |
|
來(lái)自: 昵稱(chēng)63894306 > 《文件夾1》