Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 351

 

Доброго времени суток !

Проблема возникла на ровном месте, советник работал, проблем не было, но стоило мне вставить новую функцию(траллинг стоп), как у меня во всем советнике перестали работать OrderSelect, выдает ошибку 4051 ERR_INVALID_FUNCTION_PARAMVALUE - Недопустимое значение параметра функции. Сначала не понял, думал где то что-то поменял может, удалил траллинг стоп, вернул все как было, но OrderSelect так и выдает ошибку.

Вот код на всякий случай:

         for(int i = OrdersTotal(); i > 0; i--)
           {
            if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
              {
               if(OrderType() == OP_SELL)
                 {
                  if(!OrderClose(OrderTicket(), Lots, Ask, slippage, clrRed))
                    {Print("Error Order Close SELL = ", GetLastError());}
                 }
              }
            else
              {Print("Error order select, try order close SELL = ", GetLastError());}
           }


 
Vitaliy Sendyaev:

Доброго времени суток !

Проблема возникла на ровном месте, советник работал, проблем не было, но стоило мне вставить новую функцию(траллинг стоп), как у меня во всем советнике перестали работать OrderSelect, выдает ошибку 4051 ERR_INVALID_FUNCTION_PARAMVALUE - Недопустимое значение параметра функции. Сначала не понял, думал где то что-то поменял может, удалил траллинг стоп, вернул все как было, но OrderSelect так и выдает ошибку.

Вот код на всякий случай:



Это не полный код. Скорее всего где-то скобку удалили.
 
Vitaliy Sendyaev:  OrderSelect выдает ошибку 4051 ERR_INVALID_FUNCTION_PARAMVALUE - Недопустимое значение параметра функции

Вот код на всякий случай:   for(int i = OrdersTotal(); i > 0; i--)

надо   for (int i = OrdersTotal() -1; i>=0; i--)   ордера нумеруются с нуля и потому самый больший номер на 1 меньше количества

 
STARIJ:

надо   for (int i = OrdersTotal() -1; i>=0; i--)   ордера нумеруются с нуля и потому самый больший номер на 1 меньше количества

Точно! А я и не заметил... Спать больше нужно


 
STARIJ:

надо   for (int i = OrdersTotal() -1; i>=0; i--)   ордера нумеруются с нуля и потому самый больший номер на 1 меньше количества


Спасибо !

 
Valerius:

Это не серьёзно... Зачем они (input и extern) тогда нужны....

А что тут не серьёзного? Вы ветке по кодам задали вопрос ну и получили соответствующий ответ.
Ну а если не додумались перезагрузить терминал, то вам уже ответили - сервисдеск.

 
Valerius:  что делать, если например сегодня я в советнике в настройках выставил настройки, то на другой день некоторые значения настроек оказываются пустыми?

Трудно догадаться, как Вы этого добились. Код советника Вам выложить жалко, да и мне весь его смотреть лень. Сделайте копию под другим именем, удалите все, кроме параметров и пустой функции OnTick (или Start ???). Эффект сохраняется? Покажите полученный код

 
Vitaliy Sendyaev:  Спасибо !

Помогло? А как раньше работало?

 

простите разобрался,но непонятно зачем в oncalculate передавать значения предопределенных переменных, если они глобальные и так-же доступны

 
ijonhson:

Здравствуйте, хочу сделать советник на основе индикатора, скопипастил код индикатора в ontick, не хватает переменных из функции onCalculate, мне это все надо будет получать через copytime copyhigh copylow и т.д. или есть вариант попроще и побістрее?

iCustom в помощь

iCustom - Технические индикаторы - Справочник MQL4
iCustom - Технические индикаторы - Справочник MQL4
  • docs.mql4.com
[in] input-параметры пользовательского индикатора, разделенные запятыми. Тип и порядок следования параметров должен соответствовать. Если параметры не указаны, то будут использованы значения по умолчанию.
Причина обращения: