您現在的位置:程序化交易>> 期貨公式>> 交易開拓者(TB)>> 開拓者知識>>正文內容

Extremes 解讀求極值函數,測試能否玩TB [開拓者 TB]

  • 咨詢內容: 有朋友問如何學好TB?我說要讀懂公式指南,然后靠聯機幫助,然后看編程能力和邏輯思維的天賦,然后...
    我給個系統函數,讓她讀,懂了,再問說不出所以然來。
    后來我一一作了注釋,總算讀懂了,呵呵

    試試看,如果能完全讀懂,就可以學TB了。
    讀懂的,請回復...
    1. //------------------------------------------------------------------------
    2. // 簡稱: Extremes
    3. // 名稱: 求極值
    4. // 類別: 用戶函數
    5. // 類型: 內建函數
    6. // 輸出: 數值型      (返回極值和引用型極值位置)
    7. //------------------------------------------------------------------------

    8. Params
    9.         NumericSeries Price(1); //序列傳遞參數,如Close;如果不指定參數,那Price的初始值均為1(實在沒有意義)
    10.         Numeric Length(10);        //指定搜索的范圍(即搜索多少個Bar,缺省10個)
    11.         Bool bMax(True);        //指定搜索極大值(缺省True)或極小值(False)
    12.         NumericRef ExtremeBar; //數值型引用變量,用于返回搜索范圍內的極值Bar位置;而極值以函數返回(見Return MyVal;)
    13. Vars
    14.         NumericSeries MyVal; //保存極值的序列
    15.         NumericSeries MyBar; //保存極值所在Bar的序列
    16.         Numeric i; //搜索變量
    17. Begin
    18.         MyVal = Price; //每個新Bar的價格均要賦值給極值序列,但在計算后該值將被更新為新的極值
    19.         MyBar = 0; //假定新Bar是極值,但在計算后該值將被更新為新的極值Bar
    20.        
    21.         // 在頭(Length-1)Bar內要全部搜索一邊;或者極值在搜索邊界上(==Length-1),下一個Bar后極值被擠出搜索范圍,這時要重新搜索出新的極值;
    22.         If ( CurrentBar <= Length - 1 || MyBar[1] == Length - 1)
    23.         {
    24.                 for i = 1 to Length - 1 //搜索一邊指定范圍,如10,則要向后搜Bar1到Bar9;i=1是因為Bar0(myVal)沒有必要與自己比較
    25.                 {
    26.                         If (bMax ) //找新的最大值
    27.                         {
    28.                                 If ( Price[i] > MyVal) //找到比當前最大值更大的價格
    29.                                 {
    30.                                         MyVal = Price[i]; //更新最大值
    31.                                         MyBar = i;        //同時更新最大值的位置
    32.                                 }
    33.                         }Else //找最小值的情況類似
    34.                         {
    35.                                 If ( Price[i] < MyVal)
    36.                                 {
    37.                                         MyVal = Price[i];
    38.                                         MyBar = i;
    39.                                 }
    40.                         }
    41.                 }       
    42.         }
    43.         Else // 當前Bar頭(Length-1)之后,并且極值在搜索邊界內(< Length-1),則僅進行當前價與極值進行比較
    44.         {
    45.                 If ( bMax ) //搜索最大值
    46.                 {
    47.                         If ( Price >= MyVal[1]) //當前價不小于原最大價,找到新的最大價;注意用了>=而不是==
    48.                         {
    49.                                 MyVal = Price;  //當前價是新的最大值
    50.                                 MyBar = 0;                //CurrentBar為0
    51.                         }Else
    52.                         {
    53.                                 MyVal = MyVal[1];                //最新價小于原最大值,因此保持原最大值
    54.                                 MyBar = MyBar[1] + 1;        //最大值的位置遠離了1位
    55.                         }
    56.                 }Else //最小值情況類似
    57.                 {
    58.                         If ( Price <= MyVal[1])
    59.                         {
    60.                                 MyVal = Price;
    61.                                 MyBar = 0;
    62.                         }Else
    63.                         {
    64.                                 MyVal = MyVal[1];
    65.                                 MyBar = MyBar[1] + 1;
    66.                         }
    67.                 }
    68.         }       
    69.         ExtremeBar = MyBar; //將極值傳遞給數值型引用變量,用于返回極值的位置
    70.         Return MyVal; //函數返回要求搜索的極值
    71. End

    72. //------------------------------------------------------------------------
    73. // 編譯版本        GS2010.12.08
    74. // 用戶版本        2012/05/11 21:47
    75. // 版權所有        guqf
    76. // 更改聲明        TradeBlazer Software保留對TradeBlazer平臺
    77. //                        每一版本的TrabeBlazer公式修改和重寫的權利
    78. //------------------------------------------------------------------------

     

  • TB技術人員: 求注解函數NthCon,謝謝!

     

  • TB客服: 同求注解函數NthCon,謝謝!

     

  • 網友回復: 老革命遇到新問題
    MaxValDn= Extremes(Close,nLength,true, MaxBarDn); Commentary("MaxBarDn "+Text(MaxBarDn));
    MinValDn= Extremes(Close,MaxBarDn,False,MinBarDn); Commentary("MinBarDn "+Text(MinBarDn));
    nLength是30,第一句是求30個Bar內的最高價和對應的位置MaxBarDn,顯示結果是14,檢查K線圖形正確。
    但問題出現在第二句,原意是求出現最高價位之內的最低價位置,結果MinBarDn超出了14,不可思議!
    但是將第二句改成:MinValDn= Extremes(Close,14,False,MinBarDn); Commentary("MinBarDn "+Text(MinBarDn));
    計算出的MinBarDn為0,正確!是在最低位。
    為什么用MaxBarDn作為檢索變量就會出錯,請管理員幫助檢查原因,謝謝!

 

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

可聯系技術人員 QQ: 511411198  點擊這里給我發消息進行 有償 編寫!不貴!點擊查看價格!


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

相關文章

    沒有相關內容
主站蜘蛛池模板: 午夜伦伦影理论片大片| 中文字幕曰产乱码| 狠狠躁天天躁无码中文字幕| 国产在线观看无码免费视频| 97精品国产97久久久久久免费| 打开腿给医生检查黄文| 亚洲va欧美va国产综合| 特级aaaaaaaaa毛片免费视频| 国产一级淫片a免费播放口之| 2020欧美极品hd18| 大屁股熟女一区二区三区| 中文字幕日韩三级| 日韩美视频网站| 亚洲日本va午夜中文字幕一区| 精品丝袜国产自在线拍亚洲| 国产乱人视频在线播放| 香蕉在线精品视频在线观看6| 夫妇当面交换中文字幕小说| 久久99精品一久久久久久| 校花公交车上被迫打开双腿| 亚洲精品美女久久777777| 美女女女女女女bbbbbb毛片 | 精品国产一区二区三区av片| 国产在视频线精品视频2021| 18禁裸体动漫美女无遮挡网站 | 妖精色AV无码国产在线看| 久久人午夜亚洲精品无码区| 欧美亚洲国产精品久久久久| 亚洲线精品一区二区三区 | 在线一区免费视频播放| 一级一级女人真片| 日本三级做a全过程在线观看| 亚州av综合色区无码一区| 欧美牲交a欧美牲交aⅴ免费真| 免费a级毛片在线播放| 美女被狂揉下部羞羞动漫| 国产国产在线播放你懂的| 色老板在线视频一区二区| 国产黄色app| a毛片全部免费播放| 少妇伦子伦精品无码styles|