潮流特區

最新文章

【七年間短炒騰訊52次勝率達76.92%的方法】

創富坊
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威)・2024-09-26

【七年間短炒騰訊52次勝率達76.92%的方法】 在筆者Patreon 每星期會定期有一些Trading View的語法教學。在今年6月13日Patreon的文章中便講解了「七年間短炒騰訊52次勝率達76.92%」的方法。 若你由2017年1月3日開始買入騰訊並一直持有到今年6月13日,這7年間回報可達到114.57%,即使只買入10萬港元,大約能獲利114570港元。但對很多人來說這根本不可能的。例如在2022年也有很多機構多次增持騰訊,但騰訊股價在低位徘徊不前,到了2023年初便沽貨離場。 要長期持有一隻股票真的要很有「耐性」,這點真的並非每個人都做到,巴菲特被視為大師,最大原因是他真的大部份時間也「坐得穩」。筆者今天並非要教長期持有股票的好處,既然我們沒有辨法也沒有能力長期持有一隻股票,透過短炒又能否有較好的回報? 文章中介紹的就是專用作炒騰訊的方法。若運用30分鐘圖表,由2017年1月3日至今的回報有78.22%,同樣投入10萬港元,回報約78222.6港元,期間交易了52次,獲利的有40次,勝率大約76.92%,平均每次交易持倉時間約413支bar。 若用30分鐘圖,平均持倉時間大約1個月左右,這樣應更合符人性,因為若要持倉長達七年,連很多專家都做不到,但一般散戶要持倉1個月較容易處理。(pinescript 代碼在patreon內容可找到) 筆者patreon: https://www.patreon.com/quantshk

【James Altucher的Unilateral Pairs Trading 策略- 5年回報627.75%】

創富坊
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威)・2024-07-22

