Forex programozás › Fórum › Kérdések az MQL4 programozási nyelvvel kapcsolatban › Nem köt a robotom
Címkézve: magic szám, stoploss, takeprofit, zárási hiba
-
SzerzőBejegyzés
-
Kedves Radu !
Írtam egy robotot. A backteszten jól működik. De élesben nem köt. Ha ma van egy olyan helyzet , hogy kötnie kellene nem köt, de holnap , ha a backteszten fut már beköti.
A charthoz jól adtam hozzá mosolygós fejecske van,. Mi lehet a hiba ?Az 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.
Expertek fülnél nincs semmi üzenet. Csak az elején hogy elindult a robot. Tehát a kötésig sem jut el. Market maker bróker. IBFX és AAAFx. Valóban szeretne SL és TP is beállítani a nyitáskor.
Kellene 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.
Megkaptam 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.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.