[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 112

 
Всем привет. Ребят не знаю куда написать и поэтому пишу здесь. Мне нужен простой индикатор, что для здешних профессионалов написать не составит труда. Может он уже где то есть, но поиск ничего не дал((. Вообщем нужна гистограмма пересечения машек, чтобы при пересечении появлялись столбики выше и ниже нуля, соответственно красные и зеленые. Машки использую 7ЕМА close и 7ЕМА open. Если не трудно напишите пожалуйста или ткните носом если такой индикатор уже есть. Спасибо)) 
 
Djon777:
Всем привет. Ребят не знаю куда написать и поэтому пишу здесь. Мне нужен простой индикатор, что для здешних профессионалов написать не составит труда. Может он уже где то есть, но поиск ничего не дал((. Вообщем нужна гистограмма пересечения машек, чтобы при пересечении появлялись столбики выше и ниже нуля, соответственно красные и зеленые. Машки использую 7ЕМА close и 7ЕМА open. Если не трудно напишите пожалуйста или ткните носом если такой индикатор уже есть. Спасибо)) 
MACD есть в стандартном наборе индикаторов МТ4.
 
Zhunko:
MACD есть в стандартном наборе индикаторов МТ4.


Я знаю что он есть, но мне нужна именно гистограмма вот такая http://savepic.org/2586171.gif
 
artmedia70:
Одна лишь дискриминация... :(
Для того, чтобы "дискриминировать", надо вначале криминировать! Вопрос только, кого? ;)
 

Добрый день!

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

Буду премного благодарен за помощь! 

 

Доброго времени суток.

Есть индюк SupDem, малость его изменил, добавил буфер толщины полосы.

Пытаюсь найти эти полосы по их номеру относительно 0-го бара

double GetSapDemUP(string sy="0", int tf=0,int ne=0) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "SupDem_5z_1", 6, i+1);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("SupDem_5z_1(): SupDem ",ne," не найден");
  return(0);
}

double GetSapDemDN(string sy="0", int tf=0,int ne=0) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "SupDem_5z_1", 5, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("SupDem_5z_1(): SupDem ",ne," не найден");
  return(0);
}
Не находит, что я сделал не так? помогите кодом
Файлы:
 

Добрый день!

 Уважаемые профи, подскажите ,пожалуйста.

У меня по системе открывается ордер. Если цена превышает на 50п цену открытия этого ордера,то ордер надо модифицировать.

OrderSelect(0, SELECT_BY_POS,MODE_TRADES);   

double OPEN = OrderOpenPrice ();
double maximus = OPEN + 0.00500;
Alert ("maximus = ",maximus);
double minimus = OPEN - 0.00500;
RefreshRates();                                            //Обновляем данные.                                                
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS);           //Вычисляем текущее время в формате HH:MM.
if ((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus))
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES); 
Lootup = OrderLots () * 0.34;
Lootdown = OrderLots () * 0.34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE);
 Alert (GetLastError());
 Deal_bb = 1;
}

 Если это происходит в течение дня,то у меня получается это делать. А если это переносится на след.день,то все слетает.Т.к. в новый день может открыться еще один ордер,и он уже отслеживает по нему,а про старый забывает. Подскажите,пожалуйста, как прописать так,чтобы условие контролировало цену открытия+50 п именно по каждому из лотов,пока лот не закроется в течение нескольких дней?. 

 
berezhnuy:

Доброго времени суток.

Есть индюк SupDem, малость его изменил, добавил буфер толщины полосы.

Пытаюсь найти эти полосы по их номеру относительно 0-го бара

Не находит, что я сделал не так? помогите кодом

Таким способом ты  ищешь цены экстримов, которые находятся в 0 и 1 буфере!!

Пробуй вывести значения через принт или сомент, 2 и 3, 4 и 5  буфера.

пример:

Comment(iCustom(NULL,0, "SupDem_5z_1", 5, i));

 Как-то так...

 
Egori4:

Добрый день!

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

Буду премного благодарен за помощь! 

   Первая из серии статей:


   https://www.mql5.com/ru/articles/1456

 
Boneshapper:

Добрый день!

 Уважаемые профи, подскажите ,пожалуйста.

У меня по системе открывается ордер. Если цена превышает на 50п цену открытия этого ордера,то ордер надо модифицировать.

OrderSelect(0, SELECT_BY_POS,MODE_TRADES);   

double OPEN = OrderOpenPrice ();
double maximus = OPEN + 0.00500;
Alert ("maximus = ",maximus);
double minimus = OPEN - 0.00500;
RefreshRates();                                            //Обновляем данные.                                                
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS);           //Вычисляем текущее время в формате HH:MM.
if ((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus))
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES); 
Lootup = OrderLots () * 0.34;
Lootdown = OrderLots () * 0.34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE);
 Alert (GetLastError());
 Deal_bb = 1;
}

 Если это происходит в течение дня,то у меня получается это делать. А если это переносится на след.день,то все слетает.Т.к. в новый день может открыться еще один ордер,и он уже отслеживает по нему,а про старый забывает. Подскажите,пожалуйста, как прописать так,чтобы условие контролировало цену открытия+50 п именно по каждому из лотов,пока лот не закроется в течение нескольких дней?. 

Перебирайте позиции циклом

for(int i=OrdersTotal()-1; i>=0; i--)
   {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
         if(OrderType()==OP_BUY)
            {
          //ваши действия 
            }
         if(OrderType()==OP_SELL)
            {
          //ваши действия 
            }
       }
   }
 
Причина обращения: