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

 
Может я был резок, вот посмотри здесь - http://subscribe.ru/archive/fin.forex.forexsystems/200508/10174401.html, может поможет.


Спасибо, надеюсь поможет.
 
таки ленивый =)
значит, смотри:
объявляешь ВНЕ ф-ций 2 переменные:
bool close_semaphor = false;
datetime close_time = 0;
int start()
{
...


и заменяешь этот кусок кода:

   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); //выходим
               }
            }
         }


на этот:

   for(cnt=0;cnt<total;cnt++)
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY) //открыты позиция BUY
         {
            //проверим, может пора закрывать позицию?
            if(Close[1]<OrderOpenPrice() && close_semaphor == false) //позиция в убытке то:
            {
               close_time = Time[0];
               close_semaphor = true;
            }
	         if(close_semaphor == true && Time[0] > close_time ) //
            {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
               close_time = 0;
               close_semaphor = false;
               return(0); //выходим
            }

         }


для SELL делаешь аналогично. Вернее, так же =)

 
пацаны, доперло!
сегодня я стал еще умнее :))
всем спасибо
 
таки ленивый =)
значит, смотри:
объявляешь ВНЕ ф-ций 2 переменные:
bool close_semaphor = false;
datetime close_time = 0;
int start()
{
...


и заменяешь этот кусок кода:

   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); //выходим
               }
            }
         }


на этот:

   for(cnt=0;cnt<total;cnt++)
   {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()==OP_BUY) //открыты позиция BUY
         {
            //проверим, может пора закрывать позицию?
            if(Close[1]<OrderOpenPrice() && close_semaphor == false) //позиция в убытке то:
            {
               close_time = Time[0];
               close_semaphor = true;
            }
	         if(close_semaphor == true && Time[0] > close_time ) //
            {
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //закрываем позицию 
               close_time = 0;
               close_semaphor = false;
               return(0); //выходим
            }

         }


для SELL делаешь аналогично. Вернее, так же =)

 
Компостер, тебе специальное спасибо, стану олигархом, я тебя не забуду :)
 
удалил
 
Компостер, тебе специальное спасибо, стану олигархом, я тебя не забуду :)

может тебе прямо сейчас № баековского счёта дать? А то мыло может поменяться =)))))))))))))))))
 
Компостер, тебе специальное спасибо, стану олигархом, я тебя не забуду :)

может тебе прямо сейчас № баековского счёта дать? А то мыло может поменяться =)))))))))))))))))

прям щас не надо. Твой вариант закрывает по окончанию бара не только убыточные но и прибыльные позиции, вот отлажу тогда счет и дашь :))
 
Мне кажется у Компостера не корректный код.....
Допустим поза открылась на нулевом баре
-----------------------------
if(Close[1]<OrderOpenPrice() && close_semaphor == false)
-----------------------------
каков тогда смысл сравнения со старым Клозом ОпенПрайса.....?

С уважением.....
 
OrderOpenPrice() для отложенного ордера применяется? исли да то он равен 0 ?
Немогу заставить отложенный, ордер если он по окончанию бара не открылся, удалиться.
Намекните пожалуйста как это сдлелать.
Причина обращения: