歷史回測不能下單 [開拓者 TB]
-
咨詢內(nèi)容:
本帖最后由 wblsjhmxuhongbo 于 2018-11-20 17:27 編輯
1分鐘圖上,根據(jù)信號下單和平倉。
為確保1個bar只執(zhí)行1次。我將所有代碼都放在如下的判斷語句中:
If(T()<>GetGlobalVar(99))
? ? ? ? {
? ? ? ? ? ? ? ? SetGlobalVar(99,T());
代碼根據(jù)信號下單:
if(v_orient==1)
? ? ? ? {? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? Buy(1,0);
? ? ? ? ? ? ? ? XHBLog("buy","",v_programName,Date(),Time());
? ? ? ? }
? ? ? ? Else if(v_orient==-1)
? ? ? ? {? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? SellShort(1,0);
? ? ? ? ? ? ? ? XHBLog("sell","",v_programName,Date(),Time());
? ? ? ? }
? ? ? ? Else if(v_orient==0)
? ? ? ? {
? ? ? ? ? ? ? ? Sell();
? ? ? ? ? ? ? ? BuyToCover();
? ? ? ? ? ? ? ? XHBLog("kill","",v_programName,Date(),Time());
? ? ? ? }
日志顯示幾乎每分鐘都有交易:
2018-11-20 09:01:00 TestOrder??:sell
2018-11-20 09:02:00 TestOrder??:sell
2018-11-20 09:03:00 TestOrder??:sell
2018-11-20 09:04:00 TestOrder??:sell
2018-11-20 09:05:00 TestOrder??:sell
2018-11-20 09:06:00 TestOrder??:sell
2018-11-20 09:07:00 TestOrder??:sell
2018-11-20 09:08:00 TestOrder??:sell
2018-11-20 09:09:00 TestOrder??:sell
2018-11-20 09:10:00 TestOrder??:sell
2018-11-20 09:11:00 TestOrder??:sell
2018-11-20 09:12:00 TestOrder??:sell
2018-11-20 09:13:00 TestOrder??:sell
2018-11-20 09:14:00 TestOrder??:sell
2018-11-20 09:15:00 TestOrder??:sell
2018-11-20 09:16:00 TestOrder??:sell
2018-11-20 09:17:00 TestOrder??:sell
2018-11-20 09:18:00 TestOrder??:sell
2018-11-20 09:19:00 TestOrder??:sell
2018-11-20 09:20:00 TestOrder??:sell
2018-11-20 09:21:00 TestOrder??:sell
2018-11-20 09:22:00 TestOrder??:sell
2018-11-20 09:23:00 TestOrder??:sell
2018-11-20 09:24:00 TestOrder??:sell
2018-11-20 09:25:00 TestOrder??:sell
2018-11-20 09:26:00 TestOrder??:sell
2018-11-20 09:27:00 TestOrder??:sell
2018-11-20 09:28:00 TestOrder??:sell
2018-11-20 09:29:00 TestOrder??:sell
2018-11-20 09:30:00 TestOrder??:sell
2018-11-20 09:31:00 TestOrder??:sell
2018-11-20 09:32:00 TestOrder??:sell
2018-11-20 09:33:00 TestOrder??:sell
可是回測記錄全天卻只有4條:
#? ? ? ? 公式應用? ? ? ? 類型? ? ? ? 商品? ? ? ? 建倉時間? ? ? ? 建倉價格? ? ? ? 平倉時間? ? ? ? 平倉價格? ? ? ? 數(shù)量? ? ? ? 交易成本
1? ? ? ? TestOrder? ? ? ? 空頭? ? ? ? m1903? ? ? ? 2018/11/20 9:01? ? ? ? 3055? ? ? ? 2018/11/20 10:07? ? ? ? 3064? ? ? ? 1? ? ? ? 6
2? ? ? ? TestOrder? ? ? ? 多頭? ? ? ? m1903? ? ? ? 2018/11/20 10:07? ? ? ? 3064? ? ? ? 2018/11/20 10:08? ? ? ? 3060? ? ? ? 1? ? ? ? 6
3? ? ? ? TestOrder? ? ? ? 多頭? ? ? ? m1903? ? ? ? 2018/11/20 10:14? ? ? ? 3060? ? ? ? 2018/11/20 10:50? ? ? ? 3070? ? ? ? 1? ? ? ? 6
4? ? ? ? TestOrder? ? ? ? 空頭? ? ? ? m1903? ? ? ? 2018/11/20 10:50? ? ? ? 3070? ? ? ? 2018/11/20 14:59? ? ? ? 3080? ? ? ? 1? ? ? ? 6
也就是說,其中大部分下單信號都沒有執(zhí)行。請高手指點,這到底是為什么?我理解歷史回測不是應該都能成交嗎??
?來源:CXH99.COM
-
TB技術人員:
本帖最后由 wblsjhmxuhongbo 于 2018-11-21 11:43 編輯
我把源碼貼出來,請高手幫忙看下,這是什么原因。先不用管程序邏輯(大概邏輯是以同品種不同期合約價差(m1903-m1901)均線為參考依據(jù),收盤價超過上限賣,低于下限買,否則平倉),我主要目的是用來了解下單函數(shù)的。現(xiàn)在的現(xiàn)象是,在信號變化的地方會下單,比如第一次出現(xiàn)buy信號時下單,其后連續(xù)的buy信號都不下單:
//------------------------------------------------------------------------
// 簡稱: TestOrder
// 名稱: 測試下單函數(shù)
// 類別: 公式應用
// 類型: 用戶應用
//------------------------------------------------------------------------
Params
Numeric MALength(100);
? ? ? ? Numeric FirstStep(50);//警戒線
? ? ? ? Numeric pBuyLots(1);
? ? ? ? numeric pStartDate(20181110);
Vars
string v_programName;
? ? ? ? NumericSeries ma;
? ? ? ? NumericSeries maQuick;
? ? ? ? NumericSeries CloseDif;
? ? ? ? numeric v_orient;
? ? ? ? numeric lv_lot;
? ? ? ? Numeric ShiftUnit(10);
Begin
? ? ? ? if(Date()<pStartDate){return;}
? ? ? ?
? ? ? ? If(T()<>GetGlobalVar(99))
? ? ? ? {
? ? ? ? ? ? ? ? //利用全局變量,確保每個bar只執(zhí)行一次
? ? ? ? ? ? ? ? SetGlobalVar(99,T());
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? if (CurrentBar <MALength)
? ? ? ? {
? ? ? ? ? ? ? ? return ;
? ? ? ? }
? ? ? ? v_programName="TestOrder";
? ? ? ?
? ? ? ? ? ? ? ? CloseDif=Data0.Close-Data1.Close;
? ? ? ? ? ? ? ? ma=Average( CloseDif, MALength );
? ? ? ? If(CloseDif>(ma+FirstStep))
? ? ? ? {
? ? ? ? ? ? ? ? //超過均線上限則賣出
? ? ? ? ? ? ? ? v_orient=-1;
? ? ? ? }
? ? ? ? else If(CloseDif<(ma-FirstStep))
? ? ? ? {
? ? ? ? ? ? ? ? //超過均線下限則買入
? ? ? ? ? ? ? ? v_orient=1;
? ? ? ? }
? ? ? ? Else
? ? ? ? {
? ? ? ? ? ? ? ? //平倉
? ? ? ? ? ? ? ? v_orient=0;? ? ? ? ? ? ? ?
? ? ? ? }
? ? ? ?
? ? ? ? PlotNumeric("orient",v_orient);
? ? ? ?
? ? ? ? if(v_orient==1)
? ? ? ? {? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? Buy(1,0);
? ? ? ? ? ? ? ? //XHBLog("buy","",v_programName,Date(),Time());
? ? ? ? ? ? ? ? FileAppend("C:\\temp\\log.txt",DateToString(Date)+" "+TimeToString(Time)+" "+"buy");
? ? ? ? }
? ? ? ? Else if(v_orient==-1)
? ? ? ? {? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? SellShort(1,0);
? ? ? ? ? ? ? ? //XHBLog("sell","",v_programName,Date(),Time());
? ? ? ? ? ? ? ? FileAppend("C:\\temp\\log.txt",DateToString(Date)+" "+TimeToString(Time)+" "+"sell");
? ? ? ? }
? ? ? ? Else if(v_orient==0)
? ? ? ? {
? ? ? ? ? ? ? ? Sell();
? ? ? ? ? ? ? ? BuyToCover();
? ? ? ? ? ? ? ? //XHBLog("kill","",v_programName,Date(),Time());
? ? ? ? ? ? ? ? FileAppend("C:\\temp\\log.txt",DateToString(Date)+" "+TimeToString(Time)+" "+"kill");
? ? ? ? }
? ? ? ? }
End
//------------------------------------------------------------------------
// 編譯版本? ? ? ? GS2015.12.25
// 用戶版本? ? ? ? 2018/10/22 12:16:33
// 版權所有? ? ? ?
// 更改聲明? ? ? ? TradeBlazer Software保留對TradeBlazer平臺
//? ? ? ? ? ? ? ? ? ? ? ? 每一版本的TradeBlazer公式修改和重寫的權利
//------------------------------------------------------------------------?
-
TB客服:
wblsjhmxuhongbo 發(fā)表于 2018-11-21 11:39
我把源碼貼出來,請高手幫忙看下,這是什么原因。先不用管程序邏輯(大概邏輯是以同品種不同期合約價差(m1 ...
同一個公式里面,系統(tǒng)默認是不能連續(xù)建倉的吧(我也不知道tb為什么要這樣設定)。在全局交易設置里面允許連續(xù)建倉試試??
-
網(wǎng)友回復:
colin10g 發(fā)表于 2018-11-21 13:01
同一個公式里面,系統(tǒng)默認是不能連續(xù)建倉的吧(我也不知道tb為什么要這樣設定)。在全局交易設置里面允許 ...
謝謝,正是這個原因!問題已解決!
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯(lián)系技術人員 QQ: 511411198 或微信:cxhjy888 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內(nèi)容