Закрыть нужный нам ордер - страница 3

 

Roman.

Если вы порядочный человек, то вот с этим -

"Ответ не верный, т.к. в этом случае вы ВСЕГДА первым закроете самый свежий (крайний) рыночный ордер, а надо первым закрыть из выбранных двух рыночных тот, у которого профит БОЛЬШЕ."

- надо что-то делать.

 
VladislavVG:

А Вы под каждый конкретный случай пишете программку ? Тоже вариант )))))).

Не совсем: за время перебора ордеров (исполнения цикла фор() ) цена может уйти. На реале посмотрите ;).

)))))))).... Все зависит от размера исполняемого кода и его эффективности. Не забывайте, что пока терминал считает - он пропускает тики, впрочем, для тестера и демо - это не имеет особого значения ;)....

В этой теме мы говорим о конкретном вопросе и конкретном решении.

Я там подкорректировал пост -

"РефрешРаэйтес выполняется внутри, с краю while(), для обновления списка позиций, а не цен, поэтому так цикл будет работать корректно."

Да, в некоторых случаях я действительно пишу программку для решения конкретного вопроса или их комбинации.

Это быстрее чем через тестер.

А в реале - согласен, все может произойти.

Кстати, топикстартер про реал ни слова.))

 
Speeqoolyant:

Roman.

Если вы порядочный человек, то вот с этим -

"Ответ не верный, т.к. в этом случае вы ВСЕГДА первым закроете самый свежий (крайний) рыночный ордер, а надо первым закрыть из выбранных двух рыночных тот, у которого профит БОЛЬШЕ."

- надо что-то делать.


Уж еще пожуйте чуть фарш не разумному, никак не могу вкурить, каким образом здесь будет закрыт первым ордер с максимальным профитом из открытых.

Да, я, не исключено, что подтупил чуть...

Благодарю.

//+------------------------------------------------------------------+
//|                                            Zakr_s_max_profit.mq4 |
//|                                                     Speeqoolyant |
//|                                          speeqoolyant@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Speeqoolyant"
#property link      "speeqoolyant@rambler.ru"

int i, Ticket, Type;
double Profit, Lot;

int start()  {

while (OrdersTotal()>0)
 {
  Profit=-9999999;
  for (i=OrdersTotal()-1; i>=0; i--)
   {
    OrderSelect(i,SELECT_BY_POS);
    if(Profit<=OrderProfit()) {Profit=OrderProfit(); Ticket=OrderTicket(); Type=OrderType(); Lot=OrderLots();}
   }
  if (Type==OP_BUY) OrderClose(Ticket, Lot, Bid, 2);
  
  if (Type==OP_SELL) OrderClose(Ticket, Lot, Ask, 2);

  RefreshRates();
 }

return(0);   }
 
Speeqoolyant:

"РефрешРаэйтес выполняется внутри, с краю while(), для обновления списка позиций, а не цен, поэтому так цикл будет работать корректно."


bool RefreshRates(      )
Обновление данных в предопределенных переменных и массивах-таймсериях. 
То есть, список ордеров эта функция не обновляет, а обновляет она из того, что нам в данном случае нужно, именно Аск и Бид.
 

Да, все, вкурил, ордера закроются в порядке убывания профита:

for (i=OrdersTotal()-1; i>=0; i--)
   {
    OrderSelect(i,SELECT_BY_POS);
    if(Profit<=OrderProfit()) {Profit=OrderProfit(); Ticket=OrderTicket(); Type=OrderType(); Lot=OrderLots();}
   }

Звиняйте, великодушно, сразу не вкурил.

 
Roman.:

Да, все, вкурил, ордера закроются в порядке убывания профита:

Звиняйте, великодушно, сразу не вкурил.


Если символ графика и символ ордера с самым большим профитом не совпадут, то в большинстве случаев нифига он не закроет (хотя, если вдруг цены символов совпадут, то закроет). Я б вообще поостерёгся бы пользоваться скриптами от таких "помощников".
 
Speeqoolyant:

"РефрешРаэйтес выполняется внутри, с краю while(), для обновления списка позиций, а не цен, поэтому так цикл будет работать корректно."

Каких таких позиций?
 
PapaYozh:

Если символ графика и символ ордера с самым большим профитом не совпадут, то в большинстве случаев нифига он не закроет (хотя, если вдруг цена совпадёт, то закроет). Я б вообще поостерёгся бы пользоваться скриптами от таких "помошников".

Понятно...
 
Roman.:

Да, все, вкурил, ордера закроются в порядке убывания профита:

Звиняйте, великодушно, сразу не вкурил.

Принято
 
VladislavVG:
То есть, список ордеров эта функция не обновляет, а обновляет она из того, что нам в данном случае нужно, именно Аск и Бид.
Значит я недоучил матчасть
Причина обращения: