Здравствуйте. Подскажите пожалуста как правильно... со скобками или без? а то пишет постоянно код ошибки 0... или не там ищу... Спасибо
А пробовали выделить отдельно? Какой код ошибки конкретно?
if (OrderSelect(buystop,SELECT_BY_TICKET,MODE_TRADES) == true) { // дальше все остальное }
Подскажите пожалуста как правильно... со скобками или без?
Вообще, хорошим тоном является все разделять скобками, да и случайная ошибка не вылезет рано или поздно, что приведет к неправильной работе программной части.
if(OrderSelect(buystop,SELECT_BY_TICKET,MODE_TRADES) == true) { if(OrderType() == OP_BUYSTOP && (OrderOpenPrice() > (Ask + TS*Point))) { bool res_1 = OrderModify(buystop,Ask + TS*Point,Ask + TS*Point-SL*Point,Ask + TS*Point+TP*Point,0,DeepSkyBlue); if(!res_1) { Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); } else { Print("Цена Stop Loss ордера успешно модифицирована."); } } }
В вашем случае ответ дан предыдущим оратором )
Здравствуйте. Подскажите пожалуста как правильно... со скобками или без? а то пишет постоянно код ошибки 0... или не там ищу... Спасибо
вариант 1
вариата 2
Здравствуйте. Скорее всего. не там ищите. Как минимум нужно нормализовать все цены, переданные в функцию модификации ордера.
Далее вопрос к этой строке OrderOpenPrice() > Ask + TS*Point. Цена аск может повторяться несколько раз, а значит Вы будете модифицировать ордер на ту же цену. Нужно добавить проверку, что ТП или СЛ уже модифицированы по текущей цене аск.
Да, второй вариант, приведенный Вами, правильнее.
Здравствуйте. Подскажите пожалуста как правильно... со скобками или без? а то пишет постоянно код ошибки 0... или не там ищу... Спасибо
вариант 1
вариата 2
1. При выделении ордера по тикету pool игнорируется - MODE_TRADES не имеет никакого значения и он тут не нужен (его использование не является ошибкой, но говорит о том, что программист не совсем понимает что он делает)
2. Для того, чтобы понять из какого списка выбран ордер, нужно проверить время его закрытия: если == 0 --> значит ордер в списке открытых, если не равен нулю - ордер уже закрыт, и находится в списке закрытых, соответственно, и модифицировать его уже бесполезно.
3. Сначала сделайте правильно выбор, потом уже пробуйте модифицировать. Ну и со скобками - всё, что должно происходить при истинности условия - всё в скобки. За скобки выносите всё, что должно быть в случае "иначе"
1. При выделении ордера по тикету pool игнорируется - MODE_TRADES не имеет никакого значения и он тут не нужен (его использование не является ошибкой, но говорит о том, что программист не совсем понимает что он делает)
2. Для того, чтобы понять из какого списка выбран ордер, нужно проверить время его закрытия: если == 0 --> значит ордер в списке открытых, если не равен нулю - ордер уже закрыт, и находится в списке закрытых, соответственно, и модифицировать его уже бесполезно.
3. Сначала сделайте правильно выбор, потом уже пробуйте модифицировать. Ну и со скобками - всё, что должно происходить при истинности условия - всё в скобки. За скобки выносите всё, что должно быть в случае "иначе"
Спасибо.
1. Понял
2. А так что происходит попытка модифицировать ордер из истории? :) Я думаю этот параметр при выборе такое исключает MODE_TRADES (по умолчанию) - ордер выбирается среди открытых и отложенных ордеров.
3. тогда else за скобки?
Код ошибки 0... ето при модификации ордерор... непосредственно при исполнении программы. Спасибо.
Alexander Puzanov:
В этом разе err #0 это попытка задать ордеру те же самые параметры, которые у него и так есть
При этом когда ошибка 0 - серверу отсылается запрос на модификацию?
Вот в етом и причина того что терминал жрет ресурс впса... а как можно обойти этот момент... ?
Вот в етом и причина того что терминал жрет ресурс впса... а как можно обойти этот момент... ?
Alexander Puzanov:
Елементарно - сверяйте 3 новых параметра с существующими до отправки заявки OrderModify
Спасибо. Но мне кажется что етот параметр проверки исключает отсылку цены равной или меньше.
OrderOpenPrice() > Ask + TS*Point
Спасибо.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Подскажите пожалуста как правильно... со скобками или без? а то пишет постоянно код ошибки 0... или не там ищу... Спасибо
вариант 1
вариата 2