Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 417

 
evillive:



Так мне нужно целое число...
 

Народ, нужна помощь. Функция должна закрывать половину ордеров обязательно начиная с самого старого. В первом случае ордера закрываются через один почему-то, а во втором начинают закрываться не в том порядке.

void CloseHalfOrders (int otype)// ф-ция закрытия половины ордеров сетки
{
  int count = 0; double CTbuy = CountTrades(OP_BUY); double CTsell = CountTrades(OP_SELL); 
  for (int i = 0; i<=OrdersTotal;i++)
  {
    if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype)
       {
         if (otype == OP_BUY)
         { 
           if (count<CTbuy/2 && CTbuy>3 )
           
             OrderClose(OrderTicket(),OrderLots(),Bid,0,Black);
             count++;
             Sleep(1000);
           
         }
       
       
         else if (otype == OP_SELL)
         {
           if (count<CTsell/2 && CTsell>3)
           
           OrderClose(OrderTicket(),OrderLots(),Ask,0,Black);
           count++;
           Sleep(1000);
           
         }
       }
     }
   }
   
 }
 for (int i = OrdersTotal()-1; i>=0; i--)
 
vadynik:

Так мне нужно целое число...
MathRound
 
evillive:
MathRound


так это округление, число ж не становится int, а остается дабл
 
vadynik:

так это округление, число ж не становится int, а остается дабл

И что? Есть принципиальная разница между 1 и 1.0 для расчётов? Формат конечно дабл, но значение целое.


Особо извращённый вариант тогда: DoubleToStr а потом StringToInteger

 
vadynik:

Подскажите как убрать предупреждение в новом компиляторе

possible loss of data due to type conversion

int    SizeB      =MathAbs(Open[1]-Close[1])/Point;

Так помогает 

int    SizeB      =(int) ( MathAbs(Open[1]-Close[1])/Point );

 
Zhunko:



Спасибо, так нет предупр., оно мне уже глаз выело)
 

Здрасьте! Искал у Кима, но не нахожу что-то, из чего можно узнать: Из какого ордера (отложки) открылась позиция? Из лимитника или стопового?

Пытался сравнить цены последнего открытого ордера

if(MathAbs(GetOrderOpenPrice()-LastPrice) <= slip)

с открытой по нему позицией, и что-то нарушается вся логика. Может есть что-нибудь более подходящее? Спасибо!

 
Trader7777:

Народ, нужна помощь. Функция должна закрывать половину ордеров обязательно начиная с самого старого. В первом случае ордера закрываются через один почему-то, а во втором начинают закрываться не в том порядке.


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


https://www.mql5.com/ru/forum/145455/page406

 
borilunad:

Здрасьте! Искал у Кима, но не нахожу что-то, из чего можно узнать: Из какого ордера (отложки) открылась позиция? Из лимитника или стопового?

Пытался сравнить цены последнего открытого ордера

с открытой по нему позицией, и что-то нарушается вся логика. Может есть что-нибудь более подходящее? Спасибо!

Борис. Попробуй в комментарии отложек писать - к лимитникам limit, к стоповым - stops. Тогда по этим комментариям открытых позиций узнаешь от чего там ноги выросли. Только частичное закрытие сотрёт эти комментарии. Может ещё чё может комментарии грохнуть. Только лишь удалённые отложки в истории сохраняются. Сработавших там нет. Приходится через ... придумай сам через что приходится извращаться...
Причина обращения: