Закрытие ордера по бару

 
Цель: при нахождении позиции в убытке, она закрывается по завершению текущего бара. Пробовал скрипт, не закрывает. В чем ошибка?
int start()
{
   static datetime prevtime=0;
   int cnt=0, ticket, total;


***

for(cnt=0;cnt<total;cnt++)
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY) //открыты позиция BUY
         {
            //проверим, может пора закрывать позицию?
            if(Bid<OrderOpenPrice()) //позиция в убытке то:
            {
               if(prevtime == Time[0])
               {
                  OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
                  return(0); //выходим
               }
            }
         }
       else if(OrderType()==OP_SELL) //открыта позиция SELL
         {
            //проверим, может пора закрывать позицию?
            if(Ask>OrderOpenPrice()) //позиция в убытке то:
            {
               if(prevtime == Time[0])
               {
                  OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию 
                  return(0); //выходим
               }
            }
         }
       }
     
      
      return(0);
 
где блок работы с prevtime?
 
где блок работы с prevtime?


а что это такое и как он должен выглядеть?
 
Такой синенький, с кнопочкой
 
Такой синенький, с кнопочкой


:)) смешно

я начинающий и не знаю что это такое.
 
Устал я сегодня, дай хоть приколоться :) Тебе же сказали - выложи весь код, а так догадываться никто не хочет.
 
Цель: при нахождении позиции в убытке, она закрывается по завершению текущего бара. Пробовал скрипт, не закрывает. В чем ошибка?

проверяешь - если в убытке, то запоминаешь время текущего бара, и в этот блок доступ закрываешь.
А в другом блоке смотришь - если время текущего бара больше, чем сохранённое, то закрываешь позицию и обнуляешь все флаги доступа ;)
 
[/quote]
проверяешь - если в убытке, то запоминаешь время текущего бара, и в этот блок доступ закрываешь.
А в другом блоке смотришь - если время текущего бара больше, чем сохранённое, то закрываешь позицию и обнуляешь все флаги доступа ;) [/quote]

если не трудно, выложи кодом плиз.
 
если не трудно, выложи кодом плиз.

нельзя быть таким ленивым =)))
это же не последний код, который ты будешь писАть - оно ещё пригодится ;)
Что толку с того, что тебе датут готовый код, а ты не будешь знать, как именно он работает?

В любом случае, сейчас я не в состоянии сочинять, так что может завтра... И, вообще, подобная помощь поощряется ;) Мне не надо, но на будущее имей в виду )))
 
если не трудно, выложи кодом плиз.

нельзя быть таким ленивым =)))
это же не последний код, который ты будешь писАть - оно ещё пригодится ;)
Что толку с того, что тебе датут готовый код, а ты не будешь знать, как именно он работает?

В любом случае, сейчас я не в состоянии сочинять, так что может завтра... И, вообще, подобная помощь поощряется ;) Мне не надо, но на будущее имей в виду )))


:) да я не ленивый. Просто пишу вроде все просто, а МТ не понимает что я от него хочу :( я на дневке торгую, пробовал еще решить эту проблемму через куртайм. т.е. прикинул, что открывается в начале дневного бара, значит через 79200 сек. бар примерно закончится, написал след. код:
for(cnt=0;cnt<total;cnt++)
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY) //открыты позиция BUY
         {
            //проверим, может пора закрывать позицию?
            if(Bid<OrderOpenPrice()) //позиция в убытке то:
            {
               if((CurTime()-OrderOpenTime())>79200) //позиция открыта более 22 часов
               {
                  OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
                  return(0); //выходим
               }
            }
         }
       else if(OrderType()==OP_SELL) //открыта позиция SELL
         {
            //проверим, может пора закрывать позицию?
            if(Ask>OrderOpenPrice()) //позиция в убытке то:
            {
               if((CurTime()-OrderOpenTime())>79200)
               {
                  OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию 
                  return(0); //выходим
               }
            }
         }
       }
     
      
      return(0);


а МТ опять не понимает. Видимо мышление у меня не программера :)

 
Попробуй проверять только предыдущий бар. Ведь до него условие все равно не выполнялось.
типа:
if(Close[1]<OrderOpenPrice()) //позиция в убытке то:
{
if(prevtime == Time[0]) ....
Причина обращения: