najwyższa (najniższa) wartość ceny po otwarciu zlecenia
najwyższa (najniższa) wartość ceny po otwarciu zlecenia
Do napisania EA potrzebuję dostępu do najwyższej (dla zlecenia Buy, a dla Sell do najniższej) ceny występującej po otwarciu zlecenia i nie wiem jak to ugryźć. Ma ktoś może jakieś sugestie?
podpowiedź:
jeśli masz tablicę n-elementów to wartości min i max możesz znaleźć w taki sposób:
Znając moment otwarcia pozycji oraz informację czy jest to buy czy sell wystarczy tylko troszeczkę zmodyfikować powyższy kod (np. pętla for raczej nie będzie potrzebna) - voila.
jeśli masz tablicę n-elementów to wartości min i max możesz znaleźć w taki sposób:
Kod: Zaznacz cały
double tablica[n];
double min = tablica[0];
double max = tablica[0];
for(int i=0;i<n;i++){
if(tablica[i]>max)
max = tablica[i];
if(tablica[i]<min)
min = tablica[i];
}
(\(^.^)/)
Witam,
Mam taki sam "problem" jak opisany wyzej. I tez robie tak, ze z kazdym krokiem aktualizuje te minimalna/maksymalna wartosc. Jednak chcialbym zrobic to uzywajac tablic (glownie po to, zeby zabezpieczyc przed przerwami w sieci, zeby po odzyskaniu internetu wartosc dobrze sie zaktualizowala).
Znalazlem funkcje "ArrayMaximum" i chcialbym jej uzyc do cen Open jakos tak:
LastMax=ArrayMaximum(Open,kiedy_start,0)
Gdzie "kiedy_start" to wartosc indeksu w tablicy Open kiedy dana pozycja zostala otwarta, a 0 (zero) to aktualna wartosc Open - i nie wiem jak te "kiedy_start" dla aktualnego zlecenia uzyskac.
Bede wdzieczny za podpowiedz.
Pozdrawiam
Mam taki sam "problem" jak opisany wyzej. I tez robie tak, ze z kazdym krokiem aktualizuje te minimalna/maksymalna wartosc. Jednak chcialbym zrobic to uzywajac tablic (glownie po to, zeby zabezpieczyc przed przerwami w sieci, zeby po odzyskaniu internetu wartosc dobrze sie zaktualizowala).
Znalazlem funkcje "ArrayMaximum" i chcialbym jej uzyc do cen Open jakos tak:
LastMax=ArrayMaximum(Open,kiedy_start,0)
Gdzie "kiedy_start" to wartosc indeksu w tablicy Open kiedy dana pozycja zostala otwarta, a 0 (zero) to aktualna wartosc Open - i nie wiem jak te "kiedy_start" dla aktualnego zlecenia uzyskac.
Bede wdzieczny za podpowiedz.
Pozdrawiam
- thisredone
- Stały bywalec
- Posty: 72
- Rejestracja: 05 sie 2010, 17:07
Kod: Zaznacz cały
OrderSelect(ticket,SELECT_BY_TICKET);
datetime i = OrderOpenTime();
int shift = iBarShift(NULL,0,i);
double max_cena_open = Open[iHighest(NULL,0,MODE_OPEN,shift,0)];
double min_cena_open = Open[iLowest(NULL,0,MODE_OPEN,shift,0)];
1.Zaznaczamy transakcję za pomocą OrderSelect();
2.Pobieramy czas zawarcia za pomocą OrderOpenTime();
3.Zamieniamy 'datetime' na numer świeczki za pomocą iBarShift();
4.Maksymalne i minimalne ceny Open pobieramy za pomocą iHighest() oraz iLowest();
iHighest() i iLowest mogą pobierać również ceny z innych buforów - wystarczy zmienić MODE_OPEN na, np. MODE_HIGH/MODE_LOW
Warto zauważyć, że iHighest() oraz iLowest() nie pobierają właściwych cen tylko numer świeczki, na której one wystąpiły i konieczne jest użycie Open[] czy innego bufora.