大伊人青草狠狠久久-大伊香蕉精品视频在线-大伊香蕉精品一区视频在线-大伊香蕉在线精品不卡视频-大伊香蕉在线精品视频75-大伊香蕉在线精品视频人碰人

您現在的位置:程序化交易>> 期貨公式>> 金字塔等>> 金字塔知識>>正文內容

怎樣提高效率? [金字塔]

  • 咨詢內容:

    在引用其它公式指標的時候,速度很慢,需要想辦法提高運行效率,有幾個問題。

     

    比如某個需要引用的公式指標'ABC.A',這個公式本身是組K線運行模式,

     

    當前代碼

    A:=STKINDI('RU00','ABC.A',0,DATAPERIOD);  //引用公式'ABC’的A值

     

    問題在于,假設當前圖表有N根K,為了得到'ABC’的A值,每根K線都有要運行一次上述代碼,都會去調用并運行ABC,

    而公式ABC在計算時也是逐K線的執行到當前圖表相對應的周期,于是當前圖表從第一根K到第N根K,

    ABC運行了1+2+3+4+......+N=(1+N)*N/2次,這將是一個天文數字,而在靜態測試情況下,當前代碼只運行了N次,

    關鍵是ABC被大量重復運行了。

     

    如果是動態行情下運行,只刷最后一根K,每秒刷新兩次,則每秒ABC要運行2*(N+1)次,在換K線時當前代碼還

    是會從頭到尾運行一次,則ABC會被運行1+2+3+4+.....N+N+1次,電腦基本動不了了。

     

    不知上述推斷是否為真。我的想法是,如果能實現在調用ABC時只運行一次,把A值形成數組,再運行當前代碼時直接根據數組下標引用就可以了。可否實現?

     

     

     

     

  • 金字塔客服: 用STKINDIEX,里面有限定引用周期數,而且現在逐k線模式的計算方式都有設定為僅刷最后一根k線,也就是最后一根k線會引用一次,進行N次計算

     

  • 用戶回復: 我自己檢測了一下,我上面的帖子理解有誤,實際情況是這樣的:
    一、當前公式是序列模式運行,被引用公式也是序列模式運行,那么兩個公式都只運行一次;二、當前公式是序列模式運行,被引用公式是逐K線模式運行,那么當前公式只運行一遍,被引用公式執行N次(假設被數據為N根K);三、當前公式是逐K線運行,被引用公式是序列模式運行時,當前公式運行N次,被引用公式只運行一次就遍歷周期把指標值全部算完,當前公式在逐K線運行時只是完成逐K線對應賦值,不會讓被引用公式多次運行;四、當前公式是逐K線運行,被引用公式也是逐K線運行,當前公式運行N次,被引用公式也是運行N次,而不是上述的(1+N)*N/2次。并且,在引用時有記憶功能。比如,IF BARPOS=100 THEN A:=STKINDI('RU00','ABC.A',0,DATAPERIOD);IF BARPOS=300 THEN B:=STKINDI('RU00','ABC.A',0,DATAPERIOD);第一次引用時,ABC會從RU00的第一根K運行到第100根K,運行了100次,第二次被引用時,ABC不是從第1根K運行到第300根K,而是從第101根K開始運行到第300根K(因為前面100根已經運行過了),運行了200次。
    在引用其它品種公式指標時,相當于是把兩個圖表疊加到一起,大致按K線個數(不按時間)  對齊。而對于STKINDIEX   函數只能在當前公式是逐K線模式下運行,其目的是為了強制被引用公式計算K線的根數不和當前圖表相同。在靜態測試情況下,這個函數無用。在動態行情接收時,由于每換一根K,當前公式都會從頭到尾運行一遍,造成被引用公式也會從頭到尾運行,效率大大降低,STKINDIEX就有用了,前提是不能影響交易信號。
    所以,效率的提高關鍵是被引用公式盡可能高效,能夠序列運行最好,不能序列運行應盡可能不寫不需要的代碼和輸出,只需要引用一個指標,就不要計算其它指標,因為在引用時每行代碼都會運行。
    以上測試結果供菜鳥們共勉。如何知道被引用公式運行了多少次,是如何執行的?我的方法是在被引用公式里面加上一句:MSGOUT(1,NUMTOSTR(BARPOS,0));

     

  • 網友回復: 勾選“僅刷最后K線”就行了

     

  • 網友回復: 對于動態行情接收狀態,經過我的反復測試,發現和靜態測試狀態不同,序列模式未必就好。一、當前公式是逐K(只刷新最后一根,以下同),被引用指標公式也是逐K模式,當前圖表換K線時,從頭到尾每根K線執行一遍當前公式,被引用公式也是從頭到尾執行一遍,這與與靜態測試結果一致。在當前沒有換K時,每接收一個TICK,當前公式和被引用公式都是執行一次,這就是所謂只刷新最后一根模式。
    二、當前是逐K線模式,被引用公式是序列模式時,當前公式的執行情況與上面一樣,被引用公式始終是每來一個TICK執行一次,不會從頭到尾執行。但是在動態情況下,序列模式所謂只執行一次是是如何運行的?后面還有測試。
    三、當前是序列模式,被引用公式也是序列模式,兩者都是每來一個TICK運行一次。(但我認為在實盤中這是最慢的方式,見下文)
    四、當前是序列模式,被引用公式是逐K線模式,問題來了。當前公式是每來一個TICK執行一次,但是被引用公式卻是始終每來一個TICK從頭到尾執行一遍,雖然被引用公式應該只刷新最后一根K。這種情況說明了序列模式在動態行情下的執行機制,雖然名義上刷新一次只執行一次,但是每執行一次都要求遍歷周期,所以才造成被引用公式每來個TICK都要從頭到尾執行。
    結論:所謂逐K線模式,是先從上到下執行公式語句,然后從左到右每個BAR重復執行該公式,并把每個BAR上每個變量的結果傳遞給下一個BAR;所謂序列模式,是每執行一句公式代碼都要從左到右遍歷周期,然后再執行下一句。在靜態測試情況下,序列模式可能效率占優。但是在動態行情接收狀態下,每來一個TICK兩者都要執行一遍公式,逐K模式只需要計算最后一個BAR的單值,但序列模式執行時仍然會遍歷周期求得變量的序列值(而不是一個單值)。顯然,只刷最后一根K線的逐K模式在實盤中效率更高。包括被引用公式,也應該用逐K模式,實盤中用STKINDIEX函數控制需引用的K線個數。

 

