不論在使用HTS或TS的時候,很多人都不知道如何停損停利
其實,只要知道進場價位就可以去計算出停損點數
entryprice(0)函數是一個很重要的關鍵
沒有單在手上的時候,entryprice(0)是0
手上有單的時候,entryrpice(0)是入手價位
如此一來,假設停利點數20點
多單停利可以寫成 exitlong next bar at entryprice(0)+20 limit
空單停利可以寫成 exitshort next bar at entryprice(0)-20 limit
但是常見的錯誤寫法如下(TS語法)
進場後,20點停利(錯誤寫法)
為什麼說上面的寫法是錯誤的呢?其實把上面的語法放在TS中
回測的時候會發現下圖
上圖,其實在進場後的下一根就應該要停利了,但是卻跳了一根K棒才顯示訊號
就對程式而言,程式很多要觸發的條件都是因為成立個某個事件(Event)在某
個Event觸發後才會成立,就程式交易的語法不難發現,很多涵數都是在K線結
束後才會做一次統計運算。就拿上圖來說,當進場後並沒有觸發到Event所以才
導致下一根不會出現訊號,進場後的下一根才產生 marketposition > 0 的條件
因此如果要修正的話
那表示在進場的同時就要同時給定出場訊號,我們將程式碼改下如下
進場後,20點停利
經過回測發現,果然隔一根就有停利訊號。
接下來測試停損
進場後,20點停損(錯誤寫法)
進場後,20點停損
如果進場的時候並非以this bar at close
一樣會有這樣的情形,我們一樣可以用下面方法修正
進場後,20點停利(錯誤寫法)
進場後,20點停利
其實,只要知道進場價位就可以去計算出停損點數
entryprice(0)函數是一個很重要的關鍵
沒有單在手上的時候,entryprice(0)是0
手上有單的時候,entryrpice(0)是入手價位
如此一來,假設停利點數20點
多單停利可以寫成 exitlong next bar at entryprice(0)+20 limit
空單停利可以寫成 exitshort next bar at entryprice(0)-20 limit
但是常見的錯誤寫法如下(TS語法)
進場後,20點停利(錯誤寫法)
if condition then buy this bar on close; if marketposition > 0 then exitlong next bar at entryprice(0)+20 limit;
為什麼說上面的寫法是錯誤的呢?其實把上面的語法放在TS中
回測的時候會發現下圖
上圖,其實在進場後的下一根就應該要停利了,但是卻跳了一根K棒才顯示訊號
就對程式而言,程式很多要觸發的條件都是因為成立個某個事件(Event)在某
個Event觸發後才會成立,就程式交易的語法不難發現,很多涵數都是在K線結
束後才會做一次統計運算。就拿上圖來說,當進場後並沒有觸發到Event所以才
導致下一根不會出現訊號,進場後的下一根才產生 marketposition > 0 的條件
因此如果要修正的話
那表示在進場的同時就要同時給定出場訊號,我們將程式碼改下如下
進場後,20點停利
if condition then begin buy this bar on close; exitlong next bar at close+20 limit end; if marketposition > 0 then exitlong next bar at entryprice(0)+20 limit;
經過回測發現,果然隔一根就有停利訊號。
接下來測試停損
進場後,20點停損(錯誤寫法)
if condition then buy this bar on close; if marketposition > 0 then exitlong next bar at entryprice(0)-20 stop;
進場後,20點停損
if condition then begin buy this bar on close; buy next bar at close-20 stop; end; if marketposition > 0 then exitlong next bar at entryprice(0)-20 stop;
如果進場的時候並非以this bar at close
一樣會有這樣的情形,我們一樣可以用下面方法修正
進場後,20點停利(錯誤寫法)
if condition then buy next bar at value1 stop; if marketposition > 0 then exitlong next bar at entryprice(0)+20 limit;
進場後,20點停利
if condition then begin buy next bar at value1 stop; exitlong next bar at value1+20 limit end; if marketposition > 0 then exitlong next bar at entryprice(0)+20 limit;
達人 對於你Blog這篇教學文章,我只有兩個字形容"用心"!!
回覆刪除真的沒話說,你的部落格還有大象及DK, 是我遇過對於在程式交易教學上花很多心思在範例的示範及分享!! 好心助人會有好報的. 祝您交易大順.
感謝鼓勵跟支持
回覆刪除希望大家能賺大錢
小達人的用心及好心是有目共睹的,另人感動!也希望小達人多多教導大伙們程式交易容易有的盲點,減少明明想法是對的,但做出來是錯的窘境。再次感謝!
回覆刪除整理得真好, Good! 推~
回覆刪除倒數第三個程式碼 buy this bar at value1 stop;
應該改成 next bar
被發現了筆誤的地方
回覆刪除已經修正
真不愧是 Dr. Mylays
達人大您好!
回覆刪除想請教一個問題:
TS 如果要讓在進場後 獲利50點就停利出場. 我知道可以用 entryprice來寫
不知道TS是否有類似
SetDollarTrailing
setstoploss
等指令 可以在觸價就出場?(在此先不討論是否準確或next bar的問題)
這...?
回覆刪除你問的都是TS?
是否打錯?
請問小達人大大,何以在停損時使用的出場指令都用buy 而不是 exitlong, 請賜教
回覆刪除if condition then begin
buy this bar on close;
buy next bar at close-20 stop;
↑
end;
if marketposition > 0 then
exitlong next bar at entryprice(0)-20 stop;
if condition then begin
buy next bar at value1 stop;
buy next bar at close-20 stop;
↑
end;
if marketposition > 0 then
exitlong next bar at entryprice(0)-20 stop;