Wszystkie pytania dozwolone początkujących programistów
Tak przecież Lowca G dokładnie to napisał:Dziękuję za odpowiedź!
Dla pewności dopytam się
znak && - oznacza "i"
znak || - oznacza "lub"
Czy dobrze rozumiem?
LowcaG pisze:czyli
|| - lub
&& - i
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..
A czy jest możliwość zapisać gdzieś np. pięć ostatnich wartości ? Coś w rodzaju tablicy, aby można było w dowolnej chwili odczytać jaka byla wartość np. 4 ticku do tyłu ?Tig3r pisze:Nie da się sprawdzić poprzedniego ticka, ale możesz zapamiętać ostatni tick i go potem wykorzystać (czyli będziesz miał poprzedni tick).mikolaj2 pisze:Witam! Czy w MQL4 istnieje możliwość przypisania do zmiennej ceny, która padła np. w poprzednim ticku? Pozdrawiam...
Było by to coś takiego mniej więcej:
Kod: Zaznacz cały
// zmienna globalna - na początku kodu przed funkcjami start i init double lastTick; // ten kod w INIT i na końcu funkcji start lastTick=Bid; // a przed powyższym przypisaniem sprawdzanie ceny poprzedniej => lastBid i obecnej Bid
Solą życia jest kasa.
Nie sprawdzałem na kartce papieru ale tak na szybko wymyśliłem coś takiego:personov pisze:A czy jest możliwość zapisać gdzieś np. pięć ostatnich wartości ? Coś w rodzaju tablicy, aby można było w dowolnej chwili odczytać jaka byla wartość np. 4 ticku do tyłu ?Tig3r pisze:Nie da się sprawdzić poprzedniego ticka, ale możesz zapamiętać ostatni tick i go potem wykorzystać (czyli będziesz miał poprzedni tick).mikolaj2 pisze:Witam! Czy w MQL4 istnieje możliwość przypisania do zmiennej ceny, która padła np. w poprzednim ticku? Pozdrawiam...
Było by to coś takiego mniej więcej:
Kod: Zaznacz cały
// zmienna globalna - na początku kodu przed funkcjami start i init double lastTick; // ten kod w INIT i na końcu funkcji start lastTick=Bid; // a przed powyższym przypisaniem sprawdzanie ceny poprzedniej => lastBid i obecnej Bid
2 zmienne globalne:
Kod: Zaznacz cały
int i=0;
//bedzie przechowywal 5 tickow w tablicy ktora bedzie regularnie nadpisywal od poczatku
double tablica[5];
i w start()
Kod: Zaznacz cały
//zapisz do tablicy, jesli indeks tablicy jest wiekszy niz 4 to wyzeruj indeks i zacznij od poczatku
tablica[i]=Bid;
i++;
if(i>4) i=0;
i teraz funkcja do wywolania ticku do tylu:
Kod: Zaznacz cały
//z czyli z tickow do tylu - 1 czyli ostatni tick
double wypisz(int z) {
for(int b =0; b<z; b++) {
i--;
if(i<0) i=4
//cofnij sie o z tickow do tylu, jesli z jest mniejsze od zera to idz na koniec tablicy i znow cofaj az znajdziesz pozadany tick, przyjmuje 5 jako maksymalna wartosc
}
double doZwrocenia=tablica[i];
return (doZwrocenia);
}
Nie sprawdzałem kodu ale powinien działać. Napisałem od ręki.
*UPDATE*
Kompiluje się teraz.
Ostatnio zmieniony 01 gru 2011, 21:49 przez MkubuxK, łącznie zmieniany 3 razy.
fx-forum
Nie kompiluje.
W pierwszym kodzie powinno być chyba
Ale wychodzi jakiś błąd chyba z klamrami w drugim kodzie.
W pierwszym kodzie powinno być chyba
Kod: Zaznacz cały
int i=0;
Solą życia jest kasa.
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
Kod: Zaznacz cały
extern int Tick = 5;
double tick[];
void init()
{
ArrayResize(tick,Tick+1);
}
void start()
{
array();
Comment(" trzy ticki wstecz "+DoubleToStr(tick[3],Digits));
}
void array()
{
double bid = Bid;
for (int i = Tick;i > 0;i--) tick[i] = tick[i-1];// przepisanie tickow do tylu
tick[0] = bid;// aktualna cena
}

pozdrawiam
Andrzej Pierz
Ostatnio zmieniony 01 gru 2011, 21:54 przez Pierz Andrzej, łącznie zmieniany 1 raz.
z poważaniem
Andrzej Pierz
FOREX-SERVICE
Andrzej Pierz
FOREX-SERVICE
Jak zawsze lepsze rozwiązanie. Jeszcze sporo praktyki przede mnąPierz Andrzej pisze:moze takie cos bedzie dobreKod: Zaznacz cały
extern int Tick = 5; double tick[]; void init() { ArrayResize(tick,Tick+1); } void start() { double bid = Bid; for (int i = Tick;i > 0;i--) tick[i] = tick[i-1]; tick[0] = bid; }
pozdrawiam
Andrzej Pierz

Czy przypadkiem ten kod nie powiększa cały czas tablicy ? Co w przypadku 20 tysięcy tickow albo i więcej ? Nie padnie ? Gdzieś czytałem że mql ma problemy przy dużych rozmiarach tablic. *UPDATE* Sprawdziłem i nie powiększa. Pytanie nieaktualne.
fx-forum
- Pierz Andrzej
- Przyjaciel Forum
- Posty: 1200
- Rejestracja: 02 lip 2006, 14:17
wielkosc tablicy zadeklarowana jest w init() na podstawie zmiennej int TickCzy przypadkiem ten kod nie powiększa cały czas tablicy ? Co w przypadku 20 tysięcy tickow albo i więcej ? Nie padnie ? Gdzieś czytałem że mql ma problemy przy dużych rozmiarach tablic.
pozdrawiam
Andrzej Pierz
z poważaniem
Andrzej Pierz
FOREX-SERVICE
Andrzej Pierz
FOREX-SERVICE