pamięć tylko wybranych wartości wskaźnika

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

pamięć tylko wybranych wartości wskaźnika

Nieprzeczytany post autor: personov »

Chciałbym zrobić pewien wskaźnik, który będzie bazował tylko na niektórych wartościach innego wskaźnika. Tylko takich, które będą spełniały określony warunek.
Jako przykład dam CCI.
Chciałbym w kodzie przeliczać i wykorzystywać tylko te wartości wskaźnika CCI, które będą powyżej 100 lub poniżej -100.
Jest to możliwe jeśli określę warunek poziomu CCi i zapiszę je kolejno do pamięci.
Ale ja chcialbym to zrobić inaczej - odpalam swój kod, a on już ma te przykładowe warości 22 punktów zapisane ponieważ "zajrzy" sobie w historię i zapisze np. 10 ostatnich. I dalej : jak nastąpi kolejny spełniający warunek to zapisuje go jako 1, a wszystkie przesuwa o jeden.
Wiem, że trochę to niejasne, ale ogólnie chodzi mi o to, abym mógł bazować na 10 ostatnich wartościach punktów spełniających warunek.
Czy ktoś wie jak to zrobić ?
Ktoś to już przerabiał ?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Solą życia jest kasa.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

personov pisze:Czy ktoś wie jak to zrobić ?
Chyba nie czuję problemu... ;) (może za mało snu)
Mógłbyś jeszcze jakoś inaczej bardziej łopatologicznie ten przykład rozjaśnić ?

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

W momencie odpalenia mojego wskaźnika chcę mieć już zapisanych 10 wartości.
Jakich ?
10 ostatnich widocznych na screenie.
Np.
1. -112
2. 120
3. -101
4. 118
5. 119
6. 110
7. -130
8. -135
9. -140
10. 142
Solą życia jest kasa.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

personov pisze:W momencie odpalenia mojego wskaźnika chcę mieć już zapisanych 10 wartości.
Jakich ?
No, ok, to czemu ich sobie po prostu nie znajdziesz? Przecież przy odpaleniu, od razu możesz przelecieć po każdej świeczce i sprawdzić co i jak. (posądzam Cię o takie umiejętności :) )
Ostatnio zmieniony 26 lip 2012, 19:08 przez LowcaG, łącznie zmieniany 1 raz.

MkubuxK
Pasjonat
Pasjonat
Posty: 1051
Rejestracja: 20 maja 2009, 18:27

Nieprzeczytany post autor: MkubuxK »

Spróbuj tego ( value czyli co chcesz przekazać ):

On chce zapisać tylko wybrane a nie wartości wskaźnika po kolei wszystkie ( może coś chce zrobić z nimi )

Kod: Zaznacz cały

yourArray[ileWartosci];

int size=ArraySize(yourArray);

void tickSave(double value){

  
  static int cnt=size-1;
  if(cnt<0) cnt=0; 
  
  if(yourArray[0] !=0)
   {
    for (int i=size-1; i>0; i--)
    {
     yourArray[i]=yourArray[i-1];
    } 
   }
  tickArray[cnt]=value;
  cnt--;


}


Tego używam do zapisywania nadchodzacych ticków ale tutaj tez powinno mieć zastosowanie.
fx-forum

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

MkubuxK pisze:On chce zapisać tylko wybrane a nie wartości wskaźnika po kolei wszystkie ( może coś chce zrobić z nimi )
No wiem, przecież oczywiste, że przeleci sobie i "przepisze" te które chce.
Eee może mam słabszy dzień bo naprawdę nie czuję momentu problemu ;)

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

"Moment problemu" to zamo "przelecenie" i "zapisanie" ;)
A może ja mam dzisiaj słabszy dzień :)
Solą życia jest kasa.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

aaa ok, rozumiem, i zawsze chcesz mieć stałą ilość ostatnich "punktów"?

z resztą, odpowiem słownie, bo muszę coś innego zrobić. (Będe za godzinę, jak nie rozwiążesz to napiszę Ci kod)

Najbanalniej jak można to masz tabelkę X elementową, za pierwszym odpaleniem, cofasz się po iCCi (while) az wypełnisz te X elementów, później ArrayCopy do buffora (w sumie możesz od razu operaować na buforze) i tyle..
Poźniej czekasz tylko aż napłynie nowy "punkt" przesówasz (ArrayCopy) X-1 lementów żeby zrobić miejsce, itd. itd.
Ostatnio zmieniony 26 lip 2012, 19:20 przez LowcaG, łącznie zmieniany 2 razy.

Awatar użytkownika
personov
Pasjonat
Pasjonat
Posty: 1525
Rejestracja: 09 sie 2009, 21:27

Nieprzeczytany post autor: personov »

Najlepiej nie. Lepiej żeby można było sobie wybrać ilość. Ale jak mi ktoś poda jakiś przykład ze stałą liczbą to coś sobie już dalej pokombinuję.
Solą życia jest kasa.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

(wróciłem)
MkubuxK pisze:Tego używam do zapisywania nadchodzacych ticków ale tutaj tez powinno mieć zastosowanie

Jak dla mnie troszkę przekombinowane i wolne (przy większych tablicach)

Proponuję coś w tym stylu. Może i pomoże autorowi

Kod: Zaznacz cały

void addValue(double &ch_array[], double value){
  ArrayCopy(ch_array,ch_array,1,0,ArraySize(ch_array)-1); 
  ch_array[0] = value;  
} 
Korzyści:
-szybkie
-działa na każdej tablicy
-rozmiar tablicy jest nie istotny

ODPOWIEDZ