Forex programozás Fórum Egyéb MT4 build 950 kifagy Válasz erre: MT4 build 950 kifagy

Radulovic Attila
Tag
Bejegyzések száma: 653

„De fura megemészteni, hogy egy külső paramétrekkel operáló függvény nem mindig az aktuális értéket adja vissza.”
Nem azt mondtam, hogy nem az aktuális értéket adja vissza! Valószínűleg nem volt egyértelmű a megfogalmazásom, elnézést.

Én minden eljárásomat úgy építem fel, hogy a logikai gondolatmenetben ne jelentsen az problémát, hogy ha a ticken belül az OrdersTotal() értéke megváltozik. Természetesen fog, hiszen ha pl. egy zárást végzünk (akár a tömbös megoldással), majd nyomunk utána egy pozíció számlálást, és a program megy a további teendők felé, akkor az OrdersTotal() már a lezárásá utáni, helyes és lehető legkurrensebb eredményt ad vissza.

„MarketInfo(„GBPUSD”,MODE_BID) fügvény biztosan ugyanazt az értéket adja akkor is ha OnTick()végén újra lekérdezem, és közte volt egy hosszas analízis (és GBPUSD-n meg záporoztak a tickek).”
Egy tick lefutása mindenképpen gyors kell, hogy legyen. A gyors természetesen relatív, tudom. Viszont mindennek úgy kell felépítve lennie, hogy ha a futás közben változás van, akkor vagy automatikusan, vagy kérésre – lásd RefreshRates() – történő változások ne okozzanak gondot a programlogikában.

„Mégis a(z ‘összeszámláló’) For cikluson belül hajtok végre sikeres zárást, de ez nem befolyásolja az OrdersTotal() értékét.”
De, befolyásolja – pont ezért kellett a tömbös megoldás. Ezzel 100%-ig egyetértek, csak bután fogalmaztam. Ha nem gondolnám így, akkor nem született volna belőle cikk sem :)

Én arra gondolok, hogy a for ciklus előtti lekérdezés és a for ciklus – ha pl. pozíciógyűjtésre használjuk – lefutásának ideje alatt nem fog változni az érték. Én ezért nem tárolom el külön változóban az OrdersTotal() értékét. Magyarul: minden olyan teendőt, ami hosszabb időt vehet igénybe, kiszervezek pl. tömbös megoldásként. Minden más gyorsan történik, tehát még 200 pozíció végignyálazása sem vehet igénybe annyi időt, amely során megváltozik az OrdersTotal() értéke.