Как убрать эту долбаную ошибку? Она меня уже достала. Проверяю каждый вводный параметр функции. У меня, в данный момент, это так:
Т.е. если параметр не изменён, то изменять его ненужно. Раньше я так не делал, но решил уж...
Дальше у меня параметры передаются в метода модификации ордера так:
Нв выходе в журнале:
Получается, журнал уведомил, типа модификация: ОК, а дальше... ошибка. Ни один параметр при этом не изменился.
Ордер отложенный. Так что менять можно цену открытия, стоп и тейк. И это, как я понимаю, не противоречил документации.
Кто сталкивался с подобным? Как решать?
Вы неправильно работаете с кодом ошибки, забывая, что код ошибки после ваших многочисленных функций уже переопределен.
Поэтому при возникновении ошибки ее код надо сохранить в локальную переменную и уже потом оттуда, после массы ваших последующих вызовов, распечатать.
Вы неправильно работаете с кодом ошибки, забывая, что код ошибки после ваших многочисленных функций уже переопределен.
Поэтому при возникновении ошибки ее код надо сохранить в локальную переменную и уже потом оттуда, после массы ваших последующих вызовов, распечатать.
А может ещё и массив ошибок завести? Ведь в документации чёрным по белому написано, что переменная _LastError хранит номер последней ошибки. А сброс её производится функцией ResetLastError(). Если между вызовами _LastError не было ошибок больше, то _LastError хранит значение последней ошибки. У меня по ходу кода больше не было ошибок. А значится, вопрос не в этом.
Тем более, заводит переменные для ошибок в каждом методе и потом принтовать эти переменные в экспертах не очень то и логично.
Ведь если есть переменная для сбора ошибок, то зачем их плодить?
evillive, как это нет проверок? Я же написал выше:
if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[11])) \\ Если текущая цена не равна новой.. из массива, то.. New_OOP = ND (fd_MurreyLevelsValue[11]); \\.. новая цена равна этому новому значению цены из массива( расчитанного ). else New_OOP = OrderOpenPrice(); \\ Иначе новая цена равно текущей цене выбранного ордера. Т.е. не изменяется. if (OrderStopLoss() != ND (fd_MurreyLevelsValue[12])) New_SL = ND (fd_MurreyLevelsValue[12]); else New_SL = OrderStopLoss(); if (OrderTakeProfit() != ND (fd_MurreyLevelsValue[2])) New_TP = ND (fd_MurreyLevelsValue[2]); else New_TP = OrderTakeProfit();
Для первого даже коммент дал. Хотя там всё элементарно.
Как ещё можно тут проверить?
осознал, потому и убрался )))
Я делаю двойную проверку, что не равен и направлен куда ожидаешь!
Борис, что же Вы имеет ввиду? Ведь у меня чётко написано, что если цена не такая.. то так... иначе... текущая... К чему тут ещё? Можно и 20 раз проверять... :) Ведь это не разумно. Я уже второй день бьюсь над этим кодом. Раньше как-то не сталкивался с подобным косяком. Теперь столкнулся. У меня эти все методы уже написаны и протестированы много раз. Тут столкнулся с проблемой.
Дело в том, что я больше любитель чутка других тактик. Но писав последний сов, наткнулся на этот глюк. Вот уже сам не знаю куда какпать, т.к. распринтовав весь код в доль и поперёк больше у меня нет мыслей. Потому функция OrderModify() встроенная. И реализацию её я не знаю..
evillive, как это нет проверок? Я же написал выше:
Для первого даже коммент дал. Хотя там всё элементарно.
Как ещё можно тут проверить?
Виктор, так у тебя-же после проверки присваивается новое значение или нет... А надо проверить
if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[11]) // Если текущая цена не равна новой.. из массива || OrderStopLoss() != ND (fd_MurreyLevelsValue[12]) // или || OrderTakeProfit() != ND (fd_MurreyLevelsValue[2])) // или // если одно из условий выполнено пойдём в модифай...
Виктор, так у тебя-же после проверки присваивается новое значение или нет... А надо проверить
Алексей, и где же у Вас проверка на неизменность значения передаваемых функции? У меня это выше уже учтено. А надобность модификации вообще в старте выполняется. Там есть уровни, если индюк сообщил, что уровень изменился, то пошли дальше...
Борис, что же Вы имеет ввиду? Ведь у меня чётко написано, что если цена не такая.. то так... иначе... текущая... К чему тут ещё? Можно и 20 раз проверять... :) Ведь это не разумно. Я уже второй день бьюсь над этим кодом. Раньше как-то не сталкивался с подобным косяком. Теперь столкнулся. У меня эти все методы уже написаны и протестированы много раз. Тут столкнулся с проблемой.
Дело в том, что я больше любитель чутка других тактик. Но писав последний сов, наткнулся на этот глюк. Вот уже сам не знаю куда какпать, т.к. распринтовав весь код в доль и поперёк больше у меня нет мыслей. Потому функция OrderModify() встроенная. И реализацию её я не знаю..
evillive, как это нет проверок? Я же написал выше:
if (OrderOpenPrice() != ND (fd_MurreyLevelsValue[11])) \\ Если текущая цена не равна новой.. из массива, то.. New_OOP = ND (fd_MurreyLevelsValue[11]); \\.. новая цена равна этому новому значению цены из массива( расчитанного ). else New_OOP = OrderOpenPrice(); \\ Иначе новая цена равно текущей цене выбранного ордера. Т.е. не изменяется. if (OrderStopLoss() != ND (fd_MurreyLevelsValue[12])) New_SL = ND (fd_MurreyLevelsValue[12]); else New_SL = OrderStopLoss(); if (OrderTakeProfit() != ND (fd_MurreyLevelsValue[2])) New_TP = ND (fd_MurreyLevelsValue[2]); else New_TP = OrderTakeProfit();
Для первого даже коммент дал. Хотя там всё элементарно.
Как ещё можно тут проверить?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как убрать эту долбаную ошибку? Она меня уже достала. Проверяю каждый вводный параметр функции. У меня, в данный момент, это так:
Т.е. если параметр не изменён, то изменять его ненужно. Раньше я так не делал, но решил уж...
Дальше у меня параметры передаются в метода модификации ордера так:
Нв выходе в журнале:
Получается, журнал уведомил, типа модификация: ОК, а дальше... ошибка. Ни один параметр при этом не изменился.
Ордер отложенный. Так что менять можно цену открытия, стоп и тейк. И это, как я понимаю, не противоречил документации.
Кто сталкивался с подобным? Как решать?