Czy ktoś mi podpowie jak wyciągnąć najwyższą i najniższą wartość wskaźnika liniowego ( CCI ) z danego przedziału ?
W tej chwili korzystam z ArrayMinimum i ArrayMaximum, ale pojawia się problem z wyciągnięciem max jeśli w danym przedziale wskaźnik CCI przyjmuje wartości tylko ujemne i z wyciągnięciem min jeśli w danym przedziale wskaźnik CCI przyjmuje tyko wartości powyżej 0.
min/max wskaźnika
min/max wskaźnika
Solą życia jest kasa.
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
Re: min/max wskaźnika
Witam
Moim zdaniem nie powinno być problemów gdy tablica ma wartości ujemne i wyciągnięcie z niej Max
sprawdziłem takim małym kodem i wskazuje że najwyższa wartość ma index = 1 czyli -1
ale jeżeli faktycznie nie działa jak powinno możesz sam napisać takie funkcje ewentualnie posortować tablice np ASCEND wtedy pierwsza pozycja tablicy bedzie najmniejsza a ostatnia najwieksza ;-)
Moim zdaniem nie powinno być problemów gdy tablica ma wartości ujemne i wyciągnięcie z niej Max
Kod: Zaznacz cały
double tab[4] = {-7,-1,-2,-55};
Alert(ArrayMaximum(tab))
ale jeżeli faktycznie nie działa jak powinno możesz sam napisać takie funkcje ewentualnie posortować tablice np ASCEND wtedy pierwsza pozycja tablicy bedzie najmniejsza a ostatnia najwieksza ;-)
z poważaniem
Andrzej Pierz
FOREX-SERVICE
Andrzej Pierz
FOREX-SERVICE
Re: min/max wskaźnika
Ja kombinuję w ten sposób :
I nie działa.
-- Dodano: sob 14-01-2017, 0:14 --
Co robię źle ?
A może jest jakiś całkiem inny sposób, aby wyszukać świecę z danego przedziału, na której wskaźnik osiąga maximum i minimum w tym przedziale ?
Kod: Zaznacz cały
for(int k=20;k<=28;k++){ /// zakres od świecy 20 do 28
double cci1[k]=iCCI(Symbol(),Period(),14,0,k);
int shmax_w1=ArrayMaximum(cci1,WHOLE_ARRAY,0);
int shmin_w1=ArrayMinimum(cci1,WHOLE_ARRAY,0);
double max_w1=cci1[shmax_w1];
double min_w1=cci1[shmin_w1];
}
-- Dodano: sob 14-01-2017, 0:14 --
Co robię źle ?
A może jest jakiś całkiem inny sposób, aby wyszukać świecę z danego przedziału, na której wskaźnik osiąga maximum i minimum w tym przedziale ?
Solą życia jest kasa.
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
Re: min/max wskaźnika
najpierw przypisz wartości do tablicy a potem sprawdzaj max / min
z poważaniem
Andrzej Pierz
FOREX-SERVICE
Andrzej Pierz
FOREX-SERVICE
Re: min/max wskaźnika
Ale przecież tablica o nazwie cci1 ma już przypisane wartości. Są to wartości wskaźnika w pętli.
Kod: Zaznacz cały
for(int k=20;k<=28;k++){ /// zakres od świecy 20 do 28
double cci1[k]=iCCI(Symbol(),Period(),14,0,k);///////////////tutaj są przypisane wartości
int shmax_w1=ArrayMaximum(cci1,WHOLE_ARRAY,0);/////która świeca to maximum
int shmin_w1=ArrayMinimum(cci1,WHOLE_ARRAY,0);/////która świeca to minimum
double max_w1=cci1[shmax_w1];///////jaka max wartość wskaźnika
double min_w1=cci1[shmin_w1];////////jak min. wartość wskaźnika
}
Solą życia jest kasa.
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
Re: min/max wskaźnika
prawidłowo powinno być tak , niewielka różnica a jednak ;-)
kolejny problem to elementy tablicy które znajdują się od 0 do 19 , mają wartość 0
ostatni parametr funkcji Maximum i Minimum nie powinien wynosić 0 a 20
-- Dodano: sob 14-01-2017, 20:32 --
przeanalizuj sobie taki kod pisałem w przeglądarce ale powinien być ok ;-)
Kod: Zaznacz cały
//najpierw przypisujesz wartości wskaźnika cci
for(int k=20;k<=28;k++){ /// zakres od świecy 20 do 28
double cci1[k]=iCCI(Symbol(),Period(),14,0,k);///////////////tutaj są przypisane wartości
}
// później sprawdzasz przypisane wartości
int shmax_w1=ArrayMaximum(cci1,WHOLE_ARRAY,0);/////która świeca to maximum
int shmin_w1=ArrayMinimum(cci1,WHOLE_ARRAY,0);/////która świeca to minimum
double max_w1=cci1[shmax_w1];///////jaka max wartość wskaźnika
double min_w1=cci1[shmin_w1];////////jak min. wartość wskaźnika
ostatni parametr funkcji Maximum i Minimum nie powinien wynosić 0 a 20
-- Dodano: sob 14-01-2017, 20:32 --
przeanalizuj sobie taki kod pisałem w przeglądarce ale powinien być ok ;-)
Kod: Zaznacz cały
int begin = 20;
int end = 28;
if (end - begin > 0)
{
double cci;
int size = end - begin + 1;
ArrayResize(cci,size );
for (int i = 0;i < size ;i++) cci[i] = iCCI(Symbol(),Period(),14,PRICE_CLOSE,i + begin);
int shiftmax = ArrayMaximum(cci);
int shiftmin = ArrayMinimum(cci);
double maxvalue = cci[shiftmax + begin];
double minvalue = cci[shiftmin + begin];
}
z poważaniem
Andrzej Pierz
FOREX-SERVICE
Andrzej Pierz
FOREX-SERVICE
Re: min/max wskaźnika
Dałem tak i jest dobrze. Nie przeszukujemy całego zakresu tablicy tylko elementy od 20 do 28.
Poza tym nawias o którym napisałeś.
Poza tym nawias o którym napisałeś.
Kod: Zaznacz cały
for(int k=20;k<=28;k++){ /// zakres od świecy 20 do 28
double cci1[k]=iCCI(Symbol(),Period(),14,0,k);}///////////////tutaj są przypisane wartości
int shmax_w1=ArrayMaximum(cci1,9,20);/////która świeca to maximum
int shmin_w1=ArrayMinimum(cci1,9,20);/////która świeca to minimum
double max_w1=cci1[shmax_w1];///////jaka max wartość wskaźnika
double min_w1=cci1[shmin_w1];////////jak min. wartość wskaźnika
Solą życia jest kasa.