Hozzászólások
-
SzerzőBejegyzés
-
Hozzászólás: OrderCloseBy invalid #1406
A külföldi fórumokat elnézve nemigazán kérdezhető le.
Ha OrderCloseBy -nál ERR_INVALID_TRADE_PARAMETERS hibaüzenetet kapsz, akkor üzemmódot váltasz. Ez az egy kultúr lehetőség van.
De az általad írt szituációhoz az OrderCloseBy azért nem jó, mert vele csak ellentétes pozíciókat tudsz zárni.
Hozzászólás: OrderCloseBy invalid #1402Örülök, hogy tetszik a blog! :)
Az OrderCloseBy funkció nem minden brókernél megengedett – így az Equilornál sem. Egyébként többszörös zárás során az egyik pozíció spreadjét meg lehet spórolni, igazából talán ez a legnagyobb előnye.
A felezést gyakorlatilag csak piaci módon lehet leprogramozni, azaz kikapcsolt gépnél (szerver oldalon) nem lehet megoldani.
Én egy pozíciót nyitok, és ezt a pozíciót felezem meg amikor a helyzet úgy kívánja. A maradékot általában nullába húzom, vagy csúszóstop megy rá – attól függ, hogy ki hogy kéri, igényli.
A két részletben nyitás is jó megoldás, csak akkor ott több dologra kell figyelni a menedzselést illetően.
Az utolsó stop orderes mondatodat nem értem, gondolom stoplossra gondoltál.
Hozzászólás: Saját piacfigyelő ablakot – hogyan? #1400Nincs mit. Az már csak hab a tortán, hogy az avatarod miatt jöttem rá az egész Gravatar rendszer lényegére :D
Hozzászólás: Saját piacfigyelő ablakot – hogyan? #1398Hello gezatata!
Örülök, hogy tetszik az oldal!
A kérdéseddel kapcsolatban: más instrumentumok árait a legegyszerűbben a MarketInfo eljárással tudod lekérdezni.
double EURGBP_Ask = MarketInfo("EURGBP", MODE_ASK); EURGBP_Bid = MarketInfo("EURGBP", MODE_BID);
Természetesen ez az összes instrumentumra működni fog. Azt vedd figyelembe, hogy az EURUSD tickjeitől függően lehet, hogy nem mindig a legfrissebb adatokat fogod látni. Azaz: ha az EURUSD -nak ritka tickjei vannak, és közben a többi lekérdezett devizapárhoz tartozó árak változnak, akkor valamennyire késve fogod látni az adatokat.
Ha ez nagy problémát jelent, akkor lehet “végtelenítve” használni az expertet, amitől frissebbé válnak az adatlekérdezéseid. Ezt például így tudod megtenni:
while (!IsStopped()) { RefreshRates(); // A műveletek, amiket el akarsz végezni Sleep (100); }
A Sleep() azért kell, mert egyébként olyan gyorsan akarná csinálni az expert a nagy semmit, hogy lefogja a processzort és megmakkan a terminál:)
Végtelenített futás esetén az első ticktől kezdve a robot gyakorlatilag 100 milliszekundumonként fut le, teljesen függetlenül a beérkező tickektől. A RefreshRates() azért kell, hogy a terminál beépített változói, tömbjei (adatai) rendszeresen frissüljenek.
Vedd figyelembe, hogy így hétvégén és zárt piacnál is fut az expert – erre fel kell készíteni esetlegesen. Ha adatokat írsz a naplóba, akkor pl. figyelni kell arra, hogy nehogy több száz megabájt méretűvé duzzadjanak feleslegesen a naplófájlok.
A végtelenített expert esetében addig, ameddig az egy tickre elindult while() véget nem ér, nem fog felugrani F7-re az expert paraméterablaka sem.
Remélem, segítettem!
Hozzászólás: Nem köt a robotom #1353Megkaptam e-mailben a robotod forráskódját.
Három dologra figyelj:
1) A zárásoknál azért fordul elő hogy csak egy pozíciót zár a robotod, mert amikor a for ciklusban a pozícióindex alapján nyálazza át a pozíciókat, akkor egy törlésnél az index maga is megváltozik, így gyakorlatilag lecsúszol egy pozíció zárásának lehetőségéről. Olvasd el ezt a cikket, habár nem pont erről szól de a „Az aktuális pozícióadatok pontossága” bekezdés a lényeg.
Megoldás: zárás előtt számold meg, hány pozíciót kell zárnod. A for ciklus legyen benne egy while ciklusban, ami addig fut ameddig annyi zárás nem történt meg, amennyit számoltál. (legyen persze egy vészleállás is, nehogy végtelenségig próbáljon zárni valamit, amikor azt lehetetlen).
A sikeres záráshoz vezess be egy változót, aminek értékét minden while/for ciklus előtt nullázod, és csak akkor növeled meg, ha a cikluson belül sikeres zárás történt. (OrderClose true -t ad vissza)
2) A másik hiba – emiatt nálam egy darabot nem köt, ha pont a minimális bróker által elvárt stop szintre rakom a TakeProfit értéket – az, hogy a BUY pozíciónál az SL és TP értékeket nem Bid értéktől, míg SELL pozíciónál Ask értéktől számoljuk.
Azaz, az alapvetésünk:
egy BUY pozíció Ask áron nyílik, és Bid értéken zárul;
egy SELL pozíció Bid áron nyílik, és Ask értéken zárul.Az SL és TP értékeket ennek fényében kell kiszámolni.
3) Erről ugyan nem kérdeztél, de mondom: használj magic számokat! A robotod már egy extra kézi kötésnél is hibázni fog, mivel nem szűrsz a pozíciók között. A fent belinkelt cikk ebben is segít.
Hozzászólás: Nem köt a robotom #1352Kellene a kód mutatóba, mert anélkül nem tudok hatékonyan segíteni.
Market makernél elvileg nem gond az SL/TP nyitáskor.
Hozzászólás: Nem köt a robotom #1350Az Expertek fület nézd meg, ott találod az esetleges hibaüzeneteket. Enélkül nem tudok sokat segíteni.
Milyen brókerről van szó? Legvalószínűbb az ECN mód hibája, vagyis hogy az SL és TP értékeket csak a pozíció megnyílása után lehet beállítani. Backtesztben ilyen jellegű korlátozás viszont nincs.
Ezen kívül van még pár ok, de meg kell nézni hogy egyáltalán a kötésig eljut-e a robot, vagy már odáig se.
Hozzászólás: Kötés szimbólum ellenőrzéssel #1348Örülök, hogy segítettem!
Hozzászólás: Adatbekérés MT4 alatt #1344Sajnos nincsen elegánsabb (interaktívabb) adatbekérési lehetőség MT4-ben. Maximum külső modulok alapján.
Ha végteleníted az expertet (while (!IsStopped()) { }) akkor elég egy tick, és gyakorlatilag leállításig fog futni. Természetesen ilyenkor az F7-tel való paraméterváltoztatás nem fog működni, de valamit valamiért.
Ilyen esetben lehet még használni a billentyűzet (bizonyos billentyűk) figyelését is, azonban ez több példányban való futtatáskor nem működik minden példányra nézve megbízhatóan.
A user32.dll se tesz csodát önmagában – a legjobb egy natív, mql4-es megoldás lenne, de erre nemigazán van sajnos lehetőség MT4-ben.
Hozzászólás: Kötés szimbólum ellenőrzéssel #1343Én azt gondolom, hogy mindenképpen a szimbólumok string ellenőrzésével esnék neki a dolognak. Azon egyszerű oknál fogva, hogy gyakorlatilag mindig rendelkezésre állnak az adatok, nem kell globális változókkal vagy más adatmentéssel bajlódni.
A következőket javaslom:
1) olvasd be a számodra fontos pozíciókat (for az OrdersTotal() alapján, magic szám ellenőrzés ha kell, stb.)
2) ha nincs egy pozíció sem, nyilván nyithatsz bármi.
3) ha van pozíció, akkor minden iterációban vizsgáld meg, hogy az adott order OrderSymbol() -ján belül van-e olyan szövegrész, ami az új (nyitandó) pozíciód instrumentumában van. Tehát ha pl. EURUSD -ot akarsz kötni, akkor vizsgáld meg hogy van-e valamilyen EUR vagy USD végződésű/kezdetű szimbólumú pozíció.A konfigurálásnál annyit mindenképpen meg kell adni, hogy az első három és az utolsó három, vagy más karakterek együttállása azonosítja a keresztárfolyamok egy-egy oldalát. Vannak ugyanis olyan brókerek, ahol pl. raknak egy pontot az instrumentumok végére, vagy más postfixet. Van ahol prefix van, így ez teljesen változó lehet. Példa:
EURUSD, USDJPY, stb. – 0-2. karakter, illetve 3-5. karakter
microEURUSD, microUSDJPY – 5-7. karakter, illetve 8-10. karakterÉs így tovább.
Összességében csak a fentieket kell leellenőrizned minden nyitás előtt.
Hozzászólás: Dukascopy adatok 2012 január után #1283Frissítettem a letöltéseket, így már a 2012 január utáni adatok is hozzáférhetőek php szkripteken keresztül.
Hozzászólás: ATR számítás #1246Azt szeretnéd, hogy a három nappal ezelőtti 22:00 órás M30-as gyertyától folyamatosan számoljuk végig a mindenkori pillanatig a 14-es ATR-t? Vagy csak a három nap 22 órás gyertyájához tartozó ATR érték átlaga kell ?
Meg is akarod jeleníteni, vagy csak az adat elég?
Hozzászólás: Instrumentum lista lekérdezése #1240Akkor csak meglett a csoportosítás is, ugye ? ;) Köszi a tippet!
Hozzászólás: Dukascopy adatok 2012 január után #1160Nem kaptam levelet tőled idáig.
Közben észrevettem, hogy van frissebb birt’s patch, ezt feltettem erre az oldalra is. Ezzel nem szabad elszállnia már, és működni fog remélhetőleg.
Milyen e-mail címre küldtél nekem levelet?
Hozzászólás: Dukascopy adatok 2012 január után #1154De maga a terminál is 409-es build? Azzal mennie kell.
Nekem anno működött a JForexes megoldás, ámbár én mindig is a php-s letöltögetős módszert alkalmaztam. Milyen operációs rendszeren próbálkozol? Optimalizáció nincs véletlen bepipálva?A fájlokkal semmi gond nincs, működnek azok rendesen. Egyedül a 416-os kapcsán nincs frissítés.
Mivel ez gyakorlatilag egy kész rendszer patkolása, mindig lesznek vele ilyesmi problémák.
-
SzerzőBejegyzés