PDA

Zobacz pełną wersję : pomoc wwskaźnik



dayasi39
08-23-2009 13:21, 13:21
Mam nadzieję, że ktoś tu może pomóc. Próbuję napisać wskaźnik, który powie mi, ile czasu pozostało w świecy.

Ale nie mogę się dowiedzieć, czy otrzymuję właściwe dane. Dostaję ogromną liczbę, której nie mogę przetłumaczyć na kilka minut.

Próbuję tego na wykresie 4-godzinnym (testowanie wsteczne, które dla czegoś, co powinno być tak proste, powinno być łatwe do wykonania).

Wstawiony kod #property indior_chart_window int init () {return (0); } int deinit () {return (0); } int start () {int counted_bars = IndiorCounted (); int limit; if (counted_barslt; 0) return (-1); datetime varLeft; limit = Bars-counted_bars-1; for (int shift = 0; shiftlt; limit; shift ) {varLeft = TimeCurrent () - Czas # 91; shift # 93 ;; Komentarz (varLeft, minuty pozostały do ​​końca paska); } return (0); }

Burespearc91
11-19-2021 08:21, 08:21
użyj tej funkcji: string TimeToStr (wartość datetime, int mode = TIME_DATE | TIME_MINUTES) Konwertuje wartość zawierającą czas w sekundach, który minął od 1 stycznia 1970 r., w postaci ciągu yyyy.mm.dd hh: mi. Parametry: wartość - dodatnia liczba sekund, które minęły od 00:00, 1 stycznia 1970 r. Tryb - Opcjonalny tryb wyprowadzania danych może być jednym lub kombinacją: TIME_DATE otrzymuje wynik jako rrrr.mm.dd, TIME_MINUTES otrzymuje wynik jako gg: mi, TIME_SECONDS otrzymuje wynik jako hh: mi: ss. Przykład: string var1 = TimeToStr (TimeCurrent (), TIME_DATE | TIME_SECONDS);

dayasi39
11-19-2021 09:42, 09:42
Dzięki, dostaje to w czytelnym formacie, ale na wykresie 4-godzinnym odlicza do końca dnia (użyłem TIME MINUTES). Jakieś pomysły?

Burespearc91
11-19-2021 11:02, 11:02
varLeft = (Time [shift] 1440) - TimeCurrent (); Poświęć czas na pasek, dodaj 4 godziny (1440 sekund), a następnie odejmij bieżący czas.

dayasi39
11-19-2021 12:23, 12:23
zwraca nieprawidłowy błąd czasu z komentarza. W przeciwnym razie otrzymuję zwykłą dużą liczbę.

Burespearc91
11-19-2021 13:44, 13:44
zwraca nieprawidłowy błąd czasu z komentarza. W przeciwnym razie otrzymuję zwykłą dużą liczbę.
Ups, nie myślał o tym, zwracając liczbę zbyt niską. Będziesz musiał wykonać matematykę, aby przekształcić pozostałe sekundy w minuty i sekundy. varLeft będzie zawierał liczbę sekund do końca świecy.

dayasi39
11-19-2021 15:05, 15:05
cóż, oto kod, który działa, rodzaj. W teście wstecznym timecurrent () pobiera ostatni czas serwera, a nie aktualny czas testera. Chciałbym móc to naprawić. aby użyć czasu testera, mógłbym odpowiednio przetestować mój EA. Wstawiony kod/ --------------------------------------------- --------------------- /| Candle_Remaining_Time.mq4 |/| Copyright © 2009, MetaQuotes Software Corp./| # 91; url # 93; http:/www.metaquotes.net#91;url # 93; |/ ----------------------------------------------- ------------------- #property copyright Copyright © 2009, MetaQuotes Software Corp. #property link # 91; url # 93; http:/www.metaquotes.net # 91;url # 93; #property indior_chart_window/ -------------------------------------------- ---------------------- /| Funkcja inicjalizacji wskaźnika niestandardowego |/ ----------------------------------------------- ------------------- int init () {//---- wskaźniki/---- return (0); }/ ---------------------------------------------- -------------------- /| Indywidualna funkcja deinicjalizacji wskaźnika |/ ----------------------------------------------- ------------------- int deinit () {//----/---- return (0); }/ ---------------------------------------------- -------------------- /| Funkcja iteracji wskaźnika niestandardowego |/ ----------------------------------------------- ------------------- int start () {int counted_bars = IndiorCounted (); int limit; if (counted_barslt; 0) return (-1); datetime varLeft; int varBarday, varBarhour, varBarminute, varCurday, varCurhour, varCurminute; int varRy, varRemhour, varRemminute; limit = Bars-counted_bars-1; for (int shift = 0; shiftlt; limit; shift ) {varBarday = TimeDay (czas # 91; shift # 93;); varBarhour = TimeHour (Czas # 91; shift # 93;); varBarminute = TimeMinute (czas # 91; shift # 93;); varCurday = TimeDay (TimeCurrent ()); varCurhour = TimeHour (TimeCurrent ()); varCurminute = TimeMinute (TimeCurrent ()); varRy = varCurday-varBarday; varRemhour = varCurhour-varBarday; varRemminute = varCurminute-varBarminute; Komentarz (varRy, dni, varRemhour, godziny, varRemminute, minuty do końca świecy); } return (0); }/ ---------------------------------------------- --------------------