有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友

可聯系技術人員 QQ: 1145508240  有需要幫忙請點擊這里留言!!!進行 有償 編寫!不貴!點擊查看價格!


【字體: 】【打印文章】【查看評論

相關文章

    沒有相關內容
主站蜘蛛池模板: 99视频观看 | 尤物精品国产福利网站 | 一级爱爱片一级毛片-一毛 一级白嫩美女毛片免费 | 福利99 | 亚洲国产天堂在线mv网站 | 激情视频日本 | 一本大道加勒比久久综合 | 婷婷国产成人久久精品激情 | 亚洲国产综合专区在线播一一 | 国内精品久久久久影院一蜜桃 | 久久亚洲伊人中字综合精品 | 66精品综合久久久久久久 | 欧美成人香蕉网在线观看 | 深夜视频在线免费观看 | oldwoman中国老女人tv | 国产日产欧产美一二三区 | 亚洲人成绝费网站色ww | 超级乱淫视频播放日韩 | 免费黄色福利视频 | 日韩va| 国产成人18黄禁网站免费观看 | 久久国产高清字幕中文 | 午夜操一操 | jizzjizz中国丝袜美女 | 四影虎库最新2021 | 女人十六毛片 | 中文字幕在线亚洲精品 | 国产精品好好热在线观看 | 久久久噜噜噜www成人网 | 亚洲va在线va天堂成人 | 这里只有精品66 | 国产真实伦视频在线观看 | 久久99热只有视精品6国产 | 午夜欧美精品久久久久久久 | 欧美国产亚洲一区二区三区 | 久久中精品中文 | 春色www在线视频观看 | 九九中文字幕 | 欧美成人se01短视频在线看 | 台湾一级毛片免费播放 | 日日碰狠狠添天天爽对白 |