COCO研究院

 找回密碼
 註冊
搜索
查看: 3964|回復: 13

新手一問(回測用1minDATA好還是Tick-DATA好)?

[複製鏈接]
發表於 15-10-21 02:32 | 顯示全部樓層 |閱讀模式
本帖最後由 ncygrvgp 於 15-10-21 02:39 編輯

由於在下是一位新人,首先謝謝進來參與問題討論的人。

題目如上, 目前在youtube上學到了一套海龜交易法,其代碼如下

SetOption("MAXOpenPositions",50); \SetPositionSize (70,spsPercentOfEquity);
HighestValue = HHV(Close,85);
LowestValue = LLV(Close,35);
LowestValue1 = LLV(Close,85);
HighestValue1 = HHV(Close,35);
Buy = Close >= HighestValue;
Sell = Close <= LowestValue;
Short= Close <= LowestValue1;
Cover= Close >= HighestValue1;
Buy = ExRem(Buy,Sell);
Sell = ExRem(Sell,Buy);  
Plot (HighestValue, "85High",colorGreen,styleLine,0,0,0,0);
Plot (LowestValue, "35Low",colorRed,styleLine,0,0,0,0);

資料分別使用群益的十年數據中的期貨 1分 數據,
以及 Tick 數據卻得到了兩個不同的結果,
現在苦惱到底哪個比較有參考價值?
Backtester settings 中的Periodicity 設定為3-minute
1min-tick.JPG
附圖左邊用的是1分鐘的數據,右邊用的是Tick的數據。
光看結果,當然是TICK的數據比較好,
可是總不能那麼主觀,
所以想問問大家意見
希望有前輩能指教指教,

小弟不勝感激





發表於 15-10-21 09:00 | 顯示全部樓層
注意 Close,因為分k用的是那個k的close,tick就是當下的
設定 buyprice, sellprice, shortprice, coverprice
設定得好,理當回得到差不多的結果
 樓主| 發表於 15-10-21 13:01 | 顯示全部樓層
謝謝你,我會再研究看看
發表於 15-10-22 13:04 | 顯示全部樓層
想說還是回一下好了,可以省下你很多寶貴的時間

先不管分K 還是 tick

如果你的進出場條件是 close 大於或小於某值

buyprice/sellprice/shortprice/coverprice

必須是當根K的收盤價或是次根K的開盤價

不然你這個策略的回測是不能參考的 (無論手動或是自動交易)

因為 close 這個價位在K線(即時報價)還沒收完時,是不固定的
它可能這一秒大於某值、下一秒小於某值、或是等於某值

那你的訊號只會跳來跳去


參考看看吧~~
 樓主| 發表於 15-10-22 17:22 | 顯示全部樓層
kilroy 發表於 15-10-22 13:04
想說還是回一下好了,可以省下你很多寶貴的時間

先不管分K 還是 tick

謝謝版主回覆~~
現在先看buyprice/sellprice/shortprice/coverprice 怎麼設定~
然後再修改看看~~



發表於 15-10-22 18:15 | 顯示全部樓層
你可以把 close改成high,就會觸價成交,就不會有跳來跳去的問題
當然還是要看你的策略理念
發表於 15-10-22 19:48 | 顯示全部樓層
如果要寫類似像...

buy = high > 某值
short = low < 某值

要留意當根K同時符合這兩個條件的BUG

這也會讓訊號出現又不見

---
回測報表是看不出來這個問題的

參考看看了
 樓主| 發表於 15-10-22 21:07 | 顯示全部樓層
kilroy 發表於 15-10-22 19:48
如果要寫類似像...

buy = high > 某值

明白明白, 己經像版主說的那樣
用High 跟Low來寫了,目前在測試中。

想請教一下如果寫成 訊號出現後,
下一根K 才進行買賣 會不會很難?



爬文參考了版主的其中一篇後目前加入了兩句。

Buyprice=sellprice=O;
Shortprice=coverprice=O;

這個意思就是買在下根K的開盤價是吧?
發表於 15-10-22 21:18 | 顯示全部樓層
本帖最後由 lwhuang 於 15-10-22 21:25 編輯

你要等收k就不需要用high low取代close了,但是這就是分k跟tick的差別所在
要等收k就這樣
  1. Buy = Ref(Close, -1) >= HighestValue;
  2. Buyprice=O;
複製代碼
若你要等收k的high
  1. Buy = Ref(High, -1) >= HighestValue;
  2. Buyprice=O;
複製代碼
但是以你的原始問題,這樣意義不大,因為1分鐘後價都不知道到那裡去了,要用分k接近tick的效果,就要當k下單,不然你就用tick,但是這樣資料庫很快就會爆掉

一切還是要看你的策略精神,在實盤時細節很多要注意,儘量做到回測跟實盤一樣的條件

 樓主| 發表於 15-10-23 02:29 | 顯示全部樓層
嗯,謝謝前輩指導。
目前還沒敢去實盤操作,到非常有把握才會去跑。

估計還要學習半年到一年才會熟悉
發表於 15-10-23 06:57 | 顯示全部樓層
本帖最後由 lwhuang 於 15-10-23 07:40 編輯

反過來說也成立
回測時就要想好實盤怎麼做,不然可能會測到無法交易的回測
想像一下你完全不知道後面的價是什麼,因為報價還沒來,跟歷史資料什麼都有不同
回測到績效超好的,就要懷疑可能是程式寫錯了
建議先把部位管理拿掉
  1. SetOption("MAXOpenPositions",50);
  2. SetPositionSize (70,spsPercentOfEquity);
複製代碼
用單口回測,有績效後再加
  1. SetPositionSize( 1, spsShares );
  2. SetOption("FuturesMode", 1);
複製代碼
討論而已,我也不一定對,版上大大評論一下,若有誤請指正
 樓主| 發表於 15-10-23 17:11 | 顯示全部樓層
本帖最後由 ncygrvgp 於 15-10-23 18:45 編輯

我也懷疑過是不是程式問題, 曾經把口數限制為1口。
然後就賺不了錢了,還一直虧到本金都沒了才停止。
也不知道是什麼原因

目前寫了一個時間控制的語法,目的在於控制倉位在中午不過巿,和收盤前平掉所有倉位。
可是還是會看到有持倉過夜的情況,真的不知道哪裡有錯了

tn = TimeNum();
startTime = 103000; // start in HHMMSS format
endTime = 115500;  // end in HHMMSS format
timeOK = tn >= startTime AND tn <= endTime;

tm = TimeNum();
startTm = 130000; // start in HHMMSS format
endTm = 160000;  // end in HHMMSS format
timeOk1 = tm >= startTm AND tm <= endTm;


Buy = H >= HighestValue AND (timeOK OR timeOk1);
Sell = L <= LowestValue or Cross(tn,endtime) OR Cross (tm,endtm);
Short= L <= LowestValue1 AND (timeOK OR timeOk1);
Cover= H >= HighestValue1 or Cross(tn,endtime) OR Cross (tm,endtm);

發表於 15-10-24 09:20 | 顯示全部樓層
多用plot在Data window裡印出資料debug,只是Data window有個數限制
  1. Plot( Sell, "Sell", colorCycle, styleDots | styleNoLine | styleOwnScale | stylenodraw);
複製代碼
發表於 15-10-26 09:15 | 顯示全部樓層
海龜應該是波段的吧~一分K就夠了~~
TICK會漏K
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-23 00:04

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |