wartosc zamkniecia swiecy o okreslonej godzinie - jak ?

O jezykach programowania w platformach i nie tylko.
iaaf
Stały bywalec
Stały bywalec
Posty: 30
Rejestracja: 29 sty 2009, 15:23

wartosc zamkniecia swiecy o okreslonej godzinie - jak ?

Nieprzeczytany post autor: iaaf »

- czy jest jakis sposob, by zapisac do zmiennej wartosc zamkniecia swiecy o okreslonej godzinie i by ta zmienna sie aktualizowala co dzien ?
- znalazlem iOpen(), ale jednak to inaczej dziala

Z gory dziekuje
Pozdrawiam

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

Nieprzeczytany post autor: Tig3r »

iClose

przydatne też będzie iBarShoft
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

iaaf
Stały bywalec
Stały bywalec
Posty: 30
Rejestracja: 29 sty 2009, 15:23

Nieprzeczytany post autor: iaaf »

Działa tak w połowie. Normalnie działa, a w testerze zamiast brać wartość o podanej godzinie każdego dnia, to pobiera sobie za każdym razem jak powstanie świeca nową wartość, co dziwne - wartość świecy którą aktualnie ma otwartą.

Kod: Zaznacz cały

#property copyright "Ja"
#property link      "www.abc.pl"

int init()
{
   return(0);
}

int deinit()
{
   return(0);
}

void obliczLinie()
{
   double linia = Open[iBarShift(Symbol(), PERIOD_H1, D'08:00')];    // jest warning: "date iteral string is incomplete", ale Hour() == 8 cos nie chce dzialac
   ObjectsDeleteAll();      // jak tego nie zrobie, to nie chce mi sie odswiezac rysowanie lini
   ObjectCreate("Linia", OBJ_HLINE, 0, 0, linia);   
}

int start()
{
   obliczLinie();
   return(0);
}

Wyświetla też mi się coś takiego przy uruchomieniu Testera, ale po chwili dziala, tyle ze wlasnie ta wspomniana wczesniej wartosc lini jest nie taka:

Kod: Zaznacz cały

2011.05.06 16:42:24	TestGenerator: unmatched data error (high value 1.4865 at 2011.04.28 06:00 is not reached from the least timeframe, high price 1.4845 mismatches)
I jeszcze jedno pytanie, czemu jak uruchomię na wykresie z innym okresem, to nie pobiera wartości z godziny 8 na H1 ? jak powroce znowu na H1, to jest poprzednia błędna wartość (dopiero po ręcznym usunieciu pojawia sie ta wlasciwa)

Z gory dzieki

bialy
Stały bywalec
Stały bywalec
Posty: 54
Rejestracja: 16 maja 2011, 20:41

iClose

Nieprzeczytany post autor: bialy »

normalnie to bedzie prawdopodobnie tak:

Kod: Zaznacz cały

datetime YourCurrentDayHour = StrToTime(TimeToStr(TimeCurrent(),TIME_DATE) + " 08:00");
int YourCurrentDayHourBarShift = iBarShift(Symbol(),PERIOD_H1,YourCurrentDayHour,False);
double close = iClose(Symbol(),PERIOD_H1,YourCurrentDayHourBarShift);
Print (close);
w testerze nie mozna uzywac TimeCurrent() bo to czas ostatniego ticku serwera
w przypadku testera musisz uwzglednic czas obecnie czytanej swieczki moze byc tak ale to musisz sprawdzic
przyklad ale nie mam pewnosci, jakis czas temu potrzebowalem takich danych

Kod: Zaznacz cały

for(int c=0; c<Bars-1; c++) {
   datetime YourCurrentDayHour = StrToTime(TimeToStr(Time[c],TIME_DATE) + " 08:00");
   int YourCurrentDayHourBarShift = iBarShift(Symbol(),PERIOD_H1,YourCurrentDayHour,False);
   double close = iClose(Symbol(),PERIOD_H1,YourCurrentDayHourBarShift);
   Print (close);
}
oszczedzajmy cykle procesora

ODPOWIEDZ