DEBUGFILE----使用日志方式完善您的策略 [金字塔]
- 咨詢內容:
經常會有使用金字塔的客戶咨詢客服,有關交易方面,我們總結一下,其實主要有2個交易問題:
1. 為什么明明圖表上有信號,但是賬戶上確沒有下單或者持倉不對?
2. 為什么圖表上至于一次開倉信號,而金字塔給我下單2次,也就是重復下單?
出現這類的原因很多,也比較復雜, 金字塔常見問題 問題13中有關這個情況做了解釋,既有網絡斷線原因也有用戶自己公式信號閃爍或者未來函數的原因,不過大多數用戶在出現問題后往往不知道具體的情況,問題13中總結了很多條,那么具體我的策略是哪一條原因導致的呢?
下面我們將逐一為大家進行解讀,告知大家遇到類似問題時問題排查的方法.
第一步,通過金字塔自帶的日志記錄.
金字塔自帶的日志在默認情況是關閉的,這個主要考慮到運行效率的問題,因為頻繁的記錄日志會影響到系統的運行速度. 打開的方法請參考 金字塔常見問題 問題24.
通過記錄后的日志,我們打開后會看到下面記錄的數據
2013-02-27 15:00:14.875 【后臺】 啟動后臺程式化交易
2013-02-27 15:00:14.875 【后臺】IF03 運行結束
2013-02-27 15:00:15.234 【后臺】IF03 運行結束
2013-02-27 15:00:16.203 【后臺】IF03 運行結束
2013-02-27 15:00:17.156 【后臺】IF03 運行結束
2013-02-27 15:00:18.187 【后臺】IF03 運行結束
2013-02-27 15:00:19.171 【后臺】IF03 運行結束
2013-02-27 15:00:20.234 【后臺】IF03 運行結束
2013-02-27 15:00:21.203 【后臺】IF03 運行結束
2013-02-27 15:00:21.203 【后臺】IF03 TBuy 已成功觸發下單操作 價格:2591.800049 數量:1 類型:0 賬戶: 品種:IF03
2013-02-27 15:00:21.203 【后臺】下單已發送
2013-02-27 15:00:21.234 【下單】IF03 價2591.800049 量1 買賣0 類型0 開平0 賬戶804982 Formula 1
2013-02-27 15:00:22.187 【后臺】IF03 運行結束
2013-02-27 15:00:23.125 【后臺】IF03 運行結束
2013-02-27 15:00:24.218 【后臺】IF03 運行結束
2013-02-27 15:00:25.171 【后臺】IF03 運行結束
2013-02-27 15:00:26.000 【回報】804982 : IF03 - 正在申報 1 價格:2580.80 開倉 買入
2013-02-27 15:00:26.281 【后臺】IF03 運行結束
2013-02-27 15:00:27.250 【后臺】IF03 運行結束
2013-02-27 15:00:28.125 【后臺】IF03 運行結束通過上述的日志記錄,我們可以通過日志上大致能分析出幾個方面的信息:
1.模型在出現問題的時刻是否還在工作著.如果已經停止工作,可能此時的網絡已經斷線.
2.模型在出現問題的時刻是否已經出發下單,如果已經觸發下單,但是下單失敗,日志上就會記錄為什么會報單失敗.
3.模型報單時提交的委托手數是否符合我們的設計需要的數量.
金字塔的調試基本分3種方法 1、基于圖表的公式調試;2、金字塔的公式調試器;3、通過記錄日志方式調試.
詳情請參考該帖http://www.weistock.com/bbs/dispbbs.asp?boardid=4&id=1246&page=1&star=1
這里詳細介紹第3種方式
金字塔一個非常重要的函數DEBUGFILE,可以將調試日志記錄文件中,方便用戶在編寫復雜策略的過程中,逐步的完善策略的各個方面.
DEBUGFILE,該函數輸出時會自動的加入時間,格式為:年月日時分秒.圖表OR后臺均可以使用該函數,來記錄最后一根K線各個變量的值.
用法:DEBUGFILE(PATH,STR,NUM),PATH為用戶的本地計算機路徑,STR為用戶指定輸出的一個行文字,NUM為用戶指定的一個監控數字.
例如:DEBUGFILE('D:\TEST.TXT','當前資產為%.2f',1234),將在程式化交易的監控部分輸出到D:\TEST.TXT文件, "當前資產為1234.00","%.2f"為一個打印的控制符號,系統會將他替換為指定的一個數字輸出,%.2f為顯示兩位小數,%.0f則表示不顯示小數。
ma5:ma(close,2);
ma15:ma(close,5);//5日均線上穿10日均線,開多
buycond:=CROSS(ma5,ma15);
if buycond then
begin
if islastbar then
begin
DEBUGFILE('D:\TEST.TXT',' buycond:%.0f',buycond);//輸出開倉條件
DEBUGFILE('D:\TEST.TXT','holding:%.0f',holding);//輸出HOLDING
end
buy(holding=0,1,market);
end//5日均線下破10日均線,平多
sellcond:=CROSS(ma15,ma5);
if sellcond then
begin
if islastbar then
begin
DEBUGFILE('D:\TEST.TXT',' sellcond:%.0f',sellcond);//輸出平倉條件
DEBUGFILE('D:\TEST.TXT','holding:%.0f',holding);
end
sell(holding>0,1,market);
end//收盤前5分鐘平倉
if time >= 145500 then
begin
sell(holding > 0, 1, market);
sellshort(holding < 0, 1, market);
end紅色標識,用于輸出并記錄您的開多條件OR平多條件,如果您發現開平倉信號與經驗預期不一致,可結合下單日志和D:\TEST.TXT文件中的記錄,看看是不是由于漏寫了條件造成的.
- 金字塔客服:
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 262069696 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容