在金融市場中有一個人物頗具爭議性,他曾經身家由逾千萬美元跌至一無所有,其後又輾轉變得富有。他便是James Altucher,現在大家基本上經常看到他演講的內容都是與個人成長及心靈有關。 James Altucher試過銀行戶口只剩下143美元,但其後又把身家翻至1500萬美元,要說心靈的故事他自然有很多東西可以發表。但他除了創業做生意外,由於曾在多家對沖基金工作,所以一直都有投資股票及加密貨幣。 對他有興趣的讀者也可以留意他的blog: https://jamesaltucher.com/blog/ (圖一) 他blog內的內容有些其實也有參考價值,例如他寫過一篇題目為《THE PERFECT INVESTMENT STRATEGY》的文章,他會說自己本質上是一個非常簡單的人,並不真的喜歡投資,只喜歡學習,喜歡遊戲,喜歡看電視,寫作,做播客等等,還有非常喜歡睡覺。他認為完美的交易策略就是在生活中找到最具潛力的領域,然後買入這個行業中全部的股票。 例如你在1970年到1990年間看好電腦行業,然後你投資每一家即將要上市的公司,假設你買入了合共100家電腦公司股份,每家用1,000美元去買,那你總共投資了10萬美元。但這100家公司中有98家公司最後都破產,不過這並不重要,因為存活下來的2家公司能把你的資產翻至350萬美元。若超過兩家公司能存活,你能賺取的利潤會更多。 除了blog外,他還寫過兩本書,分別是《Trade Like a Hedge Fund》及《Choose Yourself!》。(圖二) 《Trade Like a Hedge Fund》這本書在2004年已出版,筆者就頗為喜歡,若中文版的名稱應該較多人聽過,中文譯名為《20招成功交易策略》,書中他提及的分析方法其實很值得參考。首先他認為交易策略應該簡單的策略才是交易中最穩鍵的。但所謂簡單的策略,又不是像Larry Connors那種初級班的策略。 可以說James Altucher的策略是由複雜的策略進行簡化,目的就是提高真實交易時的執行加,這與那些RSI(2)超賣再超賣的策略並不相同。 James Altucher在《Trade Like a Hedge Fund》中曾經提及一套名為「Unilateral Pairs Trading」的策略便很值得參考,筆者研究Pair Trade的方法已經很久,而James Altucher也在書中道出了Pair Trade的關鍵,他認為Pair Trade雖然對市場的方向是中立的,意思是你沒有估市況升/跌,但實際上對兩個產品的差價是有偏見的,做Pair Trade的人是在估計差價會擴大還是縮小,所以也會要去估,而非完全沒有任何預測就能賺錢。 但Pair Trade的問題是,炒家同時運用兩個「工具」來做交易,在真實交易時當兩個工具的價格也變得不尋常之時,炒家就不只面臨一個資產的風險,要處理的事情就會更多,而且也存在兩個資產同時虧損的可能性。(圖三) 不過,運用Pair Trade的人都是十分擅長去估計兩個工具之間的差價,有些人擅長預測股價,有些人則會認為預測兩個工具的差價變動會較容易。不過,差價的波動會較股價為少,而且若市場越來越多的人在做Pair Trade,差價會變得更少,因此炒家若要追求更高的回報,就需要利用槓桿,但風險也會因而提升。 所以James Altucher認為,其實可以進行單邊對沖交易,那就是雖然觀察兩個資產的價格差距來做交易,但最終只會買入或沽空其中一個資產,他認為這樣做其實更好,因為其中一個資產的價格變得很不合理時,炒家會預測價格會回歸正常值,假設兩個資產中更為波動的一個資產偏高時便直接沽空,偏低時便直接買入,根本不用兩個資產同時交易,最終也是能達到預測價差收窄的結果,但進行單邊對沖交易就更加有靈活性,而且風險相對較低。 但「Unilateral Pairs Trading」不只適合交易正股,若用以交易流動性更大的ETF如QQQ及SPY等,James Altucher認為效果會更佳。筆者則把相關策略修改,再用SQQQ的數據作測試,結果也證實不俗。下一篇文章會告訴大家 James Altucher所研究的「Unilateral Pairs Trading」詳細內容。 (來看Patreon文章) 筆者Patreon: https://www.patreon.com/quantshk 網頁:www.quants.hk

將583.15元翻至1000萬的Ross Cameron 用了什麼交易策略? (一)

創富坊
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威)・2024-07-16

在Youtube上大家經常看到很多教授交易策略的外國炒家,如2016年曾贏得「The Million Dollar Trader Competition」的Nial Fuller、聲稱將583.15元翻至1000萬的Ross Cameron,還有TradingMarkets.com創辦人Larry Connors等。 之前已介紹過Larry Connors的R3 Trading Strategy,今天想跟大家討論有關Ross Cameron的事跡及他的交易策略。 Ross Cameron的影片相信很多讀者都在Youtube看過,看他的樣子就看不出已經58歲,若稱它為Daytrade大師應該大家也很同意,他的Youtube名稱就稱為「DaytradeWarrior」,中文就是「日內交易戰士」。 https://www.youtube.com/@DaytradeWarrior Ross Cameron曾經透過Daytrade將約400萬翻至1000萬。而且他出售的一套交易系統,大約有超過2萬人各用了數千美元購買,不過後來就被聯邦貿易委員會指他的公司通過虛假和不切實際的承諾銷售系統,而購買的客戶大多數也沒有任何投資上的回報。 筆者沒有買過他的系統,也絕不建議大家去買,他的影片提及很多的交易技巧其實也只是「老生常談」,首先他認為Daytrade是最有利可圖的交易類型,因為即市開倉及平倉就避免了持倉過夜出現重大虧損的機會。但他強調Daytrade也必需有良好的風險管理,你要賺得更多,自然就需要冒更大的風險,所以在有限風險下不可能期望市場會每天給你很驚人的回報,甚至有很多日子根本是沒有回報的。 另外他強調,若要做Daytrade,本金至少要有25000美元,大約是195000港元。因為市場是一個很「嚴格」的領域,而且Daytrade不可能每天都賺錢,若本金根本不足,可能很也便會輸光離場。 雖然他主力是做「low float stock」,不過他提出的交易策略也有一些是值得參考的,有些準則也適合應用在一些熱門股之上。 1)交易中的3-5-7規則: 先要計算價格持續上漲或下跌的天數、若用小時圖則看有多少個小時,若用5分鐘圖則看有多少個5分鐘,然後大家會發現,在第三、第五或第七根陰陽燭上,都會是相反方向出現的時間。 筆者就覺得若應用在Daytrade上,例如觀察5分鐘圖表,連續3根陰陽燭的價格都在下跌是經常出現的情況,故此未必有參考價值,而連續5根陰陽燭的價格也在下跌,這種情況雖較少,但也不一定會出現反彈,但若連續7根陰陽燭的價格都在下跌,基本上很少出現,但若出現時,價格確實很大機會反彈。 如(圖一)是Tesla(US:TSLA)的5分鐘圖,2023年12月14日當日便出現這種情況: 2) 3天法則 由於每個投資者都必須在三個工作日內結算他們的證券交易。他的意思是用現金戶口,這個結算週期被稱為「T + 3」,若用孖展戶口則可以「T+0」。而現金戶口的「T+3」規則意味著當投資者購入股票後,證券交易商必須在交易執行後的三個工作日內收到投資者的付款。但若投資者未能付款就必需賣出股份,故此股市中若連續上升三天後都大多會調整,又或者出現升勢放緩。 但筆者就認為,這個3天法則在「弱市」中才較多出現,在市況十分強的情況,3天法則並不適用。 如2022年與2023年便有很大的分別,2022年屬於「弱市」,2023年則屬於「強市」,3天法則在2022年就經常出現。 例子: (圖二) Apple(US:AAPL)的日線圖上,2022年經常會看到上升3天後便升勢放緩的情況: 但同樣看Apple的日線圖,在2023年裏3天法則並不適用: (圖三) 除了以上的兩個法則,Ross Cameron也講解過如何去選股,以及何時應該入市,他稱之為「momentum-day-trading-strategy」。 這套交易策略每天只會交易兩個小時,但交易前卻要有很多的準備,首先就是要找出具備「動能」的股票,要透過Daytrade實現利潤,Ross Cameron認為選股的過程十分重要,一些具備「動能」的股票甚至可以一天內上升20%至30%。但這些股票幾乎每天都有的,只是大家能否找到它們。 Patreon 的文章有介紹他的momentum-day-trading-strategy,以及他的交易策略若用Trading View寫出來後的backtest結果如何。(來自Patreon文章) 筆者Patreon: https://www.patreon.com/quantshk

如何提高保歷加通道交易策略的勝算

創富坊
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威)・2024-07-10

