iMAOnArray, liczenie minimum i maximum w ciagu dnia

O jezykach programowania w platformach i nie tylko.
tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

iMAOnArray, liczenie minimum i maximum w ciagu dnia

Nieprzeczytany post autor: tmkk90 »

Witam, chcialbym utworzyc tablice z wartosciami MovingAverage oraz funkcje ktora bedzie mi z tej tablicy odczytywala minimum i maksimum.

zerknijcie na moj kod:

Kod: Zaznacz cały


//---------------------------------------------------



int z;
double tab1[],tab2[];

for(z=0;z<=IloscSlupkow;z++) 
{

tab1[z]=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0); 
tab2[z] = iMAOnArray(tab1[z],IloscSlupkow,MovingPeriod,MovingShift,MODE_SMA,z);



int a =ArrayMaximum(tab2[z],IloscSlupkow,1);
int b =ArrayMinimum(tab2[z],IloscSlupkow,1);

Maximum=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,a); 
Minimum=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,b); 

}




//---------------------------------------------------

(IloscSlupkow liczona jest od godziny 00:00 danego dnia)

Prosilbym o pomoc, bo nie zabardzo wiem co jest zle :/

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

gdy deklarujesz tablice wymagane jest podanie rozmiaru, potem możesz oczywiście zmienić

Kod: Zaznacz cały

double tab1[1],tab2[1]; 
ArrayResize(tab1,z);
ArrayResize(tab2,z);
Po drugie musisz mieć 2 pętle, jedną kopiującą MA i drugą liczącą średnią. Bo jakbyś chciał policzyć średnią z X jak np skopiowałeś 1 pozycje?
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Nieprzeczytany post autor: tmkk90 »

Tig3r, jak mialbys chwilke to moglbys napisac jak powinny wygladac te 2 petle? Bo nie za bardzo wiem...

Awatar użytkownika
Tig3r
Przyjaciel Forum
Przyjaciel Forum
Posty: 2310
Rejestracja: 02 sty 2008, 10:46

Nieprzeczytany post autor: Tig3r »

Wiesz wiesz, najpierw pętla z iMA.. wypełniająca 1 tablicę
a potem pętla z iMAOnArray wypełniająca 2gą tablice

z tym że ta pierwsza musi być dłuższa od długość średniej z tej drugiej - ale to chyba oczywiste

aha aby uzyć iMaOnArray trzeba tablice z której liczysz średnie zainicjować poprzez: ArraySetAsSeries
w twoim wypadku tab1
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

wojnowy
Stały bywalec
Stały bywalec
Posty: 63
Rejestracja: 24 wrz 2010, 10:09

Nieprzeczytany post autor: wojnowy »

tmkk90 pisze:tab1[z]=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
a tu powinno być chyba z na końcu (?)
(\(^.^)/)

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Nieprzeczytany post autor: tmkk90 »

No wlasnie nie wiem, bo ten ostatni parametr to jest przesuniecie w stosunku do biezacej swieczki i jakbym dal z, to nie bralo by caly czas wartosci z godziny 00:00? (bo jak np. od polnocy minelo 15 swieczek to z = 15) wiec jak dam tam na koncu z, to bedzie caly czas ta pierwsza wartosc chyba? czy nie?

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Nieprzeczytany post autor: tmkk90 »

Pytanie jest nadal aktualne ;) jak ktos wie jak powinien wygladac ten kod niech pisze. z gory dzieki ;)

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Nieprzeczytany post autor: tmkk90 »

Kod: Zaznacz cały

int z;
double tab1[1],tab2[1];
ArrayResize(tab1,z);
ArrayResize(tab2,z); 

for(z=0;z<=IloscSlupkow;z++) 
{
tab1[z]=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,z); 
}

for(z=0;z<=IloscSlupkow;z++) 
{
ArrayCopy(tab2[z],tab1[z],0,0,WHOLE_ARRAY);
tab2[z] = iMAOnArray(tab1[z],IloscSlupkow,MovingPeriod,MovingShift,MODE_SMA,z);
}


int a =ArrayMaximum(tab2[z],IloscSlupkow,1);
int b =ArrayMinimum(tab2[z],IloscSlupkow,1);

Maximum=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,a); 
Minimum=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,b); 
tak to powinno wygladac? ;/ bo tez nie dziala

wojnowy
Stały bywalec
Stały bywalec
Posty: 63
Rejestracja: 24 wrz 2010, 10:09

Nieprzeczytany post autor: wojnowy »

tmkk90 pisze:tak to powinno wygladac? ;/ bo tez nie dziala
Jak nie działa tzn. że powinno wyglądać inaczej.
Ale ciekawa koncepcja:

Kod: Zaznacz cały

int z; //inicjalizacja zmiennej z (w domyśle z = 0)
double tab1[1],tab2[1]; //stworzenie tablic wielkich na aż 1 element
ArrayResize(tab1,z); //zwiększenie tego rozmiaru do 0
ArrayResize(tab2,z); // j.w. 
Dalej nie sprawdzałem bo szkoda mi czasu O,o
(\(^.^)/)

tmkk90
Stały bywalec
Stały bywalec
Posty: 50
Rejestracja: 12 lip 2010, 19:13

Nieprzeczytany post autor: tmkk90 »

Jezeli jednak znalazlby sie ktos komu nie szkoda czasu, to prosilbym o pomoc...

ODPOWIEDZ