[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 149

 

Вот здесь я недавно отвечал на аналог. вопрос.

https://www.mql5.com/ru/forum/109048/page11

-Посмотрите. 

В вашем случае можно, наверное, так:

if (AutoClose) { //если выключатель закрытия включен 

//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                 //return(0); // выходим
                }       
      
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
     
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
   
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_
 

Господа, обьясните пожайлуста, чем отличается 

NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,10,0)],4)
от
NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,iBarShift(NULL,0,Time[1],FALSE),1)] + 10 * Point,4)

нифига не врублюсь че такое  iBarShift и нафига он

 
rid >>:

Вот здесь я недавно отвечал на аналог. вопрос.

'Вопрос к знатокам'

-Посмотрите.

В вашем случае можно, наверное, так:


Спасибо, rid!

У меня все заработало, я вот так сделал.

   if ((Close_P)&& TimeCurrent()>=StrToTime(CloseHour+":00")){  // даже по времени сделал
   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);
    }
    }


 
Dimoncheg >>:

Господа, обьясните пожайлуста, чем отличается

от

нифига не врублюсь че такое iBarShift и нафига он

int iBarShift( string symbol, int timeframe, datetime time, bool exact=false)
Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости от параметра exact, -1 или смещение ближайшего бара.
Параметры:
symbol - Символьное имя инструмента. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
time - Значение времени для поиска.
exact - Возвращаемое значение если бар не найден. FALSE - iBarShift возвращает ближайший. TRUE - iBarShift возвращает -1.
 
1Rakso >>:
int iBarShift(string symbol, int timeframe, datetime time, bool exact=false)
Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости от параметра exact, -1 или смещение ближайшего бара.
Параметры:
symbol - Символьное имя инструмента. NULL означает текущий символ.
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика.
time - Значение времени для поиска.
exact - Возвращаемое значение если бар не найден. FALSE - iBarShift возвращает ближайший. TRUE - iBarShift возвращает -1.

Да справку то я читал, а че там написано нифига не пойму, "Функция возвращает смещение бара" - че это значит? В первом случае туда просто количество свечей вставлено, а во втором смещение какоето, мож кто на пальцах обяснит? Мне по идее нужен ближайший хай после достижения неких условий, первый случай не подойдет потому что за 10 баров хая может и не быть (и может за 20 и 30 тоже не быть), как его более правильно расписать будет (ближайший хай например после условия пересечения с 2 Машек)?

 
Dimoncheg >>:

Да справку то я читал, а че там написано нифига не пойму, "Функция возвращает смещение бара" - че это значит? В первом случае туда просто количество свечей вставлено, а во втором смещение какоето, мож кто на пальцах обяснит? Мне по идее нужен ближайший хай после достижения неких условий, первый случай не подойдет потому что за 10 баров хая может и не быть (и может за 20 и 30 тоже не быть), как его более правильно расписать будет (ближайший хай например после условия пересечения с 2 Машек)?

ibarshift показывает в каком баре от начала графика находится n-ная секунда time

 
Dimoncheg >>:

Да справку то я читал, а че там написано нифига не пойму, "Функция возвращает смещение бара" - че это значит? В первом случае туда просто количество свечей вставлено, а во втором смещение какоето, мож кто на пальцах обяснит? Мне по идее нужен ближайший хай после достижения неких условий, первый случай не подойдет потому что за 10 баров хая может и не быть (и может за 20 и 30 тоже не быть), как его более правильно расписать будет (ближайший хай например после условия пересечения с 2 Машек)?

Ты даёш ей Time а получаеш schift.

Допустим ты знаешь время нулевого бара.

Прошли некоторые события,

ситуация изменилась и ты хочеш проверить положение бара с данным временем относительно нулевого бара.

Вот тут и нужна эта функция.

 

Dimoncheg

Я сам клиент этого раздела)

======================

У меня еще вопрос, как поделить луч ZZ попалам что бы высчитать его уровень и сделать фиксацию на этом уровне?


   double ind1.up = iCustom(Symbol(), PERIOD_H1, "ZigZag_NK", ZZ_Depth1, 5, 3, 0, 0);
   double ind1.dn = iCustom(Symbol(), PERIOD_H1, "ZigZag_NK", ZZ_Depth1, 5, 3, 1, 0);
   if (ind1.up != EMPTY_VALUE  ) ind1.arr_1 =- 1;
	else if (ind1.dn != EMPTY_VALUE )   ind1.arr_1 = 1;  
   

   if ((Close_P)&& ind.arr_1 /2*Point){   // как вписать формулу что я не так делаю? 
   
   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);
    }
    }
 
Мой индикатор внутри кода переинициализируется, мне надо знать состояние до и после, чтоб сравнить. Как лучше реализовать данный процесс?
 
1Rakso >>:

Dimoncheg

Я сам клиент этого раздела)

======================

У меня еще вопрос, как поделить луч ZZ попалам что бы высчитать его уровень и сделать фиксацию на этом уровне?


В последней точке зигзаг не рассчитывается. Как правило и зафиксироваться на этом уровне не удасться.

Причина обращения: