Cách nhận chỉ báo giá trị trong một thời gian cụ thể hàng ngày
Results 1 to 8 of 8

Thread: Cách nhận chỉ báo giá trị trong một thời gian cụ thể hàng ngày

  1. #1
    Như tiêu đề cho thấy, tôi cần lấy giá trị của một chỉ báo tùy chỉnh, tại một thời điểm cụ thể hàng ngày để ngoại suy giá trị trung bình. Tôi đã thử mã sau đây, nó hoạt động, nhưng làm cách nào để lặp lại nó cho mỗi ngày? Cảm ơn trước.

    cho (i = 0; ilt; Bars; i )
    {
    giá trị kép = iCustom (0, 0, i);
    if (Time [i] gt; StrToTime (2019.11.15 15:00) Thời gian [i] lt; StrToTime (2019.11.15 18:00))
    {
    tiếp = 1;
    sum = giá trị;
    trung bình = sumtt;
    }
    }

  2. #2

    Quote Originally Posted by ;
    Dani, cách tiếp cận của bạn và cách được đề xuất bởi paulselvan quá phức tạp. Không cần vòng lặp và không cần so sánh thời gian theo cách thủ công. sử dụng
    https://www.mql5.com/en/docs/series/ibarshiftvới khung thời gian mục tiêu của bạn để tìm thanh của khung thời gian mục tiêu mà bạn muốn sử dụng
    https://www.mql5.com/en/docs/indicators/icustomvới thanh được trả về bởi iBarShift () để lấy giá trị chỉ báo tùy chỉnh về thời gian chính xác trong ngày mà bạn muốn Vòng lặp sẽ làm cho chương trình của bạn chậm và dễ bị lỗi. Tránh chúng bất cứ khi nào ...
    Hoàn toàn đồng ý, Làm việc với iCustom và iBarShift theo cách hiệu quả hơn. Chỉ báo bộ đệm sau này có thể được thêm với #resource và được gọi theo ví dụ để giảm số tệp trong 1 Mã được chèn #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); double _AvgDist = iCustom (_Symbol, CheckTime, :: Indicators \\ CallIndicator.ex4, Type, CheckPeriod, 0, y); }

  3. #3
    Dani, cách tiếp cận của bạn và cách được đề xuất bởi paulselvan quá phức tạp. Không cần vòng lặp và không cần so sánh thời gian theo cách thủ công.
    https://www.mql5.com/en/docs/series/ibarshiftvới khung thời gian mục tiêu của bạn để tìm thanh của khung thời gian mục tiêu mà bạn muốn sử dụng
    https://www.mql5.com/en/docs/indicators/icustomvới thanh được trả về bởi iBarShift () để nhận giá trị chỉ báo tùy chỉnh về thời gian chính xác trong ngày mà bạn muốn Vòng lặp sẽ làm cho chương trình của bạn chậm và dễ xảy ra lỗi. Tránh chúng bất cứ khi nào bạn có thể. Đặc biệt là khi có các chức năng tiêu chuẩn để đạt được như nhau.

  4. #4

  5. #5
    cũng có trong tài khoản mn Đã chèn Mã int counter = 0; int mn, prd = PERIOD_M1;/để kiểm tra mn cũng 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 trung bình kép, giá trị = 0; kiểm tra ngày giờ; MqlDateTime mT; for (int day = day_begin; daylt; day_end; day ) {//kiểm tra 10 ngày qua candels TimeToStruct (iTime (_Symbol, PERIOD_D1, day), mT); for (int hr = hr_begin; hrlt; hr_end; hr ) {//kiểm tra giờ từ 15:00 đến 18:00 mT.hour = hr; mn = 0; while (mnlt; 60) {mT.min = mn; Kiểm tra thời gian = StructToTime (mT);/value = iCustom (_Symbol, prd, .., iBarShift (_Symbol, prd, checksTime)); mn = prd;/bộ đếm nến kỳ sau ; }} if (counter! = 0) average = valuecounter; khác trung bình = 0; }

  6. #6
    bạn có thể sử dụng biến MqlDateTime để dễ tính toán trung bình Mã đã chèn int day_begin = 0, day_end = 149, hr_begin = 15, hr_end = 18; giá trị kép = 0; kiểm tra ngày giờ; MqlDateTime mT; for (int day = day_begin; daylt; = day_end; day ) {//kiểm tra 150 ngày qua TimeToStruct (iTime (_Symbol, PERIOD_D1, day), mT); for (int hr = hr_begin; hrlt; hr_end; hr ) {//chỉ kiểm tra giờ từ 15:00 đến 18:00 mT.hour = hr; Kiểm tra thời gian = StructToTime (mT); value = iCustom (_Symbol, _Period, indicator_name, .., iBarShift (_Symbol, _Period, checksTime)); }} double average = (day_end-day_end 1) * (hr_end - hr_begin 1); if (trung bình gt; 0) trung bình = giá trịtrung bình; khác trung bình = 0;

  7. #7
    cảm ơn paulselvan, nó hoạt động ... nhưng chỉ cho các thanh giờ (15:00, 16:00 ...) tôi nên thay đổi những gì để nhận được cả dữ liệu phút?

  8. #8

    Quote Originally Posted by ;
    Dani, cách tiếp cận của bạn và cách được đề xuất bởi paulselvan quá phức tạp. Không cần vòng lặp và không cần so sánh thời gian theo cách thủ công.
    https://www.mql5.com/en/docs/series/ibarshiftvới khung thời gian mục tiêu của bạn để tìm thanh của khung thời gian mục tiêu mà bạn muốn sử dụng
    https://www.mql5.com/en/docs/indicators/icustomvới thanh được trả về bởi iBarShift () để nhận giá trị chỉ báo tùy chỉnh về thời gian chính xác trong ngày mà bạn muốn Vòng lặp sẽ làm cho chương trình của bạn chậm và dễ bị ...
    Quote Originally Posted by ;
    Hoàn toàn đồng ý, Làm việc với iCustom và iBarShift theo cách hiệu quả hơn. Chỉ báo bộ đệm sau này có thể được thêm với #resource và được gọi theo ví dụ để giảm số tệp xuống 1
    Tôi đã nhận ra chỉ số này với lời khuyên của paulselvan và xem xét rằng tôi chỉ sử dụng nó định kỳ để kiểm tra mức trung bình của khối lượng mà tôi không gặp vấn đề gì khi giảm tốc độ. Tuy nhiên, tôi cảm ơn cả hai vì những lời khuyên quý giá, và tôi chắc chắn sẽ cố gắng tạo ra một phiên bản nhẹ hơn. Cảm ơn một lần nữa

Quyền đăng bài

  • Bạn không thể đăng bài viết mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng tệp đính kèm
  • Bạn không thể chỉnh sửa bài đăng của bạn
  •  
Chính sách Cookie
Chính sách Cookie: Website forexibroker sử dụng cookies và khi tiếp tục sử dụng website bạn chấp thuận với điều này. Để có thêm thông tin, vui lòng đọc 'Thông tin Cookie'.