Radulovic Attila
Tag
Bejegyzések száma: 653

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.