f123438428 發表於 11-5-6 10:22

請教TS:當根k停損&停損後當根k不再進場,附程式碼

本帖最後由 f123438428 於 11-5-6 10:24 AM 編輯

小弟資質駑鈍,我的突破策略有以下缺陷1.突破進場後當根k無法停損,非要到下根k開盤才會停損...(這樣怎麼風控...)
2.當指數在突破點盤整時,會造成停損的當根k又進場...

已用Marketposition限制每日只做一次
已用Netprofit限制虧損後不進場

小弟程式碼如下

if time <= TimeIn then begin
LastProfit=Netprofit;
Count=0;
end;

condition0 = time>=XXXX and time<=YYYY;
condition1 = NetProfit>=LastProfit and Count=0 and 作多條件;
condition2 = NetProfit>=LastProfit and Count=0 and 作空條件;

if condition0 and condition1 then buy("L") 1 contracts next bar at AAAA stop;
if condition0 and condition2 then sell("S") 1 contracts next bar at BBBB stop;

if marketposition<>0 then Count=1;

if marketposition<>0 then begin
exitlong("stop_L") 1 contracts at **** stop;
exitshort("stop_S") 1 contracts at **** stop;
end;

if time >= YYYY then begin
exitlong("exit_L") 1 contracts this bar at close;
exitshort("exit_S") 1 contracts this bar at close;
end;


敬請不吝指教,感恩感恩~

comewish 發表於 11-5-6 11:01

改這樣試看看吧。
if condition0 and condition1 then
begin
buy("L") 1 contracts next bar at AAAA stop;
exitlong("stop_L") 1 contracts at **** stop;
end ;

無無明 發表於 11-5-6 12:47

2.當指數在突破點盤整時,會造成停損的當根k又進場...

;

設定 不可以 在同一根棒 重複 進出

f123438428 發表於 11-5-6 18:05

回復 2# comewish


感謝大大不吝相助~~不過小弟修改後...事情大條了...

1.還是無法當根k停損
2.多單若非第二根k停損,就會放到收盤出場
3.空單進場即出場(同根k同點位...)

改後如下,前後程式碼略

if condition0 and condition1 then begin
buy("L") 1 contracts next bar at **** stop;
exitlong("stop_L") 1 contracts at **** stop;
end;

if condition0 and condition2 then begin
sell("S") 1 contracts next bar at **** stop;
exitshort("stop_S") 1 contracts at **** stop;
end;

小弟使用TS2000i v5.00.0707

f123438428 發表於 11-5-6 18:15

回復 3# 無無明


感謝大大的指教不過小弟將該行放進程式碼後,都編譯不過
是不是因為小弟使用TS2000i的緣故呢?(Ver. 5.00.0707...)

咕狗了一下發現TS8有介面可直接設定,亦可hardcode在策略中
但TS2000i似乎無此功能...

不知在TS2000i是否有相似作法?

感謝大大~



揭諦揭諦 波羅揭諦 波羅僧揭諦 菩提薩婆訶~

無無明 發表於 11-5-6 18:18

2000 功能太少
該換到 MC 了
現在代價不高了

comewish 發表於 11-5-6 21:14

回復comewish


感謝大大不吝相助~~不過小弟修改後...事情大條了...

1.還是無法當根k停損
2.多單若非 ...
f123438428 發表於 11-5-6 06:05 PM http://www.coco-in.net/images/common/back.gif


嗯,我弄錯了,試看看這樣寫吧
exitlong("stop_L") 1 contracts at **** stop;
if condition0 and condition1 then begin
   buy("L") 1 contracts next bar at **** stop;
end;

samuelho 發表於 11-5-6 21:22

本帖最後由 samuelho 於 11-5-6 09:38 PM 編輯

有C大在,小的就不獻醜了,
只是建議
if marketposition<>0 then Count=1;
if marketposition<>0 then begin
exitlong("stop_L") 1 contracts at **** stop;
exitshort("stop_S") 1 contracts at **** stop;
end;
.......................................................
這兩個最好合併,不然聰明的ts可能不知道if marketposition<>0的時候有兩個選擇,到底要做什麼。
if marketposition<>0 then begin
count=1;
exitlong("stop_L") 1 contracts at entryprice-xx stop;
exitshort("stop_S") 1 contracts at entryprice+xx stop;
end;
其實還是要看過大大全部的code才知道哪些指令會因為重疊,導致ts聰明的不知道要幹麻而無法執行。

comewish 發表於 11-5-6 23:21

我印象中記得,進場當根K棒的MarketPosition應該還是0,要到下一根才會變化,不過那是很久以前的印象了,最好自已要寫個Print確認一下。

不過一般來說,在同一根K線上面進場與出場,這種回測出來的結果,可信度不高,可用度也很低,最好不要這樣寫。

samuelho 發表於 11-5-6 23:42

不然直接用內建的setdollartrailing這類的指令來試試看囉......確實如c大所說,盡量不要當跟進出,畢竟回測是靜態的,實際是動態的,就算回測績效好,可行性確實也有待質疑。

boxcox 發表於 11-5-7 00:23

C大在,小弟真的不敢獻醜, 只是建議

好久沒用TS2K

K棒是無法確定高低點形成的順序及被觸碰多少次
TS2K 好像有假設一固定順序

TS8 TS9 MC 才有限制同一K棒進出及使用this bar
達到TICK 的準度

TS2K 可以用 setstoploss(停損金額) setprofittarget(停利金額)
只要金額到就執行 不管bar是否完成, 但這是對整個策略有效的,
如果停損還有分追停....等不同等級, 那得再配合其它條件修改

另外不只是當根bar 停損停利問題,
即使用了TS8 MC還有是否真能吃到單子問題,
TICK 的量太小,價格太近, 就可能要設定排不上
一下量太大, 不是吃不到就是滑價很遠
所以以上如有進場可能要排除掉或是另外加一個用波動率假設滑價的變數
來模擬真實下單 (小弟自己有亂設一下啦)
這也是報表還可以, 但實單作不到的原因之一

最好還是只用 Buy next bar at market
TS2k 怕時間週期長的可能要轉換一下囉

f123438428 發表於 11-5-7 18:23

本帖最後由 f123438428 於 11-5-7 06:53 PM 編輯

回復 8# samuelho


   大大您好,程式除了開頭變數宣告(Input & Vars),其餘已都貼出

沒想到這個早就被問爛的老問題,各位大大還是傾囊相授,小弟感激不盡

目前持續測試各位提供的方法中
似乎都沒啥解

也試著Buy/Sell at **** stop
改為Next bar market or This bar close
但停損就是非得隔一根k才生效...
(Buy/Sell at next bar market停損在下根k)
(Buy/Sell at this bar close停損在下下根k)

(Strategy testing resolution: Tick)

同根k出場不再進場一事仍未解決
看來得好好研究一番TS8 or MC了...

ps. Setstoploss可達當根停損,但當根停損時,marketposition似乎不會變動,無法限制當天交易次數...

Acer2266 發表於 11-5-7 20:26

回復 12# f123438428


    TS2000i 沒用過,無法回答,記得MC中間是可以在策略中設定的。題外話,以目前台指的波動,日K波段程式一根就反轉,好像太敏感了,如果是分線的當沖,也是一樣的問題,停損設太近了。

f123438428 發表於 11-5-7 20:53

小弟似乎已找解決方案

1當根k停損,使用SetStopLoss功能:
SetStopLoss(停損金額);

2.計算當日進場次數,使用EntriesToday功能:
EntriesToday(Date)=今日已進場次數


原本程式碼修改如下,看起來是有達到我的要求

setstoploss(StopLoss*200);

condition0 = time>=XXXX and time<=YYYY;
condition1 = EntriesToday(Date)<=0 and 作多條件;
condition2 = EntriesToday(Date)<=0 and 作空條件;

if condition0 and condition1 then buy("L") 1 contracts next bar at AAAA stop;
if condition0 and condition2 then sell("S") 1 contracts next bar at BBBB stop;

if marketposition<>0 then begin
exitlong("stop_L") 1 contracts at **** stop;
exitshort("stop_S") 1 contracts at **** stop;
end;

if time >= YYYY then begin
exitlong("exit_L") 1 contracts this bar at close;
exitshort("exit_S") 1 contracts this bar at close;
end;


謝謝各位相助~~還請不吝指教~~

barry 發表於 11-6-15 15:58

感謝分享好物,thanks,
頁: [1] 2
查看完整版本: 請教TS:當根k停損&停損後當根k不再進場,附程式碼