Сделайте сервис аттестации программистов ... - страница 5

 
VOLDEMAR:

Очень бы хотелось узнать чем не верен этот вариант ???

 

У вас есть последовательность из n ордеров. Вы выбрали функцией OrderSelect ордер m(m<n).

Во время обработки ордера m, сервер закрывает ордер m-1 и позиция ордера m(который вы обрабатываете) меняется на m-1.

На следующем цикле вы переходите к обработке ордера m-1 и думаете что это новый ордер, а нет это тот же самый ордер m

который сменил свою позицию и занял место ордера закрытого сервером. Таким образом вы два раза подряд обрабатываете

один и тот же ордер.

Документация по MQL5: Торговые функции / OrderSelect
Документация по MQL5: Торговые функции / OrderSelect
  • www.mql5.com
Торговые функции / OrderSelect - Документация по MQL5
 
MrGold166:
это mql4 .. 
я думал, мы на 5-м форуме :)
 

Все смешалось в доме...

Если введут MQL6, а MQL4 еще не уйдет, что же тогда будет?

 
sandex:

У вас есть последовательность из n ордеров. Вы выбрали функцией OrderSelect ордер m(m<n).

Во время обработки ордера m, сервер закрывает ордер m-1 и позиция ордера m(который вы обрабатываете) меняется на m-1.

На следующем цикле вы переходите к обработке ордера m-1 и думаете что это новый ордер, а нет это тот же самый ордер m

который сменил свою позицию и занял место ордера закрытого сервером. Таким образом вы два раза подряд обрабатываете

один и тот же ордер.

позвольте с Вами не согласиться ... И да рассудят нас форумчане ....

for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS))
{

 У нас в терминале есть 10 ордеров ...  но в списке ордера идут 0 1 2 3 4 5 6 7 8 9      Десять ?  0 из программирования сложно выкинуть.

Соответственено OrdersTotal() будет иметь значение 10 , но при обратном отсчете мы берем из ордерс тотал 10-1  тоесть 9 и когда мы доходим до 0 , по условию мы делаем еще одну интерацию цикла 0>=0 

то есть  у нас остается 1 ордер который мы перебираем в этот момент 0>=0  . 

Ничего сверх естественного или неправильного нет ....  

 

Агаа! Я понял суть данной ветки!

Она поможет выявить кодеров, которые могут нести чушь или тупить прямо в этой же ветке.

А значит автоматически пойдут по алгоритму: сказал глупость - бан. :)

так что не стесняемся, высказываем свои самые "умные" мысли. Может повезёт  ;)

 
sandex:
В этом и смысл перебора с конца, ничего военного в том что мы обработали один ордер дважды нет. в худшем случае это нам помешает только если мы считаем ордера, например среднюю цену, один ордер будет посчитан 2 раза. даже если это сильно вмешается в расчеты, на следующем тике все вернется на свои места и мы поставим тейк профит там где он должен быть. На моей памяти при количеств ордеров более 50 и самом худшем  так называемом "брокере" Азии (да да вы поняли о ком я, на I называется) же после того как счет был взят в оборот (сами знаете зачем) такого не происходило не разу. Но и этого можно избежать:

int i,last_ticket;
for(i=OrdersTotal()-1;i>=0;i--) if(OrderSelect(i,SELECT_BY_POS) {
   if(OrderTicket()==last_ticket) continue;
   last_ticket=OrderTicket();
   }
Документация по MQL5: Торговые функции / OrdersTotal
Документация по MQL5: Торговые функции / OrdersTotal
  • www.mql5.com
Торговые функции / OrdersTotal - Документация по MQL5
 
один другого лучше )))
 
snowman:

один другого лучше )))
Вы только тролить можете ??? Предложите свой вариант с объяснением ...
 
VOLDEMAR:
Вы только тролить можете ??? Предложите свой вариант с объяснением ...
А зачем? Для кого? Такое чувство что тут только спорить могут о том как ордера правильно перебирать и кто из всех присутствующих программистов достоин работать в джобе.
 
snowman:
А зачем? Для кого? Такое чувство что тут только спорить могут о том как ордера правильно перебирать и кто из всех присутствующих программистов достоин работать в джобе.
Ну так не можете ничего путевого сказать , так молчите или по делу говорите ....  Если б знали хоть что то то показали ...  Или жалко ??? Или не знаете ничего ....