Закрытие ордера по бару - страница 2

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


спаисбо, сейчас проверю
 
Неполучается. этот не хороший человек, МТ все равно закрывает только по стопу, через несколько баров.
 
вот полный код.
//+------------------------------------------------------------------+
//|                                                      111.mq4 |
//|                                                             Zmey |
//|                                                  xzmey@yandex.ru |
//+------------------------------------------------------------------+
extern double StopLoss = 120;
extern double TakeProfit = 30;
extern double TrailingStop = 15;
extern double Lots = 0.1;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
{
   datetime prevtime;
   int cnt=0, ticket, total;
   // теперь надо определится в какок состоянии торговый терминал?
   // проверим, есть ли ранее открытые позиции или ордеры?
   total=OrdersTotal();
   if(total<1)
   {
      // нет ниодного открытого ордера
      // на всякий случай проверим, есть ли у нас свободные деньги на счету?
      if(AccountFreeMargin()<(3000*Lots))
      {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0); // денег нет-выходим
      }
      //проверяем возможность открытия позиции по BAY
      if(Open[1]<Close[1])
      {
         if(Ask>=High[1]+8*Point)
         {  
            ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,
            "serfing sample",3,Red); //исполняем
            if(ticket>0)
            {
               if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
            }
            else Print("Error opening BUY order : ",GetLastError()); 
            return(0); 
         }
         
      }
      if(Close[1]<Open[1])
      {
         if(Bid<=Low[1]-8*Point)
         {
            ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,
            "serfingsample",3,Red); //исполняем
            if(ticket>0)
            {
               if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("SELL order opened : ",OrderOpenPrice());
            }
            else Print("Error opening SELL order : ",GetLastError()); 
            return(0); 
        }
     
      return(0);
   }
   for(cnt=0;cnt<total;cnt++)
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY) //открыты позиция BUY
         {
            //проверим, может пора закрывать позицию?
            if(Close[1]<OrderOpenPrice()) //позиция в убытке то:
            {
               if(prevtime == Time[1]) //
               {
                  OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
                  return(0); //выходим
               }
            }
         }
       else if(OrderType()==OP_SELL) //открыта позиция SELL
         {
            //проверим, может пора закрывать позицию?
            if(Close[1]>OrderOpenPrice()) //позиция в убытке то:
            {
               if(prevtime == Time[1])
               {
                  OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //закрываем позицию 
                  return(0); //выходим
               }
            }
         }
       }
     
      
      return(0);
 }
}
// конец.
 
Подожди, а чему у тебя равен prevtime? Он же никогда не равен Time[0] кстати.
 
Подожди, а чему у тебя равен prevtime? Он же никогда не равен Time[0] кстати.

да я его уже пробовал значение ставить 1 и 0. только разницы нет. А как надо?
 
Ветка становится интересной, буду ждать продолжения сериала )
 
Ветка становится интересной, буду ждать продолжения сериала )

:))
Рош, ты бы подсказал молодежи.
 
Мне больше заняться нечем как в чужих кодах копаться. По ветке видно, что проблема пустяковая, самому найти решение не проблема.
 
Мне больше заняться нечем как в чужих кодах копаться. По ветке видно, что проблема пустяковая, самому найти решение не проблема.

Не проблема для тебя, а я уже неделю голову ломаю. МТ уже как меня видит опять с советником, вешается тут же :)
 
Может я был резок, вот посмотри здесь - http://subscribe.ru/archive/fin.forex.forexsystems/200508/10174401.html, может поможет.