請(qǐng)問(wèn)一下是否會(huì)出現(xiàn)在一臺(tái)電腦上能夠回測(cè)運(yùn)行的python程序在另外一臺(tái)電腦上會(huì)出現(xiàn)不報(bào)錯(cuò)但沒(méi)有交易的情況 [金字塔]
-
咨詢內(nèi)容:
我?guī)臀业囊晃慌笥褜?xiě)的一個(gè)程序,我自己電腦上在金字塔里寫(xiě)的程序在我自己電腦上用滬深300股票池回測(cè)今年1月到現(xiàn)在為止,是有具體數(shù)據(jù)的,但是把這個(gè)程序放到我的朋友那邊去跑,沒(méi)報(bào)錯(cuò),但是就是沒(méi)有具體的回測(cè)情況,就是沒(méi)交易過(guò),顯示為都為0,但我這邊是有的從2019.1.2到2019.6.1,300W資金,收益23.8W我把程序貼出來(lái),請(qǐng)幫我看一下你們那邊能不能跑出來(lái),看一下又沒(méi)有問(wèn)題如果能跑出來(lái),請(qǐng)問(wèn)有什么原因可能導(dǎo)致了我寫(xiě)的程序在朋友那邊跑起來(lái)沒(méi)效果(數(shù)據(jù)什么的補(bǔ)充過(guò)了,用均線交易系統(tǒng)試過(guò)了,是能跑起來(lái)的有交易數(shù)據(jù)的)比如有版本問(wèn)題什么的
import timeimport os?import csvimport numpy as npimport mathimport talib as tafrom datetime import date
def init(context):? ? # 在context中設(shè)置一些參數(shù)? ? context.s1 = context.universe? ? #價(jià)格時(shí)間周期長(zhǎng)度,其中包括了當(dāng)日價(jià)格,所以要選取N天前的數(shù)據(jù),則需要N+1? ? context.period =1000? ? context.code=[]? ? #print(context.universe)? 查看是否能讀取合約池里的股票,成功? ??# before_trading此函數(shù)會(huì)在每天策略交易開(kāi)始前被調(diào)用,當(dāng)天只會(huì)被調(diào)用一次def before_trading(context):? ? pass
# 你選擇的證券的數(shù)據(jù)更新將會(huì)觸發(fā)此段邏輯,例如日或分鐘歷史數(shù)據(jù)切片或者是實(shí)時(shí)數(shù)據(jù)切片更新def handle_bar(context):? ? # 開(kāi)始編寫(xiě)你的主要的算法邏輯
? ? # bar_dict[order_book_id] 可以拿到某個(gè)證券的bar信息? ? # context.portfolio 可以拿到現(xiàn)在的投資組合信息
? ? # 使用order_shares(id_or_ins, amount)方法進(jìn)行落單
? ? # TODO: 開(kāi)始編寫(xiě)你的算法吧!? ? #價(jià)格時(shí)間周期長(zhǎng)度,其中包括了當(dāng)日價(jià)格,所以要選取N天前的數(shù)據(jù),則需要N+1? ? #金字塔的時(shí)間序列是正向序列,是按遠(yuǎn)到近排序的,為了方便可以反向取值? ? for id in context.s1:? ? ? ? try:? ? ? ? ? ? close = history_bars(id,200, '1d', 'close')? ?#股票收盤(pán)價(jià)時(shí)間序列? ? ? ? ? ? open = history_bars(id,50, '1d', 'open')? ?#股票開(kāi)盤(pán)價(jià)時(shí)間序列? ? ? ? ? ? low = history_bars(id,50, '1d', 'low')? ? ? ? ? ? count=0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #用來(lái)統(tǒng)計(jì)前三天low小于MAX的天數(shù)? ? ? ? ? ? buy_quantity=get_portfolio(id,2).buy_quantity? ? ?#持倉(cāng)數(shù)量? ? ? ? ? ? pnl=get_portfolio(id,2).pnl? ? ? ? ? ? ? ? ? ? ? ?#收益盈虧? ? ? ? ? ? holding_price=get_portfolio(id,2).buy_avg_holding_price? #持倉(cāng)成本? ? ? ??? ? ? ? ? ??? ? ? ? ? ? close_today=close[-1]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#當(dāng)前的收盤(pán)價(jià),如果還在交易時(shí)間內(nèi),則顯示的是當(dāng)前價(jià)格? ? ? ? ? ? close_yesterday=close[-2]? ? ? ? ? ? ? ? ? ? ? ? ? ? #昨天的收盤(pán)價(jià)? ? ? ? ? ? ma10=ta.SMA(close,10)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#10日簡(jiǎn)單移動(dòng)平均線? ? ? ? ? ? ma60=ta.SMA(close,60)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#200日簡(jiǎn)單移動(dòng)平均線? ? ? ? ? ? EMA13=ta.EMA(close,13)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #13日指數(shù)移動(dòng)平均線? ? ? ? ? ? EMA25=ta.EMA(close,25)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #25日指數(shù)移動(dòng)平均線? ? ? ? ? ? MAX=max(EMA13[-1],ma10[-1])? ? ? ? ? ? #print(context.now)? ? ? ? ? ? #print(close_yesterday)? ? ? ? ? ? #print(EMA13[-1])? ? ? ? ? ? #print(EMA25[-1])? ? ? ? ? ? #print(ma200[-1])? ? ? ? ? ? #print(ma10[-1])? ? ? ? ? ? #print(open[-1])? ? ? ? ? ? #print(max(EMA13[-1],ma10[-1]))? ? ? ? ? ? #print(low[-1]);?? ? ? ? ? ? for i in range(3):? ? ? ? ? ? ? ? if low[-1-i]<max(EMA13[-1-i],ma10[-1-i]):? ? ? ? ? ? ? ? ? ? count=count+1? ? ? ? ? ? ? ? else:? ? ? ? ? ? ? ? ? ? pass? ? ? ? ? ? #print(count)? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? if buy_quantity==0:? ? ? ? ? ? ? ? if close_yesterday>EMA13[-1] and EMA13[-1]>=EMA25[-1]? and close_today>ma60[-1] and close_yesterday>ma10[-1] and open[-1]>=MAX and low[-1]<=MAX and count==1:? ? ? ? ? ? ? ? ? ? ? ? buy_open(id,"Market",0 ,0,100000,serial_id = 1)? ? ? ? ? ? ? ? ? ? ? ? #print("EMA策略購(gòu)買(mǎi)")? ? ? ? ? ? #print(1)? ??? ? ? ? ? ? if buy_quantity!=0:? ? ? ? ? ? ? ? if (pnl/(holding_price*buy_quantity))>0.2 or (pnl/(holding_price*buy_quantity))<-0.08:? ? ? ? ? ? ? ? ? ? ? ? #print(id)? ? ? ? ? ? ? ? ? ? ? ? ?#和下面式子一起使用可以看哪只股票盈虧多少? ? ? ? ? ? ? ? ? ? ? ? #print(pnl/(holding_price*buy_quantity))? ? ? ? ? ? ? ? ? ? ? ? sell_close (id,"Market",0,buy_quantity,0)? ? ? ? except:? ? ? ? ? ? ? ? pass? ? #print(portfolio.buy_quantity)? ? #print(portfolio.buy_avg_holding_price)? ? ? ?? ? #print(portfolio.buy_avg_holding_price)
? ??# after_trading函數(shù)會(huì)在每天交易結(jié)束后被調(diào)用,當(dāng)天只會(huì)被調(diào)用一次def after_trading(context):? ? pass?
?來(lái)源: CXH99.COM
-
金字塔客服:
回測(cè)有結(jié)果的。你可以在對(duì)應(yīng)的品種上右鍵“數(shù)據(jù)”看下對(duì)應(yīng)的周期數(shù)據(jù)是否真下載下來(lái)。
?
-
用戶回復(fù):
當(dāng)時(shí)發(fā)現(xiàn)跑不起來(lái)之后,我們就重新下載了數(shù)據(jù),然后先用系統(tǒng)自帶的均線交易系統(tǒng)跑了一下滬深300池,發(fā)現(xiàn)是有交易的,然后再去跑我寫(xiě)的,結(jié)果卻沒(méi)有,所以感覺(jué)很奇怪,而且不是一臺(tái)電腦這樣,朋友兩臺(tái)電腦都試了一下,由于我是遠(yuǎn)程連接幫忙弄的,所以沒(méi)現(xiàn)場(chǎng)看過(guò),但一般來(lái)說(shuō)也不會(huì)出現(xiàn)這種問(wèn)題吧,所以來(lái)問(wèn)問(wèn),之后大概是要去現(xiàn)場(chǎng)弄一下的,想提前來(lái)問(wèn)一下是不是有什么可能性導(dǎo)致這樣的情況
?
-
網(wǎng)友回復(fù):
1,檢查數(shù)據(jù)是否齊全,要鼠標(biāo)右鍵->數(shù)據(jù)-》打開(kāi)相應(yīng)的數(shù)據(jù)查看一下本地到底補(bǔ)齊了沒(méi)有2,測(cè)試報(bào)告上點(diǎn)擊委托明細(xì),看一下是否有具體的委托記錄3,自行使用print進(jìn)行打印調(diào)試,看具體第一筆交易為什么沒(méi)有出現(xiàn)委托下單條件
?
- 網(wǎng)友回復(fù): 你好,請(qǐng)問(wèn)跑完程序以后能不能說(shuō)一下它的收益大致是多少,滬深300池,300W本金,時(shí)間2017.1.1到現(xiàn)在,我需要對(duì)照一下我這邊看看有沒(méi)有什么的大區(qū)別
有思路,想編寫(xiě)各種指標(biāo)公式,交易模型,選股公式,還原公式的朋友
可聯(lián)系技術(shù)人員 QQ: 262069696 或微信號(hào):cxh99cxh99 進(jìn)行 有償收費(fèi) 編寫(xiě)!
(怎么收費(fèi),代編流程等詳情請(qǐng)點(diǎn)擊閱讀!)
(注:由于人數(shù)限制,QQ或微信請(qǐng)選擇方便的一個(gè)聯(lián)系我們就行,加好友時(shí)請(qǐng)簡(jiǎn)單備注下您的需求,否則無(wú)法通過(guò)。謝謝您!)
相關(guān)文章
-
沒(méi)有相關(guān)內(nèi)容