股市

標籤:股市

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

潮流特區
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威) ・2024-06-17

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

【如何用Trading View寫運用多重timeframe的策略】

潮流特區
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威) ・2024-06-14

Pinescript的功能其實十分之多,可以寫到不同的指標之餘,甚至可以將一些統計學的概念應用在交易策略之上。 例如我們在facebook介紹的Predicted_price MACD是將Linear Regression 的計算融入MACD中,相信大家現在應不難明白。 httpswww.facebook.comquantshkpostspfbid036K93ZaK4LnbZPxrekZUMKSpWcFcbjBLhE122G6h8H3qcUTzoVJ7yX2U1nffCPV1Tl 影片中有兩個例子,分別是看SQQQ及Apple的5分鐘圖,你會發現指標的入市訊號比傳統的MACD更準確,甚至你會看到MACD根本就是顯示市況向好,但Predicted_price MACD卻顯示造淡訊號。事實上,Linear Regression確實很有用,只要與價格有線性關係的數據都可以作分析,會對股價的變化有預測作用。除了Predicted_price MACD,其他我們研發的與Linear Regression相關的交易策略都會陸續介紹給大家。 這篇文章的的題目是如何用Trading View寫運用多種timeframe的策略,這也是最多人會問的問題之一,因為很多人都會喜歡多種時間間隔的策略,例如同時運用5分鐘圖及1分鐘圖表,又或同時用小時圖與5分圖表等。 要寫這樣策略就要用上request.security這個function,用法例如子如下 macdLine,signalLine,_=ta.macdclose,12,26,9 signal5min=request.securitysyminfo.tickerid,quot;5quot;,signalLine macdhourly=request.securitysyminfo.tickerid,quot;60quot;,macdLine request.security的 內要寫上的有三個部份,包括「要取那一個symbol的資料」、「要什麼時間間隔」、「要取那一個數據」。 「要取那一個symbol的資料」的部份若填上syminfo.tickerid就是要取目前你在Trading View畫面上顯示的數據,例如你圖表上是在看AppleUSAAPL,若填上syminfo.tickerid就會最AppleUSAAPL的數據。 但大家可能會覺得奇怪,為什麼要多填一次,本身不就是想要Apple不同時間間隔的數據嗎 因為request.security除了可以拿取不同時間間隔圖表的數據外,也可以拿取不同symbol的數據,例如你想看蔚來USNIO的走勢來炒TeslaUSTSLA,你在這個部份便不能再寫上syminfo.tickerid,你要在主圖上開啟Tesla的圖表,然後在request.security的 填上蔚來的symbol,那就可以寫到看蔚來的數據炒Tesla的策略。 而「要什麼時間間隔」就很簡單是要取什麼時間間隔的數據,若只寫數字就是代表多少分鐘,例如quot;5quot;就代表5分鐘,quot;60quot;就代表60分鐘,quot;Dquot;則代表日線圖的數據,quot;Wquot;則代表周線圖的數據。 例如你本身的策略是運用1分鐘圖表的,就在主圖表上開啟1分鐘圖,然後加上這句 dailyhigh=request.securitysyminfo.tickerid,quot;Dquot;,high1 就可以拿到上一個交易日裏日線圖的最高價,dailyhigh是自已給的名稱,方便大家在計算時再使用。例如你再寫dailyhighgt; dailyhigh1就代表你的策略中要求上一個交易日的最高價比再上一日的最高價更高。 留意,本身daiyhigh這個數據要自行設定是要取「上一個交易日」的最高價,若在這個名稱再加上1,便是由上一個交易日開始再倒數一個交易日。 最後是request.security的 內「要取那一個數據」的部份,這部份不一定只能使用最高價、最低價、開市價、收市價等的數據的,也可以是不同指標的數據,甚至是你自行經過計算的答案。 假設你在主圖表上開啟一個1分鐘圖表,你的策略也包括了MACD的運用,先用macdLine,signalLine,_=ta.macdclose,12,26,9 定義了MACD的快線及慢線為macdLine及signalLine。 signal5min=request.securitysyminfo.tickerid,quot;5quot;,signalLine macdhourly=request.securitysyminfo.tickerid,quot;60quot;,macdLine 然後我們把5分鐘MACD慢線的數據及小時圖MACD快線的數據命名為signal5min及macdhourly,然後用上request.security,在 內分別填上signalLine及macdLine便可以。 再加上plot便可以把5分鐘MACD慢線的數據畫出來,然後加一個1分的MACD便能將兩者作比較。 25 另外,筆者發現很多新手都比較抗拒使用plot這個功能,大家都會只集中去留意backtest的結果,而且有了backtest的結果後圖表上根本便有入市訊號的位置,那大家自然會想,若不是要寫一個自己的技術指標,那plot這個功能實沒多大用處。 但筆者的習慣是,每次寫自己的交易策略時,每寫一部份都會先用plot來看看寫出來的是否真的是自己想要的,因為用程式語言去寫交易策略,與大家用目測是完全不同的,很多時候用程式寫出來的未必就是你想要的。你的交易策略可以很複雜,到你寫好後再做backtest,才發現根本不是你想要的,那再重寫就反而會更麻煩。 我們網頁 www.quants.hk Youtube httpswww.youtube.com@markchunwai Facebook專頁 httpswww.facebook.comquantshk Patreon httpswww.patreon.comquantshk