我們已學習了一些pine script的基本語法,相信大家經練習後已能逐漸掌握。這篇則會講解一些比較深入的分析技巧。 有一種策略是很多新手都經常問我的,若要寫股價跌穿保歷加通道底部便買入,升穿保歷加通道頂部便造淡,應該怎樣用pine script 寫出來? 以下的入市準則是,收市價低於保歷加通道底部便買入,然後待收市價跌穿保歷加通道中軸便平倉,相反,收市價高於保歷加通道頂部則造淡,然後待收市價升穿保歷加通道中軸平倉。 //@version=5 strategy("升穿bollinger's band錯誤用法", overlay=true, margin_long=100, margin_short=100) sma20=ta.sma(close,20) mult=ta.stdev(close,20) upper=sma20+2*mult lower=sma20-2*mult noposition=strategy.position_size==0 var bool traded =false buyCond=close<lower and close<sma20 shortCond=close>upper and close>sma20 buycloseCond=ta.crossover(close,sma20) shortcloseCond=ta.crossunder(close,sma20) if buyCond and noposition and not traded strategy.entry("BUY",strategy.long) traded:=true if buycloseCond and not noposition strategy.close("BUY") if shortCond and noposition and not traded strategy.entry("SHORT",strategy.short) traded:=true if shortcloseCond and not noposition strategy.close("SHORT") if ta.change(time("D"))!=0 traded:=false 這是最簡單的寫法,但大家應會想到,若收市價低於保歷加通道底部便買入,那以下情況可能會出現「連續多次買入」,所以在策略中已設定了每天只交易一次,而且入市情況需要「沒有持倉」才會入市。 可以看到這類交易策略,交易一年後仍然要虧損,數據是用了Tesla(US:TSLA)的5分鐘數據,而這個策略在一年裏交易了259次,獲利的有151次,勝率大約是58.3%。 若要修改這類運用保歷加通道頂部及底部的策略,其實比較好的處理方法是,當股價升穿保歷加通道頂部後,等待股價再回落至保歷加通道之內才入市造淡,同樣地,若股價跌穿保歷加通道底部,也是等待股價回升至保歷加通道之內才入市造好。 寫這類策略的方法是運用ta.crossover 及ta.crossunder, 若寫成ta.crossover(close,lower),就是代表了股價由保歷加通道底部以下,升穿保歷加通道底部之時便會入市買入。 可以想想,要出現這種情況必然是股價之前已經跌穿了保歷加通道底部才會發生,那便既符合跌穿保歷加通道底部的要求,同時又符合了股價再回升至保歷加通道內的要求。 而升穿保歷加通道頂部後再待股價回落至通道之內的寫法應大家現在也懂得怎樣寫,那便是ta.crossunder(close,upper)。 以下是整個策略的完整寫法: //@version=5 strategy("升穿bollinger's band及跌穿bollinger's band策略", overlay=true, margin_long=100, margin_short=100) sma20=ta.sma(close,20) mult=ta.stdev(close,20) upper=sma20+2*mult lower=sma20-2*mult noposition=strategy.position_size==0 var bool traded =false buyCond=ta.crossover(close,lower) and close<sma20 shortCond=ta.crossunder(close,upper) and close>sma20 buycloseCond=ta.crossover(close,sma20) shortcloseCond=ta.crossunder(close,sma20) if buyCond and noposition and not traded strategy.entry("BUY",strategy.long) traded:=true if buycloseCond and not noposition strategy.close("BUY") if shortCond and noposition and not traded strategy.entry("SHORT",strategy.short) traded:=true if shortcloseCond and not noposition strategy.close("SHORT") if ta.change(time("D"))!=0 traded:=false 從backtest report可以看到勝率會較第一個的策略為高,一年裏交易了258次,獲利的有167次,勝率提高至64.73%,但最重要的是原本是虧損的策略已變成輕微獲利。 不過,獲利確實不多,那又有沒有方法可以改得更好? 最常見的做法是觀察圖表上的入市訊號,特別是留意出現裂口高開或裂口低開的情況,因為不少人都會認為出現裂口高開或裂口低開會引發上日持倉過夜的炒家的平倉盤,但這並不代表當日即市的走勢,只會在開市初段產生短暫影響。 而我們在圖表上觀察這個策略的入市訊號時,又確實發現有些日子的造淡的訊號會因為當日出現裂口高開,因而升穿了保歷加通道頂部,其後股價重返保歷加通道之內便入市造淡,不過最後卻出現虧損。 那若我們剔除因裂口高開而出現的入市造淡訊號又會怎樣? 但這種修改方法又很可能把原本能獲利的訊號也剔除的,結果是交易表現可能更差。 筆者就建議可以試試與平均線配合作修改,例如運用「Hull Moving Average,HMA」,這是一種了特別重視最近價格變動的加權移動平均線,有點像「Weighted Moving Average,WMA」,但HMA的滯後情況會較WMA少。 我們試試加上一些新的條件,買入時必需HMA比上一支陰陽燭的HMA為高,造淡時則必需HMA比上一支陰陽燭的HMA為低。 以下便是修改後的版本,在主圖上的紅線便是HMA。 //@version=5 strategy("升穿bollinger's band 改良版", overlay=true, margin_long=100, margin_short=100) sma20=ta.sma(close,20) mult=ta.stdev(close,20) upper=sma20+2*mult lower=sma20-2*mult noposition=strategy.position_size==0 var bool traded =false hmaValue=ta.hma(close,10) buyCond=ta.crossover(close,lower) and close<sma20 shortCond=ta.crossunder(close,upper) and close>sma20 buycloseCond=ta.crossover(close,sma20) shortcloseCond=ta.crossunder(close,sma20) buyCond2=hmaValue>hmaValue[1] shortCond2=hmaValue<hmaValue[1] if buyCond and noposition and not traded and buyCond2 strategy.entry("BUY",strategy.long) traded:=true if buycloseCond and not noposition strategy.close("BUY") if shortCond and noposition and not traded and shortCond2 strategy.entry("SHORT",strategy.short) traded:=true if shortcloseCond and not noposition strategy.close("SHORT") if ta.change(time("D"))!=0 traded:=false plot(hmaValue,title="HMA",color=color.red,linewidth=1) 結果可以看到訊號大幅減少,但勝率再提升至75%,但看最大獲利的最大虧損的比例達到3:1,這類策略即使遇上最壞的情況也是虧損有限。但問題就是交易次數真的真的太小的,一年只有8次入市機會,雖然獲利的次數有6次,但交易次數太小也會令最終的回報有限。 但大家可以想想,若你把「10個」本來只有六成中的交易策略,修改至七成中以上,而且Maximum Drawdown不大,盈虧比更大幅提升至3比1,那麼你獲利的機會根本便很大。 然後我們這10個策略同時執行,那你的交易次數就不會少了,而回報也會因而增加。若為了達到有足夠多交易次數的目的而勉強去運用一些勝率較低,盈虧比又較低的交易策略,那最終的回報反而不會太好。 網頁: www.quants.hk Youtube: https://www.youtube.com/@markchunwai Facebook專頁: https://www.facebook.com/quantshk/ Patreon: https://www.patreon.com/quantshk

【如何用Trading View寫每天只交易一次的策略】

創富坊
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威)・2024-06-17

最記得以前有學員曾說過,他過去試過很多的交易策略,最後在實戰時的成績都不太好,然後「嬲嬲地」就每天只看到MACD的第一個訊號便入市,開市後見MACD的快線升穿慢線便買入,相反,若MACD的快線跌穿慢線便造淡,然後見MACD的快線繼續上升便平好倉,造淡時則見MACD的快線繼續下跌就平淡倉,就是這樣簡單! 但效果反而比很多複雜的策略更好。 這個只是他的意見,最後成績如何他沒有告訴我,但筆者自己研究過很多的Daytrade策略也都是每天只交易一次的,因為交易次數太多,交易成本就會增加,而且長時間交易會覺得更亂,特別是遇上連續虧損的時候,而每天只交易一次就是讓自己有足夠時間冷靜下來。 不過,若要用pine script寫這類每天只交易一次的策略,又應怎樣寫? 以下是一個很簡單運用Zero Lag MACD的交易策略,就是快線升穿慢線便買入,當買入後看到連續三支陰陽燭的時間內MACD的快線都在上升,那就平倉離場。 // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © markchunwaipaul //@version=5 strategy("zero lag MACD交易例子", margin_long=100, margin_short=100, initial_capital =1000,default_qty_type = strategy.percent_of_equity,default_qty_value = 100) SN=input(12) LP=input(26) M=input(9) ema1=ta.ema(close,SN) ema2=ta.ema(ema1,SN) ema3=ta.ema(close,LP) ema4=ta.ema(ema3,LP) ZerolagMACDLine=(2*ema1-ema2)-(2*ema3-ema4) ema5=ta.ema(ZerolagMACDLine,M) ema6=ta.ema(ema5,M) ZerolagSignalLine=2*ema5-ema6 Histogram=ZerolagMACDLine-ZerolagSignalLine var bool traded =false closeCond=ta.rising(ZerolagMACDLine,3) noposition=strategy.position_size==0 buyCond=ta.crossover(ZerolagMACDLine,ZerolagSignalLine) if buyCond and noposition strategy.entry("BUY",strategy.long) if closeCond and not noposition strategy.close("BUY") plot(ZerolagMACDLine,title="MACDLine",color=color.yellow ,linewidth=2) plot(ZerolagSignalLine,title="SignalLine",color=color.green,linewidth=2) plot(Histogram, color=color.black, style=plot.style_histogram,linewidth=2) 以上策略的Backtest report: 可以看到這樣寫每天的交易次數肯定不只一次,交易了1023次,獲利交易只有514次,勝率約50.24%,一年的虧損約37.45%。 另以下是同一個策略但每日只交易一次的寫法: // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © markchunwaipaul //@version=5 strategy("用zero lag MACD每日只交易一次例子", margin_long=100, margin_short=100, initial_capital =1000,default_qty_type = strategy.percent_of_equity,default_qty_value = 100) SN=input(12) LP=input(26) M=input(9) ema1=ta.ema(close,SN) ema2=ta.ema(ema1,SN) ema3=ta.ema(close,LP) ema4=ta.ema(ema3,LP) ZerolagMACDLine=(2*ema1-ema2)-(2*ema3-ema4) ema5=ta.ema(ZerolagMACDLine,M) ema6=ta.ema(ema5,M) ZerolagSignalLine=2*ema5-ema6 Histogram=ZerolagMACDLine-ZerolagSignalLine var bool traded =false closeCond=ta.rising(ZerolagMACDLine,3) noposition=strategy.position_size==0 buyCond=ta.crossover(ZerolagMACDLine,ZerolagSignalLine) if buyCond and not traded and noposition strategy.entry("BUY",strategy.long) traded:=true if closeCond and not noposition strategy.close("BUY") if ta.change(time("D"))!=0 traded:=false plot(ZerolagMACDLine,title="MACDLine",color=color.yellow ,linewidth=2) plot(ZerolagSignalLine,title="SignalLine",color=color.green,linewidth=2) plot(Histogram, color=color.black, style=plot.style_histogram,linewidth=2) 留意克體的部份就是加上後令策略變成「每天只交易一次」。 先設定traded為false,然後當買入後便設定為true,由於入市條件加上了not traded,代表要traded 必需為false時才會入市,這樣交易一次後就不會再交易,最後加上ta.change(time("D"))!=0,代表要轉為第二個交易日,traded才會再轉變為false,然後第二日當ZerolagMACD的快線升穿慢線時就會符合入市條件。 策略的backtest report: 同一樣的交易策略,只是將其改變為「每天只交易一次」,可以看到結果也是虧損,不過,虧損幅度卻由37.45%大幅下降至10.75%。另外要留意,筆者寫這兩個策略是沒有計算「佣金」及「滑價」的,而第一個策略在一年裏交易了1023次,但加上「每天只交易一次」這個條件後,一年裏只交易了258次,交易成本會相差很遠,不過勝率就未見有大幅改善,獲利的次數只有132次,勝率只輕微由50.24%提高至51.16%。 交易策略當然不可能這樣簡單,但只要將以上兩個策略作比較便可看到,每天只交易一次的Daytrade策略確實能提高成效。 網頁: www.quants.hk Youtube: https://www.youtube.com/@markchunwai Facebook專頁: https://www.facebook.com/quantshk/ Patreon: https://www.patreon.com/quantshk