Sari la conținut

Nu sunt programator, asa ca cer ajutor


nicugh

Postări Recomandate

Buna, bine v-am regasit,

in primul rand felicitari lui Stefan si membrilor vamist pentru ce ati realizat in ultimile 6 luni, cam atat a fost pauza, conditii de munca in deplasare, no net, no trade

 

si daca tot avem MQL deschid un topic pentru cei ca mine care mai butoneaza cate un EA si nu sunt programatori sa puna intrebari, iar pe cei care cunosc limbajul ii rog sa ne raspunda chiar daca uneori vor fi banale

 

deci ce ma doare if(se deschide o noua bara atunci mergi mai departe);

 

am "ohno" a lui tradelover dar nu stiu cum m-as putea folosi de el

Link spre comentariu
Distribuie pe alte site-uri

  • Răspunsuri 38
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

Buna, bine v-am regasit,

in primul rand felicitari lui Stefan si membrilor vamist pentru ce ati realizat in ultimile 6 luni, cam atat a fost pauza, conditii de munca in deplasare, no net, no trade

 

si daca tot avem MQL deschid un topic pentru cei ca mine care mai butoneaza cate un EA si nu sunt programatori sa puna intrebari, iar pe cei care cunosc limbajul ii rog sa ne raspunda chiar daca uneori vor fi banale

 

deci ce ma doare if(se deschide o noua bara atunci mergi mai departe);

 

am "ohno" a lui tradelover dar nu stiu cum m-as putea folosi de el

E simplu.

 

Pui un int LastBars=0; inainte de toate;

 

dupa aia faci asa

 

int init()

{

...

LastBars=Bars;

...

}

 

 

int start()

{

...

if (Bars!=LastBars)

{

....faci ce ai de facut

....

LastBars=Bars;

}

....

return(0);

}

Link spre comentariu
Distribuie pe alte site-uri

E simplu.

 

Pui un int LastBars=0; inainte de toate;

 

dupa aia faci asa

 

int init()

{

...

LastBars=Bars;

...

}

 

 

int start()

{

...

if (Bars!=LastBars)

{

....faci ce ai de facut

....

LastBars=Bars;

}

....

return(0);

}

 

multumesc, a functionat, am scapat de error 1 la un trailigstop ;)

Link spre comentariu
Distribuie pe alte site-uri

  • Management

Buna, bine v-am regasit,

in primul rand felicitari lui Stefan si membrilor vamist pentru ce ati realizat in ultimile 6 luni, cam atat a fost pauza, conditii de munca in deplasare, no net, no trade

 

si daca tot avem MQL deschid un topic pentru cei ca mine care mai butoneaza cate un EA si nu sunt programatori sa puna intrebari, iar pe cei care cunosc limbajul ii rog sa ne raspunda chiar daca uneori vor fi banale

 

deci ce ma doare if(se deschide o noua bara atunci mergi mai departe);

 

am "ohno" a lui tradelover dar nu stiu cum m-as putea folosi de el

Multumim pentru aprecieri si bine ai revenit pe forum!

Link spre comentariu
Distribuie pe alte site-uri

  • Moderators

Salve Nicu, si bine ai revenit!! Tot bear? Tot bear? ;)

 

E bine ce a zis TheEconomist. Rutina face parte din categoria "chestii simple si rapide, dar nu foarte precise" ;)

 

Este mult mai simplu ca ceea ce am facut eu, si mult mai rapida. Drawbackul ar fi atunci cand se umple chartul. Pentru ca MT4 poate stoca un numar limitat de bare in chart, care se poate seta din "Tools/Options/Charts/Max bars in chart". Pe TF-uri mici se umple foarte repede (am vorbit de asta in postul cu newbar). Si cand se umple (de exemplu daca e setat la 1000 si TF e 1 minut, e plin tot timpul!!!) atunci variabila Bars ramane tot timpul la 1000. Barele noi care vin vor impinge afara din chart bara cea mai veche. Caz in care pozna lui TheEc nu mai merge.

 

Alte variante simple:

 

1. Daca faci un indicator, cel mai simplu e

 

if (buffer[0]==emptyvalue)

{faci ce ai de facut, inclusiv calcului lui buffer[0];}

 

asta functioneaza intotdeauna corect, nu are nici un drawback daca faci indicatori, pentru ca bufferul indicatorului este deplasat la stanga cu fiecare bara noua (automat) iar bara goala care se creeaza are valoarea "emptyvalue". Imediat ce ai pus ceva in ea (zero, ori orice alta valoare diferita de emptyvalue), bara nu mai e noua. Drawbackul este ca nu o poti folosi la un expert ori script, pentru ca expertul/scriptul nu are buffere. Bufferele sunt doar pt indicatori.

 

2. Pe TF mai mare ca un minut functioneaza foarte bine o chestie babeasca de genul

 

if (low[0]=high[0])

{ faci ce ai de facut;}

 

Metatrader nu transmite ticksi care au aceeasi valoare cu tickul precedent, pentru cei mai multi dintre borkeri (inclusiv IBFX si MQ). Asta inseamna ca primul tick care vine si creeaza bara are high si low egale. Al doilea tick va fi intotdeauna mai sus sau mai jos, deci bara nu mai e noua. Dezavantajul e ca unii brokeri transmit ticksi si daca cursul sta pe loc, cu conditia ca pretul de ask sa varieze (spreadul) ori volumele sa varieze. In acest caz bara va fi considerata de mai multe ori ca "noua" (daca pretul de bid sta pe loc, pt MT cursul este acelasi, ca el arata bidul pe chart).

 

3. O varianta mai proasta este testarea volumelor (if (vol[0]=1)).

 

Asta functioneaza in 99% din cazuri. Totusi, uneori piata o ia razana (la stiri) si primul tick care vine face volumele 5, sau 10, sau chiar mai mult. In acest caz bara va fi omisa.

 

4. O varianta ca aceea a lui TheEc, dar in loc de bars sa testezi Time[0] este mai profesionala si merge intotdeauna.

 

pui in init(): OldTime=Time[0];

 

pui in start():

 

if (OldTime !=Time[0])

{ OldTime = Time[0];

faci de ai de facut

}

 

timpul deschiderii ultimei bare (Time[0]) se schimba la fiecare bara. Asta ar fi metoda cea mai buna. Singurul drawback este acela ca atunci cand lansezi expertul prima bara se pierde (nu se considera). Dar toate barele care vin dupa nu vor fi omise si nu vor fi luate de doua ori, nici nu da gusi cand se umple chartul cu bare. Asa ca drawbackul este "foarte" minor.

 

Mai sunt si alte metode.

 

Pentru IBFX eu folosesc Variantele 2 si 4. Varianta 2 nu mi-a dat niciodata gusi, pentru ca IBFX nu transmite ticksi daca pretul nu variaza la bid. Daca doar spreadul variaza, dar bidul sta pe loc, IBFX nu transmite nimic (nu veti vedea pe tick chart paliere orizontale la bid! Uneori vedeti paliere orizontale la Ask, daca de exemplu cursul variaza de la 1.2345/49 la 1.2346/49. Adica bidul creste cu 1 si spreadul scade cu 1, atunci Ask-ul face palier orizontal pe tick chart)

Link spre comentariu
Distribuie pe alte site-uri

atunci variabila Bars ramane tot timpul la 1000. Barele noi care vin vor impinge afara din chart bara cea mai veche. Caz in care pozna lui TheEc nu mai merge.

Mea culpa, a functionat pe backtest, asa ca n-am avut rabdarea sa forward test care i-ar fi limita....probabil parea a merge, imi aduc aminte ca se cam opreau pe testarea vizuala, dar credeam ca din cauza pierderii ;)

Link spre comentariu
Distribuie pe alte site-uri

Salve Nicu, si bine ai revenit!! Tot bear? Tot bear? ;)

Buna Laur, deocamdata in stand by, un bid nejucat e un bid nepierdut, int-un fel o pornesc iar de la capat, bine ca m-am putut abtine si nu am jucat in perioada asta.

multumesc pentru ajutor, am ales varianta 2, if(Low[0]==High[0]).

 

 

Tin pumnii stransi pentru "stitch"

Link spre comentariu
Distribuie pe alte site-uri

  • 3 săptămâni mai târziu...

revin cu o intrebare, de data asta legata de magicnumber, in varianta simpla avem:

#define MAGIC 1111111

 

if(OrderMagicNumber()!=MAGIC)

//--facem ce avem de facut

 

probema apare cand vrem sa folosim expertul in acelasi timp pe mai multe perechi si timeframe, ar fi necesar ca MAGIC sa fie generat de simbol si timeframe,

care ar fi solutia problemei?

 

 

 

... despre moneymanagement nu mai intreb ca solutia exista deja aici http://forum.vamist.com/Loturi-lotulee-i-loti-t1187.html

Link spre comentariu
Distribuie pe alte site-uri

pai tu magic numberul il dai cand plasezi ordinul, magic numberul se foloseste cand folosesti mai multe multi experti si nu vrei ca unu din experti sa se bage peste ordinele celuilalt.

tu cu un expert tranzactionezi o singura pereche pe un singur tf.

solutia pentru problema ta ar fi cred definirea unui magic number diferit pentru fiecare pereche, iar acel magic number sa fie dat ca parametru la initializare.

Link spre comentariu
Distribuie pe alte site-uri

  • Moderators

Partea cu TF e usor de facut, pentru ca TF e numeric. Adica el are valorile 1, 5, 15, 30, 60, 240, 1440, etc. si il poti folosi direct ca magic number.

 

Partea cu perechea e oleaca mai complicata, pentru ca perechea e string, si trebuie sa definesti un cod care sa iti transforme literele in cifre. Poti folosi (de)codificarea in ascii (adica parsezi numele perechii si inlocuiesti literele cu codul ascii corespunzator), dar in acest caz numarul generat nu iti mai incape in locatia pentru integer. O alta varianta e sa aduni literele la un loc (codul lor ascii) dar in acest caz unele perechi (ori alte instrumente) vor genera (probabil) acelasi cod, caz in care unicitatea nu mai e asigurata. De ce zic asta? Adunand codurile ascii pt EUR si pt USD, de exemplu, gasesti aceeasi suma, pentru ca U=U, iar E+R=(D+1)+(S-1)=D+S, deoarece E=D+1 si S=R+1 in codul ascii. Ar trebui facuta o chestie mai intortocheata, de exemplu o suma CRC.

 

Arunca o privire in fisierul atasat. Este un script demonstrativ care genereaza magic-numbers in functie de perechea si timeframul pe care este tras. Se copiaza in directorul de scripturi. Valoarea pt chartul curent este scrisa in log, cu Print(), dar in acelasi timp, ca demonstratie, se creaza un fisier .csv (in folderul de fisiere, experts/files) numit magics.csv, care contine codurile pentru toate perechile si tf-urile. Daca vrei sa verifici ca ele sunt unice, incarci acest fisier in excel, il sortezi dupa magic (click pe data, in meniul excel, click sort) si verifici ochiometric. Daca apare in excel ceva de genul "1.234E15" trebuie sa faci coloana mai mare sa incapa toate cifrele, atunci vei vedea numerele in clar. Daca ai cont mini, fa o verificare, pentru ca eu nu am cont mini, iar "m"-ul de la sfarsit va schimba codurile. Asta e in vantajul tau, daca folosesti mai multe conturi si vrei sa vezi care ordere sunt deschise pe mini si care pe standard (asta nu se poate cu metatrader, dar se poate daca aduci de la metaquotes un programel numit "MultiTerminal" care iti permite sa te logezi la mai multe conturi simultan).

 

Una dintre cele doua functii (care urmeaza dupa start() adica) se pot copy/paste in expertul tau si se pot folosi cum crezi de cuviinta. Eventual algoritmul de generare de magicuri se poate schimba, dar daca il schimbi tre sa verifici intotdeauna ca numerele generate sunt unice, si trebuie sa te asiguri ca ele sunt destul de mari ca sa nu se incurce cu alte eventual magicuri pe care le dai manual (in anumite situatii poate ai nevoie de magicuri manuale) si care de obicei sunt mai mici.

 

Magic_Code.mq4

 

Pipsuiala spornica!

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.