Sari la conținut

Featured Replies

Postat

Imi spune cineva va rog daca exista memorate valorile pentru indicatorul SMA pentru bare, cum ar fi IClose dar ceva de genul Ima

Multumesc!

  • Răspunsuri 2
  • Citiri 3,1k
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Postat
  • 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).

Postat
  • Autor

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).

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...

Navigare recentă 0

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.