我是用臺泥股票的歷史資料(用ASCII Mapping 的方式導入的)
寫出一個練習用的訊號 , 之後發現隔了幾個訊號之後 , 就不會有當沖的效果
(開始會變成留倉之後,到了下依訊號出現才會回補,然後當下又放空一張)
買賣策略如下 :
var1 = Volume;
var6 = Volume[1]; var7 = Volume[2]; var8 = Volume[3]; var9 = Volume[4]; var10 = Volume[5]; if ( var1>var6 and var1>var7 and var1>var8 and var1>var9 and var1>var10 ) then begin // Q1 : 如果我想改成 : 隔天開盤價大於等於今日收盤價才放空(先符合平盤上才能券賣的規定) , 要怎麼修正 sellshort("sell") 1 contracts next day at market; // Q2 : 原本想要寫出的動作是 : 如果隔天空到 , 最後無條件用收盤價回補 ( 但是查了一下資料 , 這樣寫很像是 [停利] , 沒考慮到 [停損] ) buytocover 1 contracts next day at close limit; // Q3 : 如果想要更進一步指定停損停利價位的回補語法又該如何寫呢 ( 例如:停損設定為平盤價的+5%,停利價設定為放空到的價位向下3.5% end;
你的邏輯面本來就沒有當沖語法 只是紅圈處因為在盤整,所以"剛好"看起像是當沖 因為一直碰到出場點罷了 Q1 : 如果我想改成 : 隔天開盤價大於等於今日收盤價才放空(先符合平盤上才能券賣的規定) , 要怎麼修正 A: 一般模式無解,要用IOG模式或小於日線的周期才可以 Q2 : 原本想要寫出的動作是 : 如果隔天空到 , 最後無條件用收盤價回補 A: 同上 Q3 : 如果想要更進一步指定停損停利價位的回補語法又該如何寫呢 ( 例如:停損設定為平盤價的+5%,停利價設定為放空到的價位向下3.5% buytocover next bar c*0.95 limit; buytocover next bar c*1.035 stop;
[IntrabarOrderGeneration = true];
var1 = Volume; var6 = Volume[1]; var7 = Volume[2]; var8 = Volume[3]; var9 = Volume[4]; var10 = Volume[5]; // 策略條件一 ; 今天的成交量必須大於前面五天的成交量 if ( var1>var6 and var1>var7 and var1>var8 and var1>var9 and var1>var10 ) then begin // 策略條件二 : 今收必須大於今開 if close > open then begin // 隔天用市價放空 ( 先不考慮開在平盤價以下的問題 ) sellshort("sell") next bar on market // 收盤時無條件用收盤價回補( 我的目的只是在回測 ) if time >1320 then begin buytocover 1 contracts next bar on market; end; end; end; 上面這樣的寫法會呈現圖檔的現象,但我知道這是有問題的( 但已經不會出現之前留倉的問題)
編輯文章 by DavidLu 2011-10-24 16:53:52
你的邏輯面本來就沒有當沖語法 只是紅圈處因為在盤整,所以"剛好"看起像是當沖 因為一直碰到出場點罷了 Q1 : 如果我想改成 : 隔天開盤價大於等於今日收盤價才放空(先符合平盤上才能券賣的規定) , 要怎麼修正 A: 一般模式無解,要用IOG模式或小於日線的周期才可以 Q2 : 原本想要寫出的動作是 : 如果隔天空到 , 最後無條件用收盤價回補 A: 同上 Q3 : 如果想要更進一步指定停損停利價位的回補語法又該如何寫呢 ( 例如:停損設定為平盤價的+5%,停利價設定為放空到的價位向下3.5% buytocover next bar c*0.95 limit; buytocover next bar c*1.035 stop;
[IntrabarOrderGeneration = true];
var1 = Volume; var6 = Volume[1]; var7 = Volume[2]; var8 = Volume[3]; var9 = Volume[4]; var10 = Volume[5]; // 策略條件一 ; 今天的成交量必須大於前面五天的成交量 if ( var1>var6 and var1>var7 and var1>var8 and var1>var9 and var1>var10 ) then begin // 策略條件二 : 今收必須大於今開 if close > open then begin // 隔天用市價放空 ( 先不考慮開在平盤價以下的問題 ) sellshort("sell") next bar on market // 收盤時無條件用收盤價回補( 我的目的只是在回測 ) if time >1320 then begin buytocover 1 contracts next bar on market; end; end; end; 上面這樣的寫法會呈現圖檔的現象,但我知道這是有問題的( 但已經不會出現之前留倉的問題)
編輯文章 by DavidLu 2011-10-24 16:53:52
[IntrabarOrderGeneration = true];
var1 = Volume; var6 = Volume[1]; var7 = Volume[2]; var8 = Volume[3]; var9 = Volume[4]; var10 = Volume[5]; // 策略條件一 ; 今天的成交量必須大於前面五天的成交量 if ( var1>var6 and var1>var7 and var1>var8 and var1>var9 and var1>var10 ) then begin // 策略條件二 : 今收必須大於今開 if close > open then begin // 隔天用市價放空 ( 先不考慮開在平盤價以下的問題 ) sellshort("sell") next bar on market // 收盤時無條件用收盤價回補( 我的目的只是在回測 ) if time >1320 then begin buytocover 1 contracts next bar on market; end; end; end; 上面這樣的寫法會呈現圖檔的現象,但我知道這是有問題的( 但已經不會出現之前留倉的問題)
編輯文章 by DavidLu 2011-10-24 16:53:52
1. 你沒開精密回測吧
2. // 收盤時無條件用收盤價回補( 我的目的只是在回測 )
if time >1320 then begin buytocover 1 contracts next bar on market; end; 在日線中, time >1320一定會成立,所以它就下一根只要進場後,就直接出場了 跟本上的問題在於,為什麼要在日線做當沖,這并不合理 請改變為分線策略吧,不然你的問題一定存在
謝謝回覆
關於當日沖的原因如下:
我的策略是想要預測明日[現股]開高(或是平盤)走低的機率
想說如果透過mc回測方式可以得到一些好的數據來支撐(也就是現在嘗試過程中所想要達到的目的)
就可以將該策略拿到實務上去運用
如果當天收盤的資料有符合我的策略條件,隔天我就在市場上面用市價掛單準備現股當沖
也就是說:
初期只是期望透過MC進行回測,至於實際下單等等的問題可以先放一邊
按照您的指點,是否真的需要用到分線之類的數據才有辦法呢 ><"
畢竟回測過程中,是可以知道訊號那根K棒的OHLC,為何..... : (
編輯文章 by DavidLu 2011-10-24 22:48:48