Sari la conținut

despre Sma


poplau1

Postări Recomandate

  • Răspunsuri 2
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Zile populare

Top autori în acest subiect

  • Moderators

Valorile MA-urilor nu sunt memorate nicaieri, din simplu motiv ca nu exista atat de mult spatiu de memorie "in all the world" pentru a satisface toate nevoile clientului %%-. Ti-ar trebui trilioane de trilioane .... de trilioane de GigaBytes sa memorezi MA-urile pentru toate barele, toate perioadele (de la 1 la infinit) toate tipurile de pret (open, close, median, normalizat, weighted close, etc), toate time-framurile (adica 1 secunda, 2 secunde, .... 7 minute, 34 de minute....), toate tipurile de MA-uri (EMA, SMA, etc) etc, etc.

 

Din cauza asta MT4 pune la dispozitie o functie care calculeaza MA-ul respectiv, cu perioada care vrea fiecare, cu TF-ul care vrea fiecare, cu tipul de pret si de mediere care vrea fiecare, si pe care candela vrea muschii tai. Calculul acesta ia cateva microsecunde, si e la fel de rapid ca si cum ai citi direct dintr-o memorie, daca valaorea MA-ului ar fi memorata. (Well, nu chiar, dar oricum timpul e de ordinul microsecundelor). Asa ca memorarea efectiva a tuturor valorilor ma-urilor de toate felurile nu se merita, crede-ma pe cuvant :)

 

Ca sa afli valoarea SMA-ului, nu ai decat sa folosesti functia respectiva. De exemplu:

 

SMA=iMA(NULL,0,13,8,MODE_SMA,PRICE_MEDIAN,200);

 

(exemplu luat direct din help). Asta iti intoarce valoarea lui SMA(13) shiftat cu 8 bare spre stanga, pentru candela cu numarul 200 din chart, si este echivalent cu (in termenii care ai intrebat tu) Ima[200], doar ca i-am dat mai multa informatie, pt ca vezi tu, s-ar putea ca altu sa nu vrea MA cu perioada 13, ci 20, iar altu s-ar putea sa vrea valorile neshiftate. Daca vrei sa le memorezi intr-o matrice Ima[] si sa o apelezi ca pe Open[], High[], etc, nu ai decat sa te hotarasti asupra unei perioade, sa zicem 30, asupra unui tip de pret, sa zicem close, si sa faci un for dupa i pe toate barele:

 

for (i=0; i<Bars; i++) Ima=iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,i);

 

Si apoi poti sa iti folosesti matricea Ima in felul in care ai intrebat tu. Trebuie doar sa ai grija sa calculezi ultima valaore de fiecare data cand apare o bara noua:

 

Ima[0]=iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,0);

 

(restul nu trebuie re-calculate daca Ima e declarat ca buffer, shiftarea o face automat indicatorul, vezi helpul de la MT4).

Link spre comentariu
Distribuie pe alte site-uri

Valorile MA-urilor nu sunt memorate nicaieri, din simplu motiv ca nu exista atat de mult spatiu de memorie "in all the world" pentru a satisface toate nevoile clientului %%-. Ti-ar trebui trilioane de trilioane .... de trilioane de GigaBytes sa memorezi MA-urile pentru toate barele, toate perioadele (de la 1 la infinit) toate tipurile de pret (open, close, median, normalizat, weighted close, etc), toate time-framurile (adica 1 secunda, 2 secunde, .... 7 minute, 34 de minute....), toate tipurile de MA-uri (EMA, SMA, etc) etc, etc.

 

Din cauza asta MT4 pune la dispozitie o functie care calculeaza MA-ul respectiv, cu perioada care vrea fiecare, cu TF-ul care vrea fiecare, cu tipul de pret si de mediere care vrea fiecare, si pe care candela vrea muschii tai. Calculul acesta ia cateva microsecunde, si e la fel de rapid ca si cum ai citi direct dintr-o memorie, daca valaorea MA-ului ar fi memorata. (Well, nu chiar, dar oricum timpul e de ordinul microsecundelor). Asa ca memorarea efectiva a tuturor valorilor ma-urilor de toate felurile nu se merita, crede-ma pe cuvant :)

 

Ca sa afli valoarea SMA-ului, nu ai decat sa folosesti functia respectiva. De exemplu:

 

SMA=iMA(NULL,0,13,8,MODE_SMA,PRICE_MEDIAN,200);

 

(exemplu luat direct din help). Asta iti intoarce valoarea lui SMA(13) shiftat cu 8 bare spre stanga, pentru candela cu numarul 200 din chart, si este echivalent cu (in termenii care ai intrebat tu) Ima[200], doar ca i-am dat mai multa informatie, pt ca vezi tu, s-ar putea ca altu sa nu vrea MA cu perioada 13, ci 20, iar altu s-ar putea sa vrea valorile neshiftate. Daca vrei sa le memorezi intr-o matrice Ima[] si sa o apelezi ca pe Open[], High[], etc, nu ai decat sa te hotarasti asupra unei perioade, sa zicem 30, asupra unui tip de pret, sa zicem close, si sa faci un for dupa i pe toate barele:

 

for (i=0; i<Bars; i++) Ima=iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,i);

 

Si apoi poti sa iti folosesti matricea Ima in felul in care ai intrebat tu. Trebuie doar sa ai grija sa calculezi ultima valaore de fiecare data cand apare o bara noua:

 

Ima[0]=iMA(NULL,0,30,0,MODE_SMA,PRICE_CLOSE,0);

 

(restul nu trebuie re-calculate daca Ima e declarat ca buffer, shiftarea o face automat indicatorul, vezi helpul de la MT4).

Link spre comentariu
Distribuie pe alte site-uri

Alătură-te conversației

Poți posta acum și să te înregistrezi mai târziu. Dacă ai un cont, autentifică-te acum pentru a posta cu contul tău.

Vizitator
Răspunde la acest subiect...

×   Alipit ca text avansat.   Alipește ca text simplu

  Doar 75 emoji sunt permise.

×   Linkul tău a fost încorporat automat.   Afișează ca link în schimb

×   Conținutul tău precedent a fost resetat.   Curăță editor

×   Nu poți lipi imagini direct. Încarcă sau inserează imagini din URL.

  • Navigare recentă   0 membri

    • Nici un utilizator înregistrat nu vede această pagină.

×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.