COCO研究院

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

[工具] Python27 產生 backtest report CSV 檔案

[複製鏈接]
發表於 12-10-14 21:44 | 顯示全部樓層 |閱讀模式
分享一下小小工具
會改的人就可改成批次檔並進行後處理與計算

1. 安裝 Python27
  http://python.org/download/releases/2.7.3/
2. 下載並安裝 pywin32 for python27
http://sourceforge.net/projects/pywin32/files/pywin32/Build%20217/
3: command line 執行
  C:\python27\python AB.py
4. 產生的 CSV檔可以用EXCEL打開 或繼續用 python 做處理與計算
AB.py (930 Bytes, 下載次數: 346)
發表於 12-10-14 21:57 | 顯示全部樓層
感謝大大分享~~

用 AB 的人似乎不多
發表於 12-10-26 19:26 | 顯示全部樓層
多謝分享! 會用Python的人確是太少!
發表於 12-10-27 02:21 | 顯示全部樓層
我將AB.py改成AutoIT的Au3,隨便寫寫,有錯請包涵及指正。

Local $FN_AA, $FN_AD, $Ticker, $FN_OUT, $AB, $newAA, $newAD, $newSym

$FN_AA="C:\Program Files\AmiBroker\Scripts\3K_AC_2.apx" ;# APX檔改成自己的檔案
$FN_AD="D:\AmiBrokerData\BACKTEST\" ;#目錄路徑改成自己的回測資料庫路徑
$Ticker="TXF" ;#待測的 SYMBOL
$FN_OUT="R:\BTR.csv"  ;#產生檔案路徑與檔名
$AB = ObjCreate( "Broker.Application" ) ; // creates AmiBroker object
$AB.Visible = 0
$newAA=$AB.AnalysisDocs.Open($FN_AA)
$newAD=$AB.LoadDatabase($FN_AD)
$newSym=$AB.Documents.Open($Ticker)

MsgBox(4096, " "Broker Status :", "AmiBroker 開始回測",1)
$newAA.Run(2)
While  $newAA.IsBusy = 1
          MsgBox(0, "Broker Status :", " Analysis Win/Doc IsBusy",1)      
          Sleep(100) ; // check IsBusy every 0.1 second
          $newAA.Run(2)
WEnd
$newAA.Export($FN_OUT)
MsgBox(4096, " "Broker Status :", "報告產生完成",1)
$newAA.Close()

補充內容 (12-10-27 08:22):
請將WEnd 上一行的 $newAA.Run(2) 刪掉。
 樓主| 發表於 12-10-27 07:25 | 顯示全部樓層
多謝分享

但是 WEnd 上一行的 $newAA.Run(2) 必須刪掉
否則會陷入無窮迴圈
發表於 12-10-27 08:20 | 顯示全部樓層
本帖最後由 heavenweaver 於 12-10-27 08:46 編輯
calvinhorng 發表於 12-10-27 07:25
多謝分享

但是 WEnd 上一行的 $newAA.Run(2) 必須刪掉


謝謝指正,的確如您所說的, 必須將WEnd上一行的 $newAA.Run(2) 刪掉。
剛才將Manual再細讀清楚,原來是在呼叫 Export() 或 Run()前先檢查Analysis Window是否IsBusy,而不是先呼叫 Export() 或 Run()後再檢查Analysis Window是否IsBusy。有您的指正真好!

修正如下:
MsgBox(4096, " "Broker Status :", "AmiBroker 開始回測",1)
While  $newAA.IsBusy = 1
          MsgBox(0, "Broker Status :", " Analysis Win/Doc IsBusy",1)      
          Sleep(500) ; // check IsBusy every 0.5 second      
WEnd
$newAA.Run(2)
$newAA.Export($FN_OUT)
MsgBox(4096, " "Broker Status :", "報告產生完成",1)
$newAA.Close()



 樓主| 發表於 12-10-27 08:46 | 顯示全部樓層
AB_BTRx1.bat (818 Bytes, 下載次數: 266) AB_BTRx.py (15.64 KB, 下載次數: 242) 其實 我是希望晚上 跑批次檔 做回測

所以 請參考 附件AB_BTRx1.bat
檔案內 REM 有註解
如果要改交易的相關參數 要改AB_BTRx.py 內的參數

首先要在AB程式產生一個 APX (任何 AFL的都可以)
之後 把它放在BAT 對應的目錄下
然後再  BAT 的c:\python27\python AB_BTRx.py指令列 後把要回測的參數輸入
(用空格分隔)
依序 [中文部分可以不輸入 PY內有預設]
"Ticker"  
"Time Frame"
"Start Date"
"End Date"
"Output Path"
"Path of formula"
"File Name of Formula"
"Path of APX"
"Name of APX file"
"Path of DataBase"
"期初資金(萬元)"  
"每口加碼之資金(萬元)"  
"最多交易口數"
"自動出金金額"

會產生三檔案
第一個是AB的原始報表: BTR_XXX.cxv
第二個是依據AB的原始報表 產生的單口交易與加碼交易的損益: RPT_YYY.csv
第三個是依據第二個報表 產生的簡表: SUM_YYY.csv

請有興趣的人試看看

BTW 我比較執行速度 PYTHON 真的比較快
所以 用 BAT 可以連續測試 (待測標的、不同起始、結束時間、K棒週期)
一個晚上下來 可以跑滿多的

發表於 12-10-27 10:53 來自手機 | 顯示全部樓層
感謝版大分享~~

非常實用的方法,謝謝
發表於 12-10-27 11:26 | 顯示全部樓層
kilroy 發表於 12-10-14 21:57
感謝大大分享~~

用 AB 的人似乎不多

期待您多多分享
發表於 12-10-29 19:33 | 顯示全部樓層
真是好料的,感謝calvinhorng 大大無私的分享,可以讓我學到更精采的實用方法。
發表於 12-11-3 21:23 | 顯示全部樓層
我用autohotkey的
  1. global apxfilename:="c:\Analysis1.apx",csvfilename:="c:\ab.csv"
  2. analyseAB(apxfilename,csvfilename)

  3. analyseAB(ByRef apxfile,ByRef csvfile)
  4. {
  5.         static AmiBroker:=ComObjCreate("Broker.Application")
  6.         NewA:= AmiBroker.AnalysisDocs.Open(apxfile)
  7.         if(IsObject(NewA)){
  8.                          while ( NewA.IsBusy )
  9.                                 Sleep,30
  10.                          NewA.Run( 1 )                ;0 scan,2 backtest,1 Exploration
  11.                          while ( NewA.IsBusy )
  12.                                 Sleep,30
  13.                          NewA.Export(csvfile)
  14.                          NewA.Close()
  15.         }
  16. }
複製代碼
發表於 12-11-16 06:12 | 顯示全部樓層
真是好東西,...這程式在python3可以用嗎?
 樓主| 發表於 12-11-17 16:46 | 顯示全部樓層
lutin111 發表於 12-11-16 06:12
真是好東西,...這程式在python3可以用嗎?

我沒測過
可能你要自己試看看
發表於 12-11-25 20:30 | 顯示全部樓層
想請開下用了AnalysisDocs想要改變選股範圍和時間範圍要如何做?
修改APX檔還是另外再開其它APX檔?
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

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

GMT+8, 24-11-23 09:27

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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