Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
lxi
Stały bywalec
Stały bywalec
Posty: 59
Rejestracja: 28 sty 2014, 14:04

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: lxi »

Wszystko jasne, tylko dlaczego na przykład komenda NormalizeDouble(1. 546, Digits), gdzie Digits jest równe 2 podaje na przykład 1.540000000001 ?

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Ponieważ NormalizeDouble() dotyczy wartości double, a Comment() jest string, więc tylko konwersja DoubleToString() przyniesie pożądany efekt.
NormalizeDouble() jest głównie do podawania cen do funkcji związanych z obsługą zleceń OrderSend() i OrderModify().
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

lxi
Stały bywalec
Stały bywalec
Posty: 59
Rejestracja: 28 sty 2014, 14:04

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: lxi »

Oki dzięki, spróbuję zatem z DoubleToString.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Inaczej ujmując, NormalizeDouble() jedynie normalizuje wartość double, a nie ma wpływu na to, co wyrzuci funkcja Comment(), która jest funkcją string.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

lxi
Stały bywalec
Stały bywalec
Posty: 59
Rejestracja: 28 sty 2014, 14:04

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: lxi »

Hejka, mam kolejny problem. Mam wskaźnik, który rysuje na wykresie strzałki i wartość tych strzałek wyświetla się w oknie danych.
Jeśli strzałka jest to bufor przechowuje jakąś wartość, jeśli strzałki nie ma to bufor przyjmuje wartość zero (nie EMPTY_VALUE).
Problem polega na tym, że mam strzałkę, której wartości nie umiem odczytać. Wydawać by się mogło, że należy odczytać bufor nr 24, ale niestety wyświetla się wartość zero.
1.png
Napisałem więc pętlę do wyszukania bufora, którego wartość jest rożna od zera i w ten sposób znaleźć bufor, który przechowuje moją wartość.
Dałem ograniczenie do 40 buforów. Niestety to też się nie udało, wszędzie wyświetlana jest wartość zero.

Kod: Zaznacz cały

for (int i=0; i<=40; i++)
   {
   Arrow = NormalizeDouble(iCustom(NULL, PERIOD_CURRENT, "Renko_Trade_Panel_Pro_Alarm_v1.0", i, 9),4);
   if (Arrow!=0)
      {
      Print("Wartość z bufora "+i+" = "+Arrow);
      break;
      }
   }
Ktoś ma pomysł jak sobie poradzić?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

W twoim kodzie odczytujesz wartość bufora "i" dla świecy index 9.
Czyli, że zrobiłeś pętlę, która odczytuje wartości buforów od 0 do 40, a pokaże tylko ostatnią w pętli, czyli z bufora 40.
Ponieważ nie zapisujesz tablicy, tylko zapisujesz jedną wartość.

Wartość bufora 24 z świecy o index "i" odczytujemy tak:

Kod: Zaznacz cały

for (int i=0; i<=limit; i++)
   {
   Arrow[i] = NormalizeDouble(iCustom(NULL, PERIOD_CURRENT, "Renko_Trade_Panel_Pro_Alarm_v1.0", 24,i),Digits);
   if (Arrow[i]!=0)
      {
      Print("Wartość z bufora "+i+" = "+Arrow[i]);
      break;
      }
   }
Natomiast, nie widzę czy funkcja iCustom() jest poprawnie napisana, bo nie mam tego wskaźnika.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Poza tym, to w specyfikacji pisze, że:
mode
[in] Line index. Can be from 0 to 7 and must correspond with the index, specified in call of the SetIndexBuffer() function.
więc nawet nie można odczytać buforu większego od 7.
Nie próbowałem takiej sztuczki.
Kiedyś maksymalna ilość buforów wynosiła 8, teraz jest 512.
Nie wiem, czy funkcja iCustom() jest teraz przystosowana do odczytu 512 buforów.
Nie piszą w specyfikacji.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

lxi
Stały bywalec
Stały bywalec
Posty: 59
Rejestracja: 28 sty 2014, 14:04

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: lxi »

Czegoś tu nie rozumiem, bo według mnie moja pętla wykonuje się do momentu znalezienia w jakimś buforze wartości różnej od zera.
Czyli gdy na przykład w 15 buforze znajdzie wartość 1.678 to warunek "if" zostanie spełniony.
Pętla zrobi printa : "Wartość z bufora 15 = 1.678" i wykona instrukcję break, co spowoduje wyjście z pętli i jej zakończenie.

Czy dobrze rozumiem?

Co do Twojego ostatniego posta - dzisiaj odczytywałem za pomocą iCustom wartość nawet z bufora 20 ale napotkałem problem powyżej 20:)

Przesyłam również wskaźnik, może wpadnie Ci coś w oko co ja przeoczyłem.
Problem pojawił się gdy w ustawieniach ustawiłem Scalp na TRUE. Pojawiły się nowe strzałki, których nie mogę odczytać.
Strzałki generowane przez Swing ustawione na TRUE odczytuję bez problemu.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

Za indyk dzięki, popatrzę.

W twojej iCustom() masz "i" w pozycji bufora, a w pozycji shift, czyli index świecy, masz 9.
No to twoja pętla czyta 40 buforów z świecy o index = 9.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

Awatar użytkownika
ninjaproject
Maniak
Maniak
Posty: 4944
Rejestracja: 30 lip 2019, 13:15

Re: Wszystkie pytania dozwolone początkujących programistów

Nieprzeczytany post autor: ninjaproject »

iCustom() masz źle napisaną.
Trzeba wprowadzić po kolei wszystkie parametry wskaźnika!
Twoja iCustom() bierze ustawienia domyślne wskaźnika, czyli takie, jak są przy pierwszym wrzuceniu wskaźnika na wykres.
Dlatego mogą być nie odczytywane bufory, lub mieć wartość 0.
Trejder, Mentor/trener, aka. Dadas, fx-technik, obecnie ninjaproject.
Programuję wskaźniki i EA do MetaTrader 4/5.

ODPOWIEDZ