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

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

開拓者兩個波峰和波谷的程序源碼 [開拓者 TB]

  • 咨詢內容: 我編了一段求前兩個波峰和波谷的程序(可在交易指令下測試),
    但效果還不滿意,希望能得到高手的改進,謝謝!
    1. Params

    2.         Numeric MyMinLength(5);

    3.         // GV10 最近波峰與當前Bar的Bar計數

    4.         // GV11 最近波峰的值

    5.         // GV12 最近波谷與當前Bar的Bar計數

    6.         // GV13 最近波谷的值

    7.         // GV14 前一個波峰與當前Bar的Bar計數

    8.         // GV15 前一個波峰的值

    9.         // GV16 前一個波谷與當前Bar的Bar計數

    10.         // GV17 前一個波谷的值

    11.        

    12. Vars

    13.         Numeric MyLength;

    14.         Numeric MyHighBar;

    15.         Numeric MyHigh;

    16.         Numeric MyLow;

    17.         Numeric MyLowBar;

    18. Begin

    19.  

    20.         If (BarStatus==0)

    21.         {        SetGlobalVar(10,0); SetGlobalVar(11,High); //最近波峰Bar,High

    22.                 SetGlobalVar(12,0); SetGlobalVar(13,Low);  //最近波谷Bar,Low

    23.                 SetGlobalVar(14,0); SetGlobalVar(15,High);

    24.                 SetGlobalVar(16,0); SetGlobalVar(17,Low);

    25.         }

    26.        

    27.         MyLength = GetGlobalVar(12)+1;//取上一波谷到當前Bar的個數

    28.         MyLength = IIF(MyLength<=MyMinLength,MyMinLength+1,MyLength);//至少保持最小的波峰距離為5個Bar

    29.         MyHighBar = HighestBar(High,MyLength);

    30.         MyHigh = Highest(High,MyLength);

    31.        

    32.         If (GetGlobalVar(10)+1-MyHighBar>=MyMinLength or MyHigh>GetGlobalVar(11))

    33.         {        If (GetGlobalVar(10)+1-MyHighBar>=MyMinLength)

    34.                 {        SetGlobalVar(14,GetGlobalVar(10)); //保留前一個波峰

    35.                         SetGlobalVar(15,GetGlobalVar(11));

    36.                 }

    37.                 SetGlobalVar(10,MyHighBar);//從上個低谷開始的最高價所在的Bar序數

    38.                 SetGlobalVar(11,MyHigh);   //從上個低谷開始的最高價

    39.         } Else SetGlobalVar(10,GetGlobalVar(10)+1);

    40.  

    41.         MyLength = GetGlobalVar(10)+1;//取上一波峰到當前Bar的個數

    42.         MyLength = IIF(MyLength<MyMinLength,MyMinLength+1,MyLength);

    43.         MyLowBar = LowestBar(Low,MyLength);

    44.         MyLow = Lowest(Low,MyLength);

    45.         If (GetGlobalVar(12)+1-MyLowBar>=MyMinLength or MyLow<GetGlobalVar(13))

    46.         {        If (GetGlobalVar(12)+1-MyLowBar>=MyMinLength)

    47.                 {        SetGlobalVar(16,GetGlobalVar(12)); //保留前一個波谷

    48.                         SetGlobalVar(17,GetGlobalVar(13));

    49.                 }

    50.                 SetGlobalVar(12,MyLowBar);//從上個波峰開始的最低價所在的Bar序數

    51.                 SetGlobalVar(13,MyLow);//從上個波峰開始的最低價

    52.         } Else SetGlobalVar(12,GetGlobalVar(12)+1);

    53.  

    54.         //驗證顯示

    55.         Commentary("CurrBar "+Text(CurrentBar));

    56.         Commentary("HighestNear "+Text(GetGlobalVar(11))+" Bar "+Text(GetGlobalVar(10)));

    57.         Commentary("LowestNear  "+Text(GetGlobalVar(13))+" Bar "+Text(GetGlobalVar(12)));

    58.         Commentary("HighestFar  "+Text(GetGlobalVar(15))+" Bar "+Text(GetGlobalVar(14)));

    59.         Commentary("LowestFar   "+Text(GetGlobalVar(17))+" Bar "+Text(GetGlobalVar(16)));

    60.        

    61. End

     

  • TB技術人員: 請教為什么在實時(BarStatus==2)時,最后一個Bar的計算值的不對的,請高手幫助。謝謝!

     

  • TB客服: 最后一個bar的high和low不斷在變化,所以有可能不對的

     

  • 網友回復: 本帖最后由 efrog 于 2010-9-8 20:45 編輯

    謝謝,問題就出在這里。增加了BarStatus==1的限制,讓最后一個Bar不參與計算,問題就解決了。
    實際上最后Bar的High與Low要參與波峰、波谷的比較,在比較之前還不能直接修正目前的波峰、波谷。
    修正的程序如下:
    1. Params

    2.         Numeric MyMinLength(5);

    3.         // GV10 最近波峰與當前Bar的Bar計數

    4.         // GV11 最近波峰的值

    5.         // GV12 最近波谷與當前Bar的Bar計數

    6.         // GV13 最近波谷的值

    7.         // GV14 前一個波峰與當前Bar的Bar計數

    8.         // GV15 前一個波峰的值

    9.         // GV16 前一個波谷與當前Bar的Bar計數

    10.         // GV17 前一個波谷的值

    11. Vars

    12.         Numeric MyLength;

    13.         Numeric MyHighBar;

    14.         Numeric MyHigh;

    15.         Numeric MyLow;

    16.         Numeric MyLowBar;

    17. Begin

    18.         If (BarStatus==0)

    19.         {        SetGlobalVar(10,0); SetGlobalVar(11,High); //最近波峰Bar,High

    20.                 SetGlobalVar(12,0); SetGlobalVar(13,Low);  //最近波谷Bar,Low

    21.                 SetGlobalVar(14,0); SetGlobalVar(15,High);

    22.                 SetGlobalVar(16,0); SetGlobalVar(17,Low);

    23.         }

    24.        

    25.         If (BarStatus==1)

    26.         {        MyLength = GetGlobalVar(12)+1;//取上一波谷到當前Bar的個數

    27.                 MyLength = IIF(MyLength<=MyMinLength,MyMinLength+1,MyLength);//至少保持最小的波峰距離為5個Bar

    28.                 MyHighBar = HighestBar(High,MyLength);

    29.                 MyHigh = Highest(High,MyLength);

    30.        

    31.                 If (GetGlobalVar(10)+1-MyHighBar>=MyMinLength or MyHigh>GetGlobalVar(11))

    32.                 {        If (GetGlobalVar(10)+1-MyHighBar>=MyMinLength)

    33.                         {        SetGlobalVar(14,GetGlobalVar(10)); //保留前一個波峰

    34.                                 SetGlobalVar(15,GetGlobalVar(11));

    35.                         }

    36.                         SetGlobalVar(10,MyHighBar+1);//從上個低谷開始的最高價所在的Bar序數

    37.                         SetGlobalVar(11,MyHigh);   //從上個低谷開始的最高價

    38.                 } Else SetGlobalVar(10,GetGlobalVar(10)+1);

    39.  

    40.                 MyLength = GetGlobalVar(10)+1;//取上一波峰到當前Bar的個數

    41.                 MyLength = IIF(MyLength<MyMinLength,MyMinLength+1,MyLength);

    42.                 MyLowBar = LowestBar(Low,MyLength);

    43.                 MyLow = Lowest(Low,MyLength);

    44.                 If (GetGlobalVar(12)+1-MyLowBar>=MyMinLength or MyLow<GetGlobalVar(13))

    45.                 {        If (GetGlobalVar(12)+1-MyLowBar>=MyMinLength)

    46.                         {        SetGlobalVar(16,GetGlobalVar(12)); //保留前一個波谷

    47.                                 SetGlobalVar(17,GetGlobalVar(13));

    48.                         }

    49.                         SetGlobalVar(12,MyLowBar+1);//從上個波峰開始的最低價所在的Bar序數

    50.                         SetGlobalVar(13,MyLow);//從上個波峰開始的最低價

    51.                 } Else SetGlobalVar(12,GetGlobalVar(12)+1);

    52.         }

    53.         //驗證顯示

    54.         Commentary("CurrBar "+Text(CurrentBar));

    55.         Commentary("HighestNear "+Text(GetGlobalVar(11))+" Bar "+Text(GetGlobalVar(10)));

    56.         Commentary("LowestNear  "+Text(GetGlobalVar(13))+" Bar "+Text(GetGlobalVar(12)));

    57.         Commentary("HighestFar  "+Text(GetGlobalVar(15))+" Bar "+Text(GetGlobalVar(14)));

    58.         Commentary("LowestFar   "+Text(GetGlobalVar(17))+" Bar "+Text(GetGlobalVar(16)));

    59. End
    復制代碼

     

  • 網友回復:目前還有二個問題:
     (1)HighestFar、LowestFar的Bar計算有問題
  •  (2)由于使用了Highest和Lowest用戶函數,當最遠的Bar前有更高或更低值時,這兩個函數找到的并不是波峰和波谷。 

 

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

可聯系技術人員 QQ: 262069696  點擊在線交流進行 有償 編寫!不貴!點擊查看價格!


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

相關文章

主站蜘蛛池模板: 日韩中文字幕在线看 | 成人一级免费视频 | 亚洲一区二区三区中文字幕 | 五月开心婷婷 | 亚洲一区二区精品视频 | 欧美另类videos粗暴黑人 | 毛片看| 亚洲综合日韩中文字幕v在线 | 亚洲精品视 | 开心久久婷婷综合中文字幕 | 久久er国产精品免费观看2 | 最新国产在线精品91尤物 | 日日操网站 | 97福利视频| 麻豆精品久久久一区二区 | 香蕉视频看片 | 欧美久久超级碰碰碰二区三区 | 久久亚洲精品一区二区三区浴池 | 亚洲国产成人久久综合一 | 精品国产免费久久久久久婷婷 | 婷婷色基地 | 国产精品久久久久久爽爽爽 | 九九综合九九 | 国产一级在线免费观看 | 中文字幕亚洲精品久久 | 亚洲精品视频一区二区 | 国产你懂得 | 欧美一级色 | 久久中文字幕免费视频 | 曰本性l交片视频视频 | 久久爱噜噜噜噜久久久网 | 青草99| 2020年国产高中毛片在线视频 | 狠狠色噜噜狠狠狠狠色综合久 | 91在线网站 | 一级a俄罗斯毛片免费 | 亚洲无线码一区在线观看 | 国产欧美一区二区精品性色99 | 日本精品99 | 亚洲va精品中文字幕动漫 | 亚洲人成一区二区三区 |