Wszystkie pytania dozwolone początkujących programistów

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
mikolaj2
Gaduła
Gaduła
Posty: 231
Rejestracja: 04 maja 2011, 14:37

Nieprzeczytany post autor: mikolaj2 »

Witam! Czy istnieje możliwość zastosowania w instrukcji IF warunku złożonego np. If cena>a i a> lub cena<b i a<b then ...? Chodzi konkretnie o słowo "lub"

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

Nieprzeczytany post autor: LowcaG »

if ( (cena > a) || ( (cema < b) && (a< b) ) ){

}

czyli || --> lub
&& -->i

tylko nawiasy dobrze trzeba powstawiac bo moze byc war1 || ( war2 && war3 ) a moze byc tez
( war1 || war2 ) && war3

itd.

Awatar użytkownika
mikolaj2
Gaduła
Gaduła
Posty: 231
Rejestracja: 04 maja 2011, 14:37

Nieprzeczytany post autor: mikolaj2 »

Dziękuję za odpowiedź!

Dla pewności dopytam się

znak && - oznacza "i"
znak || - oznacza "lub"

Czy dobrze rozumiem?

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

Nieprzeczytany post autor: Tig3r »

Dziękuję za odpowiedź!

Dla pewności dopytam się

znak && - oznacza "i"
znak || - oznacza "lub"

Czy dobrze rozumiem?
Tak przecież Lowca G dokładnie to napisał:
LowcaG pisze:czyli
|| - lub
&& - i
======================================================
Nie głupi ten co nie wie, lecz ten który nie chce się nauczyć..

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

Nieprzeczytany post autor: personov »

Tig3r pisze:
mikolaj2 pisze:Witam! Czy w MQL4 istnieje możliwość przypisania do zmiennej ceny, która padła np. w poprzednim ticku? Pozdrawiam...
Nie da się sprawdzić poprzedniego ticka, ale możesz zapamiętać ostatni tick i go potem wykorzystać (czyli będziesz miał poprzedni tick).
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
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 ?
Solą życia jest kasa.

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

Nieprzeczytany post autor: MkubuxK »

personov pisze:
Tig3r pisze:
mikolaj2 pisze:Witam! Czy w MQL4 istnieje możliwość przypisania do zmiennej ceny, która padła np. w poprzednim ticku? Pozdrawiam...
Nie da się sprawdzić poprzedniego ticka, ale możesz zapamiętać ostatni tick i go potem wykorzystać (czyli będziesz miał poprzedni tick).
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
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 ?
Nie sprawdzałem na kartce papieru ale tak na szybko wymyśliłem coś takiego:

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

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

Nieprzeczytany post autor: personov »

Nie kompiluje.
W pierwszym kodzie powinno być chyba

Kod: Zaznacz cały

int i=0;
Ale wychodzi jakiś błąd chyba z klamrami w drugim kodzie.
Solą życia jest kasa.

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

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
}
moze takie cos bedzie dobre ;)

pozdrawiam
Andrzej Pierz
Ostatnio zmieniony 01 gru 2011, 21:54 przez Pierz Andrzej, łącznie zmieniany 1 raz.
z poważaniem
Andrzej Pierz
FOREX-SERVICE

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

Nieprzeczytany post autor: MkubuxK »

Pierz Andrzej pisze:

Kod: 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;
}


moze takie cos bedzie dobre ;)

pozdrawiam
Andrzej Pierz
Jak zawsze lepsze rozwiązanie. Jeszcze sporo praktyki przede mną :)


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

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

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.
wielkosc tablicy zadeklarowana jest w init() na podstawie zmiennej int Tick

pozdrawiam
Andrzej Pierz
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