Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 132

 
Люди. Помогите пожалуйста. Вопрос такой. Делаю советник на индикаторе MACD. Есть фактически два условия на открытие и два на закрытие. Первое условие на закрытие Buy: Сигналка больше 0, MACD больше 0, первый бар меньше второго, а второй больше третьего. Второе условие: сигналка меньше 0, MACD меньше 0, первый бар меньше второго, а второй меньше первого. Но есть одно но.... Эти условия целиком и полностью копируют условия сделки на закрытие продажи. Как их разделить? Подскажите пожалуйста. Есть одна идея, что пик повторился на гистограмме, но как тогда описать, что пик уже был при этом? Как создать такую память в советнике?
 

Всем привет, пишу советник. Суть такова - открывается два разно направленных стоп ордера при срабатывании одного из них второй удаляется, но в тестере удаляется только buy ордер при попытке удалить sellstop выходит ошибка 4108 неверный тикет. Помогите разобраться. Вставил функцию которая удаляет ордер. 

Заранее спасибо!!! 

void DellSell()
  {
   int dell;
   for(int i=OrdersTotal() -1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_SELLSTOP && CountBuyDell()>0)
               dell=OrderDelete(OrderTicket());
            if(!dell)
              {
               Print("Ордер SellStop не удален");
              }
           }
        }
     }
   return;
  }
 

Приветствую. Подскажите как правильно взять данные с индикатора.

Нужны данные с красных и синих значков. В соответствующих буферах, когда нет прорисовки, какие-то астрономические значения. Я ограничил их числом в 10000. Вроде-бы работает, но есть пропуски сигналов. Как исправить? Вот то как я наколхозил:

  PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
  PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);  
 if (PriceHigh1<10000) PriceHigh=PriceHigh1;  else PriceHigh=0;
 if (PriceLow1<10000) PriceLow=PriceLow1;  else PriceLow=0;
Файлы:
 
Andrey Sokolov:

Приветствую. Подскажите как правильно взять данные с индикатора.

Нужны данные с красных и синих значков. В соответствующих буферах, когда нет прорисовки, какие-то астрономические значения. Я ограничил их числом в 10000. Вроде-бы работает, но есть пропуски сигналов. Как исправить? Вот то как я наколхозил:

  PriceHigh1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 4, 0);
  PriceLow1=iCustom(NULL, 0, "TMAlCG_mladen", TimeFrame, HalfLength, Price, BandsDeviations, Interpolate, alertsOn, alertsOnCurrent, alertsOnHighLow, alertsMessage, alertsSound, alertsEmail, 3, 0);  
 if (PriceHigh1<10000) PriceHigh=PriceHigh1;  else PriceHigh=0;
 if (PriceLow1<10000) PriceLow=PriceLow1;  else PriceLow=0;

В код не смотрел, но могу предположить что это поможет. Могу ошибаться:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
 
Vitaly Muzichenko:

В код не смотрел, но могу предположить что это поможет. Могу ошибаться:

if (PriceHigh1!=INT_MAX) PriceHigh=PriceHigh1;  else PriceHigh=0;
if (PriceLow1!=INT_MAX) PriceLow=PriceLow1;  else PriceLow=0;
Спасиб что не проходите, но не помогло.
 
Andrey Sokolov:
Спасиб что не проходите, но не помогло.
Попробуйте ещё с EMPTY_VALUE сравнивать, раз там "астрономические" значения.
 
ArraySearchDouble() и EquationDirect()в старой версии mql 4 есть. А новой версии есть какие небуть аналоги.
 
27311065:
ArraySearchDouble() и EquationDirect()в старой версии mql 4 есть. А новой версии есть какие небуть аналоги.
А в старой версии где такое видели? Это же самописные функции. Нет?
 
спасибо за подсказку 
 

Подскажите, пожалуйста, как лучше организовать работу с данными  - дан числовой ряд, который будет разбиваться на подгруппы в зависимости от результатов вычисления, эти группы надо сохранить в массив, кроме того у каждой группы будет два или более показателя на группу (группе чисел отдельно будет принадлежать расчетный показатель). Выглядят данные так

1/1,2,3,4/23/33

2/1,4,5/26/11

3/3,4,5,33,56,38/21/44

ну и так далее