【如何用Trading View 運用不同技術指標寫交易策略】

潮流特區
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威) ・2024-06-13

教授pine script 時最多新手問的就是一些主要的技術指標如何去寫,當你最初練習pine script時就先用一些常用的技術指標來試試寫策略,到熟習後,即使一些未見過的技術指標,只要你在google找到指標的公式,也能自行寫出來。 例如,MACD是內置的指標,第一步是記得trading view的內置指標是要加上「ta.」的,寫法如下 macdLine,signalLine,_=ta.macdclose,12,26,9 再要把MACD的快線在圖表上顯示,就用plot這個功能,寫法如下 plotmacdLine,title=quot;MACDLINEquot;,color=color.red,linewidth=1 不過,有些指標可能並非內置的,又或即使是內置,但你習慣了自行寫出來,假設大家不懂得什麼是bollingerrsquo;s band,然後在網上找到它的公式就是通道的頂部是20日平均線加上兩個標準差,而底部是20日平均線減去兩個準差,那我們就可以自己寫出來。 例如平均線是SMA,要寫出來就要加上「ta.」,先想一個名稱給你每個要計算的答案,什麼名稱都可以,但名稱不可以用數字開頭。例如你想叫平均線的名稱做SMA20,就用以下的寫法 sma20=ta.smaclose,20 然後又給標準差一個名稱,假設你叫它為ST,那寫法如下 st=ta.stdevclose,20 然後再分別給多通道的頂部及底部名稱,假設叫做upper及lower upper = sma20 2st lower = sma20 ndash; 2st 寫法就是這樣簡單,然後upper及lower就可以用作其他計算的部份,例如你的入市策略是最高價升穿bollingerrsquo;s band 達5%,那寫法如下 先給你的入市條件一個名稱,假設名為buyCondition,也給upper高5%的情況一個名稱,假設是upperhigh uppperhigh=upper1.05 buyCondition=ta.crossoverhigh,upperhigh 此外,其他我們常見的技術指標如RSI, ATR等也是內置的,寫法同樣是先給它們一個名稱,例如你想叫它們做rs及atrValue,寫法如下 rs=ta.rsiclose,14 atrValue=atr14 其他有些主要常用的技術指標也要自行計算的,如Stochastic,寫法如下 @version=5 indicatorquot;stochasticquot; stcLength=input14 periodK=input3 periodD=input3 fastSTC=ta.stochclose,high,low,stcLength slowK=ta.smafastSTC,periodK slowD=ta.smaslowK,periodD plotslowK,title=quot;slowKquot;,color=color.red,linewidth=1 plotslowD,title=quot;slowDquot;,color=color.blue,linewidth=1 我們再試試寫Rate of change這個指標,先在網上找到它的公式如下 然後大家可自行先用Trading View 先試試寫出來才看答案,若沒有寫錯,那寫指標這部份的學習便沒有問題了。 Rate of change寫法答案 length = input.int9 source = inputclose roc_smooth = input5 roc = ta.sma100 source sourcelengthsourcelength,roc_smooth 最後我們看看super Trend這個指標的寫法,有些時候我們希望指標的參數是可以寫好後直接在圖表上更改的,又或有幾個指標的參數也是一樣的,我們會重覆使用,那就先給參數一個名稱,例如叫做length,可以參考以下superTrend這個指標的寫法 @version=5 indicatorquot;SuperTrendquot;, overlay=true length = 10 multiplier = 3 atr = ta.atr1 basis = ta.highesthigh, length ta.lowestlow, length basis = basis 2 upperBand = basis multiplier atr lowerBand = basis multiplier atr trendUp = close gt; upperBand1 true close1 gt; upperBand1 true false trendDown = close lt; lowerBand1 true close1 lt; lowerBand1 true false plottrendUp upperBand lowerBand, color=color.blue, linewidth=2, title=quot;SuperTrendquot; 這裏用了「 」這種寫法,前是條件,後是若符合條件要怎樣,而後則是若不符合條件要怎樣,若大家看其他Tradind View用家寫的策略,這是十分常見的寫法。 trendDown = close lt; lowerBand1 true close1 lt; lowerBand1 true false 這個的意思就是trendDown是名稱,然後看看收市價是否小於上一支陰陽燭的supertrend的底部,若符合條件就是true,否則就再看看上一支陰陽燭的收市價是否低於上一支陰陽燭的supertrend的底部,若符合條件,也是true,但兩個條件也不符合就是false。 我們網頁 www.quants.hk Youtube httpswww.youtube.com@markchunwai Facebook專頁 httpswww.facebook.comquantshk Patreon httpswww.patreon.comquantshk

【新手學習用pine script 寫運用MACD的交易策略】

潮流特區
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威) ・2024-06-13

學了pine script的基本格式後,大家便可以試試寫一些簡單的策略做backtest。例如以下的例子 @version=5 strategyquot;MACD Strategyquot;, overlay=true fastLength = input12 slowlength = input26 MACDLength = input9 MACD = ta.emaclose, fastLength ta.emaclose, slowlength aMACD = ta.emaMACD, MACDLength delta = MACD aMACD if ta.crossoverdelta, 0 strategy.entryquot;MacdLEquot;, strategy.long, comment=quot;MacdLEquot; if ta.crossunderdelta, 0 strategy.entryquot;MacdSEquot;, strategy.short, comment=quot;MacdSEquot; plotstrategy.equity, title=quot;equityquot;, color=color.red, linewidth=2, style=plot.style_areabr 15 大部份的策略都涉及使用技術指標,那就要每個指標的參數都設定一個變數,例如macd的參數是12, 26,9,那三個數字都要設定為變數,這樣做是為了日後使用可以隨時更改。 在Trading View中寫很多的指標都是以ta. 為開始的,例如你要寫普通的平均線就是ta.sma ,若要寫EMA 指數平滑移動平均線就要寫ta.ema 而 內需要有兩個數值,第一個是用什麼來計算,例如你想用收市價、最高價、最低價,還是成交量等等。而另一個數值就是長度。假設你要計算一條用成交量來計算的10日平均線,那寫法就是ta.sma成交量, 10。甚至你要計10日內的RSI平均值也可以,寫法就是ta.smarsi數值, 10。 以上的策略可以看到,原創者所謂的MACD、aMACD及Delta是他自行去設定計算方式的。 首先他計MACD的方法是MACD = ta.emaclose, fastLength ta.emaclose, slowlength fastLength在最初已設定為12,那ta.emaclose,fastLength就是計算以收市價計,12日的EMA。而slowlength最初也設定為26,那就是計算以收市價計,16日的EMA,然後前者減去後者就是原創者所指的MACD。 而aMACD = ta.emaMACD, MACDLength代表了,首先我們計算出MACD的答案,再用這個答案來計算平均數,而MACDLength最初已設定為9,那就是代表了aMACD是以MACD的值來計算9日的EMA。 這樣就有了MACD及aMACD的數值,將MACD ndash; aMACD就會得到delta的答案。 即使是完全新手應該也覺得十分容易吧 再來我們要學一些基本的,在Trading View中我們要寫「升穿」或「跌穿」就是ta.crossover 以及ta.crossunder 。 而 之內在ta.crossover代表前面的值升穿後面的值,若在ta.crossunder則代表前面的值跌穿後面的值。例如ta.crossover A, B 就代表A升穿B,若是ta.crossunderA,B就代表A跌穿B。 然後我們再看以下幾句 if ta.crossoverdelta, 0 strategy.entryquot;MacdLEquot;, strategy.long, comment=quot;MacdLEquot; if ta.crossunderdelta, 0 strategy.entryquot;MacdSEquot;, strategy.short, comment=quot;MacdSEquot; plotstrategy.equity, title=quot;equityquot;, color=color.red, linewidth=2, style=plot.style_areabr 在Trading View中寫交易策略,請記得是必需要有strategy.entry ,這代表要告訴Trading View要入市的時刻。而 內要寫的就一般有三個部份,第一個部份是名稱,要寫成quot;MacdLEquot;,這個名稱很重要,若你的策略有分注平倉,要讓Trading View知道你要將那一個已入市的倉位平倉,寫平倉時要列明這個名稱的。 寫了名稱後就是要告訴Trading View你是造好還是造淡,造好的寫法是strategy.long,造淡的寫法是strategy.short,其實有了名稱及已表明是造好還是造淡後已足夠,但有些用家想在圖表上標示一些註解,那就用comment=,以上的策略就是想在圖表上看到MacdLE及MacdSE,他才會加上comment。 而最基本寫策略就是 if hellip;hellip;hellip;hellip;hellip;hellip;. 然後strategy.entry hellip;hellip;hellip; 以上的策略就是Delta由零以下升至零以上就買入,Delta由零以上跌至零以下就造淡。 這樣整個簡單的策略便寫完,但若你想在圖表上畫上一些線標示買入及賣出的訊號。那便加上plot hellip;hellip;hellip;hellip;hellip;hellip;hellip;hellip; Plot的最基本用法是 內加上 要畫那一個數值, 名稱, 顏色, 線的寬度, 線的形狀。 以上的策略就是要畫strategy.equity代表資金的變化,然後給予名稱時要用title= ldquo; ldquo; ,之後是顏色,寫法是color=color.什麼顏色,例如color=color.blue,之後是線的寬度及形狀。plot.style_area代表將線條繪製成區域圖形,這個功能在version 4或以上版本才有的。 另大家要留意在pine script 中加上 大多是註解,加了後即使你寫一些中文也不會有影響的,不會令策略有變化。原創者在寫plot 時加了 代表這句只是給大家參考,若把 冊除才會有plot的功能出現。 即使大家是Trading View的全新手也會覺得十分簡單吧 筆者會定期將一些在社群中看到的例子解釋給大家看,透過這個過程去學習,即使是全新手應也不會覺得太困難。 我們網頁 www.quants.hk Youtube httpswww.youtube.com@markchunwai Facebook專頁 httpswww.facebook.comquantshk Patreon httpswww.patreon.comquantshk

新書《ChatGPT如配合Multicharts學習程式交易》近日在各大書局已有售

潮流特區
程式交易 www.quants.hk (導師: 財經書藉作家: 麥振威) ・2023-12-20

新書《ChatGPT如配合Multicharts學習程式交易》近日在各大書局已有售。 若由一個完全新手要完全熟習Multicharts的語法Power Language,再學習輸入數據、做回測及連接Auto Trade等步驟可能真的需要一定時間。 不過,自ChatGPT出現後,讀者們已可以直接用中文或英文將交易策略寫出來,再運用ChatGPT直接編寫出答案,無論是簡單的技術指標運用,又或陰陽燭策略,甚至較複習的套利策略,ChatGPT都能運用Multicharts的語法直接編寫答案出來。 雖然ChatGPT的答案未必全部正確,但學員只要明白Multicharts語法的使用原理便能懂得直接修改,這種學習方式比過往需要背誦大量Multicharts語法例子的方法更為有效。 而且若大家要寫大量的交易策略做回測也更為方便,因為所有策略不用自己由頭寫起,ChatGPT寫出大部份內容後再修改便可以,最終能節省不少時間。 本書的例子中除了常見的技術指標使用,也有自行組合的陰陽燭形態,以及一些比較高階的短炒及Daytrade 策略,包括分析恒指重磅股走勢短炒期指的方法、長短倉短炒策略 同時買入騰訊沽空阿里巴巴等,這些策略只要ChatGPT及Multicharts同時配合使用,要寫出來及再修改也並不困難。 另外一些較少見的技術指標如適合Daytrade或短炒的Detrended Price Oscillator、Chande Kroll Stop、Super Trend、klinger Oscillator等,又或用以判斷單邊市及上落市的Choppiness Index,在交易時也有一定的參考價值,本書除了介紹這些指標的特別用法外,也會講解如何透過ChatGPT協助編寫這些指標,並同時在Multicharts上直接運用。