OrderClose error 4107.Что за беда?Как исправить?

 



Тестирую советник на тестере-тестируется тестируется а потом в один момент как бы застревает и график теста замирает и не двигается.В журнале при этом такая вот беда(смотрите скриншот).

Подскажите пожалуйста в чём может быть проблема и как её можно исправить?

Спасибо.

 

ERR_INVALID_PRICE_PARAM 4107 Неправильный параметр цены для торговой функции

 
OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(OrderClosePrice(),Digits),MarketInfo(Symbol(),MODE_SPREAD),NONE);
 

Не подскажите как исправить ошибку более развёрнуто?

Я если честно не очень силён в кодинге.:)

С уважением.

 

Куда уж развернутее...
Найдите в советнике строку содержащую торговую функцию OrderClose(bla,bla,bla,bla,bla);, и замените та ту строку что я написал

 

Заменить все строки с OrderClose(bla,bla,bla)?

Кстати когда заменяю пишет ошибку на слово в строке "NONE"

 
RobinGood писал(а) >>

Заменить все строки с OrderClose(bla,bla,bla)?

Кстати когда заменяю пишет ошибку на слово в строке "NONE"


Исправляюсь CLR_NONE извините
 

Спасибо-буду пробовать.

Если не получится-буду искать программиста.

Спасибо.

 
RobinGood >>:

Спасибо-буду пробовать.

Если не получится-буду искать программиста.

Спасибо.


Посмотрите стандарт функции закрытия ордеров - все, что Вам нужно - возьмите - там все подробно расписано
if(OrdersTotal() > 0)
{
for(ord = 0; ord < OrdersTotal(); ord++)
{
OrderSelect(ord,SELECT_BY_POS,MODE_TRADES);
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == magic)

{

if(OrderType() == OP_BUY)
{

if(Условие закрытия)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,NONE);



magic - внешняя переменная, значение сохраняется при открытии ордера

 
RobinGood писал(а) >>

Спасибо-буду пробовать.

Если не получится-буду искать программиста.

Спасибо.


Если не получиться пишите в личку
 
В тестере такое происходит довольно часто... Частенько в истории есть котировки с ошибками... например шести или семизначные (после запятой). И конечно если такую цену скормить либо в ordersend либо в orderclose, да и вообще в любой торговый приказ - советник подавится такой ценой.
Возьмите себе за правило, любую котировку предварительно нормализовать.
Как и писали выше
т.е. например в приказе открыть ордер с рынка, писать не просто Ask, а NormalizeDouble(Ask,Digits). на работоспособность и скорость это никак не повлияет, но гарантированно застрахует от "неправильных" котировок. Как в тестере, так и в реале.
Причина обращения: