godziny tradingu

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
drapichrust
Stały bywalec
Stały bywalec
Posty: 73
Rejestracja: 03 gru 2009, 11:22

godziny tradingu

Nieprzeczytany post autor: drapichrust »

Witam,

mam taki problem, ea ma grac w okreslonym przedziale czasowym, uzywam warunku:

Kod: Zaznacz cały

if((Hour()>=Hstart) && (Hour()<Hstop)){}
który generalnie działa, jesli mamy godziny 6-10, 13-16, problem pojawia sie kiedy chce zeby handlowal w nocy, np od 20 do 3 w nocy, lecz wtedy warunek sie nie spelnia i nie zawiera zadnych transakcji. Ma ktoś pomysł jak to obejść?

pozdr
drap
"Wyobraźnia jest ważniejsza od wiedzy, ponieważ wiedza jest ograniczona."
- Albert Einstein

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

Nieprzeczytany post autor: Tig3r »

Kod: Zaznacz cały

if((start<stop && (now<start || now>stop)) || (start>stop && now<start && now>stop))
{
return;
}
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

Awatar użytkownika
drapichrust
Stały bywalec
Stały bywalec
Posty: 73
Rejestracja: 03 gru 2009, 11:22

Nieprzeczytany post autor: drapichrust »

nie działa, zawiera transakcje caly czas, jakby nie bylo warunku
"Wyobraźnia jest ważniejsza od wiedzy, ponieważ wiedza jest ograniczona."
- Albert Einstein

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

drapichrust pisze:Ma ktoś pomysł jak to obejść?
a co tu chcesz obchodzic to co napisales jest ok i musi dzialac dla kazdego poprawnie podanego przedzialu, pewnie blad jest gdzie indziej

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

Nieprzeczytany post autor: LowcaG »

Kod: Zaznacz cały

bool timeControl(int hourStart, int hourStop){
   int godzina=TimeHour(TimeCurrent());
   if (hourStart < hourStop){
      if (godzina < hourStart) return(false);      
      if (godzina >= hourStop)  return(false);
   }
   if (hourStart > hourStop){
      if(  (godzina >= hourStop) && (godzina < hourStart)  ) return(false);   
   }
   if (hourStart == hourStop) return(false);//nie mozna grac od np. 11 do 11     
   
   return(true);
}
TAk jak w komentarzu, jezeli chcesz grac np. od 11:00 do 12:00, to wpisujesz, od 11 do 12 czyli grasz na zbiorze <start,stop).

Awatar użytkownika
drapichrust
Stały bywalec
Stały bywalec
Posty: 73
Rejestracja: 03 gru 2009, 11:22

Nieprzeczytany post autor: drapichrust »

xpep pisze:a co tu chcesz obchodzic to co napisales jest ok i musi dzialac dla kazdego poprawnie podanego przedzialu, pewnie blad jest gdzie indziej
bo ten warunek dziala jesli uzywasz zakresu godzin z jednego dnia, kiedy chcesz uzyc zakresu z dwoch dni np, od 20 do 3 to matematycznie warunek sie nie spelnia

LowcaG nie uzylem Twojego rozwiazania ale naprowadziles mnie na tok myslenia, z przeciwnym warunkiem, dzieki :)
"Wyobraźnia jest ważniejsza od wiedzy, ponieważ wiedza jest ograniczona."
- Albert Einstein

Awatar użytkownika
w_ujek edek
Stały bywalec
Stały bywalec
Posty: 39
Rejestracja: 28 kwie 2009, 10:57

Nieprzeczytany post autor: w_ujek edek »

Kod: Zaznacz cały

if((Hour()>=Hstart) || (Hour()<Hstop)){}
niesprawdzalem, ale powinno dzialac.

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

drapichrust pisze:od 20 do 3 to matematycznie warunek sie nie spelnia
to musisz podzielic na 20 do 24 i 24 do 3 :wink:

ODPOWIEDZ