3 года коту под хвост
Tickvalue для кроссов совсем не постоянная величина если прибыль рассчитывает в валюте депозита, которая в кросс не входит. Соответсвенно с увеличением OrderPips возрастает ошибка.
Подробнее можно посмотреть например здесь:
_http://ru.investing.com/education/Новичкам/Как-образуется-прибыль-на-forex-и-как-рассчитать-результаты-собственных-сделок-(Ч2)-31339
спс за ссылку
но проблема была в моей функции "int Point_DBL_to_INT(double chk)"
если ей на вход дать число 1.15442, то на выходе будет: 15442, (а должно быть 115442)
если ей на вход дать число 0.15442, то на выходе будет: 15442 (тут она сработает правильно)
дело в том, что с такой большой просадкой как сейчас мой робот не сталкивался - это хорошо, что я заметил это (случайно просто заметил)
вот исправленная функция:
int Point_DBL_to_INT(double chk)
{
string st, sq;
int sf, sl, sqt;
//--------------------
st=DoubleToStr(chk, Digits_now);
sf=StringFind(st, ".", 0)+1;
sq=StringSubstr(st, 0, sf-1);
sqt=StrToInteger(sq);
if (sf==0) return (chk);
sl=StringLen(st)-1;
st=StringSubstr(st, sf, sl);
if (sqt!=0) sf=StrToInteger(sq+st); else
{
sf=StrToInteger(st);
if (chk<0) sf=-sf;
}
return (sf);
}
P.S.:
вы спросите: зачем вообще нужна эта функция?
отвечаю: если вместо неё поставить "order_pips=zoom/Point;", то не выходе этого загадочного выражения на языке MQL4 может быть "0" (в то время, когда этого физически быть не может) - это я определил ещё в старые времена, когда работал над роботом "Lagger", и поэтому я просто отказался от этого загадочного математического выражения
я понимаю всех вас
- кто будет копаться в чужом коде
ответ очевиден: кто писал - тот и будет копаться