Подскажите, где тут ошибки проверки баланса и проверки формирования новой свечи?
Так удаляются устаревшие ордера по времени без увеличения лота или не устаревшие для увеличения лота, и это не говорит, что нужно возвращать лот, т.к. баланс еще меньше начального, т.е. получали лосей.
Лот должен возвращаться, только после получения профита.
В общем чем дальше, тем хуже... никак не въеду в код...
Подскажите, где тут ошибки проверки баланса и проверки формирования новой свечи?
if(OrdersTotal()==0) Enter(); //если нет ордеров - установка ордеров if(OrdersTotal()==1){ // если остался один ордер, то проверяем прибыль abb=AccountBalance(); if(abb<ab){ //если баланс меньше начального, умножаем лот ab=AccountBalance(); Lot=Lot*xLots; DellAllOrders(); Enter(); } if(abb>ab){ //если баланс от сделки положительный, то лот приравниваем к начальному ab=AccountBalance(); Lot=Lots; if(OP==(iOpen(NULL,PER,0))){ //и он не устарел, то ставим второй из этой пары WorkOrders(); if(Type==0) Sell(); if(Type==1) By(); } } } if(OrdersTotal()>=1){ //если есть устаревшие отложенники, один или два if(OP!=(iOpen(NULL,PER,0))){ WorkOrders(); if(Type==4) DellAllOrders(); if(Type==5) DellAllOrders(); //Enter(); } }
Бред какой-то... Поставил вместо
Lot=Lot*xLots;
Lot=0.02;
.. заработало, но мне надо чтоб умножение было, по множителю xLots...
Подскажите, почему при удалении устаревших, двух ордеров, лот накручивается лишний раз и из-за этого тест останавливается? По моей логике, должен накручиваться (но видимо не обязан))), только тогда, когда остался ордер один из двух и баланс меньше того, чем до начала серии. Может просто поспать?)))
Ну и контроль по времени не работает, подскажите, что не так -
Комменты пред функциями не все соответствуют действительности, т.к. переделываю свой старый советник.
СыПасибо!
Первый раз:
Второй и он же последний раз: