SetStopLoss(DollarValue)
SetProfitTarget(DollarValue)
SetPercentTrailing(FloorAmnt, Percent)
SetDollarTrailing(DollarValue)
SetExitOnClose
就來一個一個介紹吧…首先是
SetStopLoss(DollarValue):
這個保留字用來設定停損使用。括號內放的數值是金額…以台指來講就是用點數乘上 200。以 SetStopLoss 設定的停損為觸點停損…對同一根 K 線內的進場也是有效用的。例如 buy next bar at market 進場後,行情往下走碰觸到停損點就會直接出場了。
SetProfitTarget(DollarValue):
這個保留字用來設定停利。和上面的停損相同…也是觸點就出場了。
SetPercentTrailing(FloorAmnt, Percent):
這個保留字是用來設定停利使用…他是以進場後的最大獲利折返多少百分比後出場。括號內的第一個數值是獲利的最小值,舉個例子:SetPercentTrailing(20000, 10) 來說…獲利超過 20000 後,折返 10% 就會出場(也就是折返 2000),但是當獲利沒有超過 20000 的時候,就不會執行出場囉。
SetDollarTrailing(DollarValue):
同樣是用來設定停利(或停損)使用,可以想成移動停損點。舉個例子:SetDollarTrailing(8000)來說,會以進場之後的最大獲利減掉 8000 作為出場點。假設買進在 8000 點,那目前的出場就是 7960 (8000 - 40 點),如果進場後最高漲到 8100,那出場就會在 8060 (8100 - 40 點)。
SetExitOnClose:
最後就是這個出場條件。懶人回測專用…通常寫到當沖程式都會在程式最後面加上:
if marketposition <> 0 and time = 1330 then begin
exitlong next bar at market;
exitshort next bar at market;
end;
這一串程式碼雖然不長…不過如果只是突然有個當沖的想法想回測一下…又懶的打這麼多字…那就可以先在程式碼內加上 SetExitOnClose,代表出場在當天結束的時候。
不過只能回測使用…因為系統判斷每一天的交易是否結束…是等待隔天的第一個 tick 出來才知道原來昨天已經收盤了。
…又懶的打這麼多字…
回覆刪除建議: 自建1個Signal, 在 T
radeStation StrategyBuilder選用即可
如:
if marketposition <> 0 and time = 1330 then begin
exitlong("DLX") next bar at market;
exitshort("DSX") next bar at market;
end;
SetStopLoss(DollarValue)
回覆刪除SetProfitTarget(DollarValue)
SetPercentTrailing(FloorAmnt, Percent)
SetDollarTrailing(DollarValue)
SetExitOnClose
關於這幾個好用的語法
HTS要怎樣翻呢?
形雲: 也是可以..等於是另外寫一個收盤平倉的程式一直套用。
回覆刪除Maogic: hts 並沒有這些保留字喔..需要自己將程式轉過去使用了。
回覆刪除您好~HTS裡面有看到一個函數的叫做SetTrailingStop,跟TS的SetPercentTrailing很類似可是好像不盡然完全一樣的功能....? 而且無法檢查通過。
回覆刪除Schmidt: 剛看了一下這個函式..他比較像 SetDollarTrailing(DollarValue),這個函式的內容為獲利超過多少點後…折反多少點就去作什麼事情…簡單的用法如下:
回覆刪除if settrailingstop(100, 50, "A") then
exitlong next bar at market
exitshort next bar at market
end if
上面的用法為獲利超過 100 點後折返 50 點就出場。當然你也可以作其它的事…另外他的獲利算法是用 close 價…並不是用最高最低價。
還有…第三個參數其實一點用處也沒用..所以我就給他個 "A"。
DK大大 您好
回覆刪除那HTS中
maxpositionprofit函數的功能是否和settrailingstop又類似.其寫法要如何寫呢?感謝大大
OK新手:看起來不是。這個保留字只是目前的獲利狀況而已...
回覆刪除你可以用 print(maxpositionprofig(0)) 去看看。
exitlong this bar at entryprice(0)+MaxPositionProfit(0)/200 -20 stop
回覆刪除好像也是最高點後再下修20
是否可以請大大能翻譯一下哩^^"
感謝大大解惑
OK新手: 翻譯啊...應該就都是字面上的意思了..
回覆刪除多單出場 這根K線 在 進場價 + 最大獲利 - 20 點
D.K感謝
回覆刪除但是在下還是不明白所謂的
maxpositionprofit"最大獲利"
是如何依據?
不好意思老是請大大解惑^^
感謝
OK新手: 假如是多單..那就是以進場後的最高價去減掉進場價就是最大獲利了..
回覆刪除SetPercentTrailing(40000,15)
回覆刪除抱歉...以上如果要翻成HTS要如何翻呢?
Maogic: hts 沒有內鍵的函式可以用。所以需要自行用程式去寫出這個判斷了。
回覆刪除D.K. 您好,
回覆刪除我嘗試去理解 SetDollarTrailing的機制,
我有2根K線如下
date , time, o , h , l , c , vol, int
01022001,1315,4880,4898,4880,4880,208,0
01022001,1320,4880,4919,4880,4919,238,0
我在 time 1315 使用了以下指令
Buy 1 contracts next bar at 4907 or higher;
SetDollarTrailing(1)
的確有一筆多單在time=1320, 進場價格為 4907, 然而卻又在time=1320, 4906的價格 出場。
照理說:根據模擬交易策略,在 time 1320, 模擬的順序應為 Open->Low->High->Close, 所以,在多單於 4907 進場後,4906這張單子應該不會出現才對!我想了老半天,不能理解為何 SetDollarTrailing 會出現?您能幫忙一下嗎?
我的交易軟體是 TS 9, 交易費用設為0.
謝謝您的幫忙
我特地找了根實體紅 k 來試試…結果是正確的…
刪除https://lh5.googleusercontent.com/-WpXJoilGTAA/T0bteN_TTVI/AAAAAAAAE7A/F5Mq3onrSr4/s490/2012-02-24_095038.png
我用的程式碼如下:
if date = 1120222 and time = 1015 then buy next bar at 7944 stop;
setdollartrailing(1);
DK 謝謝你的幫忙,不知道有哪裡需要變更設定?
刪除或者是版本問題?
請問你的版本是?
我看你提供的圖,似乎是買在 open price,
刪除我也嘗試買在 open price,
Buy 1 contracts next bar at market;
setdollartrailing(1);
結果也是正確的,但我一開始的問題還是存在。
我是用 Multicharts...
刪除https://lh5.googleusercontent.com/-pm9gCmfi0e4/T0cD3Jr1_II/AAAAAAAAE7U/pBWiNBGW6Rs/h301/2012-02-24_112539.png
即使不是買在開盤價也是正確的~
至於怎麼設定…這我就不確定了…因為我也沒改過什麼設定。
謝謝您的幫忙,
刪除那應該確認是 TS 9 的問題。
Bug 好多。
剛剛測了一下,只要不是買在 open 就有問題。