Suma wartości bezwzględnych.
Suma wartości bezwzględnych.
Witam.
Pracuje nad wlasnym EA. Nie bardzo programuje a przerabiam cos co powstalo kiedys przy pomocy osoby, ktora sie na tym zna. Mam mala przeszkode do pokonania. EA opiera sie na korelacji par. Jest w nim wskaznik, ktory ustawiony jest do obserwowania kilku par. Chodzi mi o zsumowanie tych wskaznikow i podzielenie tego przez ilosc wskaznikow. w ten sposob otrzymam srednia. No i to ma byc suma wartosci bezwzlednych poniewaz wskaznik generuje wartosci tak ujemne jak i dodatnie. Ja chce okreslic tylko sile, za kierunek odpowiada inny wskaznik. Wg mnie to cos takiego:
Ws1= 2
Ws2=-1
Ws3=7
Ws4=-4
(wbWs1+wbWs2+wbWs3+wbWs4)/4=(2+1+7+4)/4= 3.5
Prosze o przetlumaczenie tego na MQL
Pracuje nad wlasnym EA. Nie bardzo programuje a przerabiam cos co powstalo kiedys przy pomocy osoby, ktora sie na tym zna. Mam mala przeszkode do pokonania. EA opiera sie na korelacji par. Jest w nim wskaznik, ktory ustawiony jest do obserwowania kilku par. Chodzi mi o zsumowanie tych wskaznikow i podzielenie tego przez ilosc wskaznikow. w ten sposob otrzymam srednia. No i to ma byc suma wartosci bezwzlednych poniewaz wskaznik generuje wartosci tak ujemne jak i dodatnie. Ja chce okreslic tylko sile, za kierunek odpowiada inny wskaznik. Wg mnie to cos takiego:
Ws1= 2
Ws2=-1
Ws3=7
Ws4=-4
(wbWs1+wbWs2+wbWs3+wbWs4)/4=(2+1+7+4)/4= 3.5
Prosze o przetlumaczenie tego na MQL
Nikt nie planuje przegrywac, ale wielu przegrywa bo nie planuje.
Sam sobie przetłumaczyłeśralbet pisze:Ws1= 2
Ws2=-1
Ws3=7
Ws4=-4
(wbWs1+wbWs2+wbWs3+wbWs4)/4=(2+1+7+4)/4= 3.5
Prosze o przetlumaczenie tego na MQL
Kod: Zaznacz cały
double wynik=(MathAbs(Ws1)+MathAbs(Ws2)+MathAbs(Ws3)+MathAbs(Ws4))/4;
MathAbs(X) - zwraca wartość bezwzględną z X
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Dzieki wielkie.
Czy moglbys podpowiedziec jeszcze gdzie wrzucic klamry?
Wpisalem to:
po kompilacji wyskoczyl warning:
exspression on global scope not allowed
Czy moglbys podpowiedziec jeszcze gdzie wrzucic klamry?
Wpisalem to:
Kod: Zaznacz cały
{
double wynik=(MathAbs(mahistogram())+(MathAbs(mahistograma())+(MathAbs(mahistogramb())+(MathAbs(mahistogramc())+
(MathAbs(mahistogramd())+(MathAbs(mahistograme())+(MathAbs(mahistogramf())+(MathAbs(mahistogramg())+
(MathAbs(mahistogramh())+(MathAbs(mahistogrami())+(MathAbs(mahistogramj())+(MathAbs(mahistogramk())+
(MathAbs(mahistogramm())+)/13;
}
exspression on global scope not allowed
Nikt nie planuje przegrywac, ale wielu przegrywa bo nie planuje.
no to sobie policz nawiasy i posprawdzaj
niepotrzebnie robisz tak
jak można czytelniej tak:
błąd masz przed każdym oprucz pierwszego MathAbs "(" za dużo
niepotrzebnie robisz tak
Kod: Zaznacz cały
+(MathAbs(mahistogramm())
Kod: Zaznacz cały
+MathAbs(mahistogramm())
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Usunalem bledy, teraz to wyglada tak:
Niestety warning jest w dalszym ciagu. Nie wiem co robie zle, moze przed klamra cos powinienem dopisac?
Kod: Zaznacz cały
{
double wynik= (MathAbs(mahistogram())+MathAbs(mahistograma())+MathAbs(mahistogramb())+MathAbs(mahistogramc())+
MathAbs(mahistogramd())+MathAbs(mahistograme())+MathAbs(mahistogramf())+MathAbs(mahistogramg())+
MathAbs(mahistogramh())+MathAbs(mahistogrami())+MathAbs(mahistogramj())+MathAbs(mahistogramk())+
MathAbs(mahistogramm()))/13;
}
Nikt nie planuje przegrywac, ale wielu przegrywa bo nie planuje.
Kod jest poprawny - błąd musisz mieć gdzieś indziej - usuń go i sprawdz czy się kompiluje.
będzie działać o ile to są funkcje
a nie zmienne
Kod: Zaznacz cały
double wynik= (MathAbs(mahistogram())+MathAbs(mahistograma())+MathAbs(mahistogramb())+MathAbs(mahistogramc())+
MathAbs(mahistogramd())+MathAbs(mahistograme())+MathAbs(mahistogramf())+MathAbs(mahistogramg())+
MathAbs(mahistogramh())+MathAbs(mahistogrami())+MathAbs(mahistogramj())+MathAbs(mahistogramk())+
MathAbs(mahistogramm()))/13;
Kod: Zaznacz cały
mahistogram()..
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Czy kod ten umieściłeś w jakiejś metodzie?ralbet pisze:Usunalem bledy, teraz to wyglada tak:Niestety warning jest w dalszym ciagu. Nie wiem co robie zle, moze przed klamra cos powinienem dopisac?Kod: Zaznacz cały
{ double wynik= (MathAbs(mahistogram())+MathAbs(mahistograma())+MathAbs(mahistogramb())+MathAbs(mahistogramc())+ MathAbs(mahistogramd())+MathAbs(mahistograme())+MathAbs(mahistogramf())+MathAbs(mahistogramg())+ MathAbs(mahistogramh())+MathAbs(mahistogrami())+MathAbs(mahistogramj())+MathAbs(mahistogramk())+ MathAbs(mahistogramm()))/13; }
Jeżeli zadeklarujesz nazwę zmiennej w obrębie bloku klamrowego to ona jest dostępna tylko i wyłącznie w tym bloku.
Wega_x
No tak. Tu sie klaniaja oczywiste braki podstaw programowania u mnie. Z tego co napisal wega wynika ze powinienem zadeklarowac nazwe wynik poza klamrami:
no i jest ok, tyle ze wynik wychodzi 0,000000
moze powinienem dopisac cos na dole jeszcze?
Skadniki wyniku (mahistogram, mahistograma, itd) dzialaja prawidlowo wiec blad jest jeszcze w powyzszym fragmencie kodu.
Kod: Zaznacz cały
double wynik()
{
double wynik= (MathAbs(mahistogram())+MathAbs(mahistograma())+MathAbs(mahistogramb())+MathAbs(mahistogramc())+
MathAbs(mahistogramd())+MathAbs(mahistograme())+MathAbs(mahistogramf())+MathAbs(mahistogramg())+
MathAbs(mahistogramh())+MathAbs(mahistogrami())+MathAbs(mahistogramj())+MathAbs(mahistogramk())+
MathAbs(mahistogramm()))/13;
}
moze powinienem dopisac cos na dole jeszcze?
Skadniki wyniku (mahistogram, mahistograma, itd) dzialaja prawidlowo wiec blad jest jeszcze w powyzszym fragmencie kodu.
Ostatnio zmieniony 19 sty 2011, 19:58 przez ralbet, łącznie zmieniany 1 raz.
Nikt nie planuje przegrywac, ale wielu przegrywa bo nie planuje.