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

 
Ребят, вопрос не в тему, я новичок, хотел бы заказать работу, на щас на балансе 0, я могу открыть тему? или надо пополнить счет в начале? немного не поня когда блокируют со счета деньги...
 
OBERON1812:
Ребят, вопрос не в тему, я новичок, хотел бы заказать работу, на щас на балансе 0, я могу открыть тему? или надо пополнить счет в начале? немного не поня когда блокируют со счета деньги...
Сначала пополнить счёт на необходимую сумму, иначе в середине оформления заявки возникнет проблема. Может сначала оформить заявку, потом выбрать исполнителя и пополнить счёт на необходимую сумму.
 

Vitaly Muzichenko:


Обратный перебор по закрытым

Спасибо ... меня интересует обратный перебор по открытым ордерам ... так будет правильно работать?
 for(int i=OrdersTotal()-1; i>=0; i--) {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
 
Yaroslav Nykula:
Спасибо ... меня интересует обратный перебор по открытым ордерам ... так будет правильно работать?
Да, можете проверить через Print();
 
Vitaly Muzichenko:
Да, можете проверить через Print();
 for(int i=OrdersTotal()-1; i>=0; i--) {
  if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
Спасибо ... в принципе мне всё понятно, вот только смущает параметр i=OrdersTotal()-1; почему именно -1, а не просто  i=OrdersTotal(); ...  ведь в данном случае получается , что последний из открытых ордеров будет исключён из пересчёта - или я ошибаюсь? ...








 
Yaroslav Nykula:
Спасибо ... в принципе мне всё понятно, вот только смущает параметр i=OrdersTotal()-1; почему именно -1, а не просто  i=OrdersTotal(); ...  ведь в данном случае получается , что последний из открытых ордеров будет исключён из пересчёта - или я ошибаюсь? ...









OrderTotal() выдаёт количество ордеров столько сколько есть, а учет ордеров начинается с нулевого. То есть минус один надо, что бы было корректно в данном случае.
 
Yaroslav Nykula:
Спасибо ... в принципе мне всё понятно, вот только смущает параметр i=OrdersTotal()-1; почему именно -1, а не просто  i=OrdersTotal(); ...  ведь в данном случае получается , что последний из открытых ордеров будет исключён из пересчёта - или я ошибаюсь? ...
сделайте печать через Print(), и не будет вот таких вопросов, это не сложно
 

Всякому прочитавшему привет.

Вопрос следующий, как в тестере MT4 задать спред или цену ASK имея исторические данные по цене Ask.
Поясняю.
В терминале МТ4 имеем историю по некоторому Symbol (в нем все цены по Bid соответственно) и имеем историю Symbol_ask (все цены по ask, эту историю ТОЖЕ ПРЕДОСТАВЛЯЕТ БРОКЕР)

Возможно ли эти данные использовать в тестере?

 
Yaroslav Nykula:
Спасибо ... в принципе мне всё понятно, вот только смущает параметр i=OrdersTotal()-1; почему именно -1, а не просто  i=OrdersTotal(); ...  ведь в данном случае получается , что последний из открытых ордеров будет исключён из пересчёта - или я ошибаюсь? ...

Потому, что в счёт ведётся с 0. Если у вас 10 ордеров, то считать порядковые номера следует 0..9, то есть 0..(10-1), где OrdersTotal()=10.

Просто помните об этом, когда пишете программы.

 
Yaroslav Nykula:
Спасибо ... в принципе мне всё понятно, вот только смущает параметр i=OrdersTotal()-1; почему именно -1, а не просто  i=OrdersTotal(); ...  ведь в данном случае получается , что последний из открытых ордеров будет исключён из пересчёта - или я ошибаюсь? ...
 Номер1
2
3
4
5
6
7
8
9
10
 Индекс0
1
2
3
4
5
6
7
8
9

Как видите - ордеров десять, но их индексы на 1 меньше, так как в любом массиве счёт начинается с нуля.

OrdersTotal() равен 10, но если начнёте цикл с OrdersTotal(), то будет вылет за пределы массива - индекса ордера 10 нету - самый большой индекс 9 - поэтому OrdersTotal()-1

Причина обращения: