如何獲取每天特定時間的數值指標
Results 1 to 8 of 8

Thread: 如何獲取每天特定時間的數值指標

  1. #1
    正如標題所示,我需要在每天的特定時間獲取自定義指標的值以推斷平均值。我嘗試了以下代碼,它有效,但我如何每天重複它?提前致謝。

    for(i=0; ilt;酒吧; i )
    {
    雙值=iCustom(0, 0, i);
    if (Time[i]gt;StrToTime(2019.11.15 15:00) Time[i]lt;StrToTime(2019.11.15 18:00))
    {
    續 =1;
    總和 =值;
    平均值=總和/續;
    }
    }

  2. #2

    Quote Originally Posted by ;
    Dani,您的方法和 paulselvan 提出的方法太複雜了。不需要循環,也不需要手動比較時間。利用
    https://www.mql5.com/en/docs/series/ibarshift使用您的目標時間範圍來找到您要使用的目標時間範圍的條形圖
    https://www.mql5.com/en/docs/indicators/icustom使用 iBarShift() 返回的條形來獲取您想要的一天中確切時間的自定義指標值 循環將使您的程序變慢並且容易出錯。任何時候都避開它們...
    完全同意,使用 iCustom 和 iBarShift 更有效的方式。稍後的緩衝區指示器可以添加 #resource 並通過示例調用以將文件編號減少到 1 插入代碼 #resource CallIndicator.ex4 extern ENUM_TIMEFRAMES CheckTime = PERIOD_D1; for(int i = CheckPeriod 1; i gt;= 0 ; --i) { datetime HighTF = iTime(_Symbol,PERIOD_CURRENT,i); int y = iBarShift(_Symbol,CheckTime,HighTF);雙 _AvgDist = iCustom(_Symbol, CheckTime,::Indicators\\CallIndicator.ex4,Type,CheckPeriod,0,y); }

  3. #3
    Dani,您的方法和 paulselvan 提出的方法太複雜了。不需要循環,也不需要手動比較時間。使用
    https://www.mql5.com/en/docs/series/ibarshift使用您的目標時間範圍來找到您要使用的目標時間範圍的條形圖
    https://www.mql5.com/en/docs/indicators/icustom使用 iBarShift() 返回的條形來獲取您想要的一天中確切時間的自定義指標值循環將使您的程序變慢並且容易出錯。盡可能避免它們。特別是當有標準功能來實現相同的功能時。

  4. #4

  5. #5
    還要考慮 mn 插入代碼 int counter=0; int mn, prd=PERIOD_M1;//也測試 mn int day_begin=0, day_end=9;//prd limitgt; day_end gt;= day_begin gt;=0 int hr_begin=15, hr_end=18;//24gt; hr_end gt;= hr_begin gt;=0 雙平均,值=0;日期時間檢查時間; MqlDateTime mT; for (int day=day_begin; daylt;day_end; day ){//測試過去 10 天 candels TimeToStruct(iTime(_Symbol, PERIOD_D1, day), mT); for(int hr=hr_begin; hrlt;hr_end; hr ){//檢查從 15:00 到 18:00 的時間 mT.hour = hr; mn=0;而 (mnlt;60){ mT.min=mn;檢查時間 = StructToTime(mT);/值 = iCustom(_Symbol,prd, ..,iBarShift(_Symbol,prd,checkingTime)); mn =prd;//下期蠟燭計數器 ; } } if (counter !=0) average = value/counter;否則平均值=0; }

  6. #6
    您可以使用 MqlDateTime 變量來簡化計算平均插入代碼 int day_begin=0, day_end=149, hr_begin=15, hr_end=18;雙值=0;日期時間檢查時間; MqlDateTime mT; for (int day=day_begin; daylt;=day_end; day ){//測試過去 150 天 TimeToStruct(iTime(_Symbol, PERIOD_D1, day), mT); for(int hr=hr_begin; hrlt;hr_end; hr ){//僅檢查從 15:00 到 18:00 的小時數 mT.hour = hr;檢查時間 = StructToTime(mT); value = iCustom(_Symbol,_Period,indicator_name,..,iBarShift(_Symbol,_Period,checkingTime)); } } 雙平均 = (day_end-day_end 1)*(hr_end - hr_begin 1); if (average gt;0) 平均值 = 值/平均值;否則平均值=0;

  7. #7
    感謝 paulselvan,它可以工作...但僅適用於小時欄(15:00、16:00...)我應該更改什麼以獲得分鐘數據?

  8. #8

    Quote Originally Posted by ;
    Dani,您的方法和 paulselvan 提出的方法太複雜了。不需要循環,也不需要手動比較時間。使用
    https://www.mql5.com/en/docs/series/ibarshift使用您的目標時間範圍來找到您要使用的目標時間範圍的條形圖
    https://www.mql5.com/en/docs/indicators/icustom使用 iBarShift() 返回的條形來獲取您想要的一天中確切時間的自定義指標值 循環將使您的程序緩慢且容易...
    Quote Originally Posted by ;
    完全同意,使用 iCustom 和 iBarShift 更有效的方式。稍後的緩衝區指示器可以添加 #resource 並通過示例調用以將文件編號減少到 1
    在 paulselvan 的建議下,我已經實現了該指標,並且考慮到我只是定期使用它來檢查交易量的平均值,因此放慢速度沒有問題。但是,我感謝你們的寶貴建議,我一定會嘗試創建一個更輕的版本。再次感謝

發布權限

  • 您不可發布新主題
  • 您不可回复
  • 您不可發布附件
  • 您不可編輯您的帖子
  •  
  • BB代碼是打開的
  • 表情符號是打開的
  • [IMG]代碼是打開的
  • [視頻]代碼是打開的
  • HTML代碼是關閉的
forex-pedia網站使用cookie 文字跟蹤
forex-pedia.com網站使用cookie 文字跟蹤,某些設定已經固定。您可以點擊此處閱讀我們的Cookie使用說明。 請點擊右鍵接受我們的cookies。如果您選擇繼續使用forex-pedia.com網站,我們將認為您接受我們的cookies。