Помогу доработать исправить советник, индикатор - страница 5

 
Natalya Dzerzhinskaya:
Как определять пинбары на разных тф??

Вот так отлично получается определять))

extern int TF = 60//Тайм фрейм на котором определяем пинбары
//---
bool PinbarLong, PinbarShort;
//---
int start() {    

      PinbarLong  = MathMin(iOpen(Symbol(), TF, 1),iClose(Symbol(), TF, 1))- iLow(Symbol(), TF, 1)
                    >= (iHigh(Symbol(), TF, 1)-iLow(Symbol(), TF, 1))*0.75;           

      PinbarShort = iHigh(Symbol(), TF, 1)- MathMax(iOpen(Symbol(), TF, 1),iClose(Symbol(), TF, 1))
                    >= (iHigh(Symbol(), TF, 1)-iLow(Symbol(), TF, 1))*0.75;  

     if (PinbarLong) действие для buy;
     if (PinbarShort) действие для sell;

return(0);}//StartEnd
 
FXwin:

Вот так отлично получается определять))

Хороший вариант!! Спасибо))

 
Natalya Dzerzhinskaya:

Хороший вариант!! Спасибо))

С разрешения автора, выложу кроссплатформенную функцию

//===============================================================================================
//---------------------------------- Функция находит Пин-бар -----------------------------------+
//===============================================================================================
MqlRates _rates[1];
int GetPinBar(string symb="0", ENUM_TIMEFRAMES tf=0, double kf=0.75) {
 if(symb=="0") symb=Symbol();
  double open1=0,high1=0,low1=0,close1=0;
   CopyRates(symb,tf,1,1,_rates);
   open1=rates[0].open;
   high1=rates[0].high;
   low1=rates[0].low;
   close1=rates[0].close;
    if(MathMin(open1,close1)-low1 >=(high1-low1)*kf) return(1);
    if(high1-MathMax(open1,close1)>=(high1-low1)*kf) return(2);
  return(0);
 }
 
Vitaly Muzichenko:

С разрешения автора, выложу кроссплатформенную функцию

Я только "ЗА" участие))

 
Здравствуйте! помогите настроить робот. Добавил в него время закрытие и не работает.    
Файлы:
0j1_uhskn.mq4  14 kb
 
Romal001:
Добавил в него время закрытие и не работает.    

Время добавил а сам процесс закрытия не добавил))


 
int BuyOrders()
 {
  int co,t;
  for(co=0; co<OrdersTotal(); co++)
   {
    if(OrderSelect(co,SELECT_BY_POS))
     if(OrderSymbol()==Symbol())
      if(OrderMagicNumber()==Magik)
       {
        if(OrderType()==OP_BUY) t++;
       }
   }
  return(t); 
 }

int SellOrders()
 {
  int cp,t;
  for(cp=0; cp<OrdersTotal(); cp++)
   {
    if(OrderSelect(cp,SELECT_BY_POS))
     if(OrderSymbol()==Symbol())
      if(OrderMagicNumber()==Magik)
       {
        if(OrderType()==OP_SELL) t++;
       }
   }
  return(t); 
 }
 
void CloseSell()
 {
  int t;
  while(SellOrders()>0)
   {
    for(int c=0; c<=OrdersTotal();c++)
     {
      if(OrderSelect(c,SELECT_BY_POS, MODE_TRADES))
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magik)//
        {              
         if(OrderType()==OP_SELL)
          {
           for(t=0; t<=5; t++)
            {
             RefreshRates();
             int ticket=OrderClose(OrderTicket(),OrderLots(),Ask,10,Red);
             int e=GetLastError();
             if(e==0) break; else Print("error close Sell : "+e);
            }
          }
        }
     }
   }
  return;
 }

void CloseBuy()
 {
  int t;
  while(BuyOrders()>0)
   {
    for(int c=0; c<=OrdersTotal();c++)
     {
      if(OrderSelect(c,SELECT_BY_POS, MODE_TRADES))
       if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magik) //
        {              
         if(OrderType()==OP_BUY)
          {
           for(t=0; t<=5; t++)
            {
             RefreshRates();
             int ticket=OrderClose(OrderTicket(),OrderLots(),Bid,10,Red);
             int e=GetLastError();
             if(e==0) break; else Print("error close Sell : "+e);
            }
          }
        }
     }
   }
  return;
 }
Вроде вот.
 
Romal001:
Вроде вот.

Он у меня, не так и не так, не работает 

 
if(closeneed && OrdersTotal()>0){
      CloseBuy(); CloseSell();
 
Romal001:

Исправлено


Файлы:
Причина обращения: