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

 
chief2000 >>:

У меня возникали проблемы, если я задавал массивы для запоминания состояния переменных для каких-либо "i" и

не определял их размерность "[]".

Если массив определён как индикаторный SetIndexBuffer(0,MyArray); в int init() то его не нужно дополнителино инициализировать,

иначе кроме обьявления MyArray[]; нужна ещё и иницализация размера ArrayResize(MyArray,Count);,

причём именно в функции где будет проводится присвоение.

те в

int start()
{ArrayResize(MyArray,Count);
//...
return(0);
}

.

Но если размер Массива обьявлен явно те числом MyArray[1000]; то этого всего не нужно.

Вариант с ArrayResize удобен когда вы не знаете зарания размер массива а вычисляете в программе.

 
Urain >>:

Если массив определён как индикаторный SetIndexBuffer(0,MyArray); в int init() то его не нужно дополнителино инициализировать,

иначе кроме обьявления MyArray[]; нужна ещё и иницализация размера ArrayResize(MyArray,Count);,

причём именно в функции где будет проводится присвоение.

те в

.

Но если размер Массива обьявлен явно те числом MyArray[1000]; то этого всего не нужно.

Вариант с ArrayResize удобен когда вы не знаете зарания размер массива а вычисляете в программе.



Ответ исчерпывающий! Большое Спасибо!

 
chief2000 >>:

Ответ исчерпывающий! Большое Спасибо!

Не удержусь и добавлю, что все это и многое другое компактно и достаточно ясно написано в учебнике, и надо постепенно переходить от прослушивания сказок к самостоятельному чтению.

 

Обьясните, пожалуйста, можно ли вставлять оператор switch после If ?

те:

if (условие)

switch

 
chief2000 >>:

Чукча ловит рыбу на берегу. Всплывает американская подводная лодка, из нее высовывается капитан.

Осмотрелся, крикнул вниз курс норд-ост. Лодка погрузилась и исчезла. Через некоторое время всплывает

русская подлодка. Капитан у чукчи спрашивает, в каком направлении скрылась американская подлодка.

Чукча отвечает:
- Курс норд-ост!
- Ты мне давай тут, не умничай, ты мне пальцем, пальцем покажи!

:)

Подскажите новичку.

Существуют функции в MQL, которые вызыватся для рыботы.

Возможно ли такие функции переписать ввиде DLL, для того, чтобы их можно было вызывать в другие проги, например в Омегу.

Спасибо.

 
granit77 >>:

Не удержусь и добавлю, что все это и многое другое компактно и достаточно ясно написано в учебнике, и надо постепенно переходить от прослушивания сказок к самостоятельному чтению.

Все верно, но на все требуется время. А скоро надо будет изучать MQL5..

 

Люди добрые помогите с условием,.  как правильно прописать условие типа : есть индикатор с 2 уровнями 0 и 100,.. а условие следующее: линия зашла ниже уровня 0 через какое то время вышла выше уровня 0 и зашла за уровень 100 и на выходе из уровня 100 условие должно заканчиватся. 

ׂ 

не выходит прописать в советнике,... через for так вообще виснет при тесте, а надо чтоб не висло,.. не поймц как сделать,........?????

и возможно ли прописать  условие ниже ?


 
Infinity >>:

Люди добрые помогите с условием,. как правильно прописать условие типа : есть индикатор с 2 уровнями 0 и 100,.. а условие следующее: линия зашла ниже уровня 0 через какое то время вышла выше уровня 0 и зашла за уровень 100 и на выходе из уровня 100 условие должно заканчиватся.

не выходит прописать в советнике,... через for так вообще виснет при тесте, а надо чтоб не висло,.. не поймц как сделать,........?????

и возможно ли прописать условие ниже ?


поищи советник с Laguero, по моему там были такие условия точно не помню, но Ваш очень смахивает на него...

 
Infinity писал(а) >>

Люди добрые помогите с условием,. как правильно прописать условие типа : есть индикатор с 2 уровнями 0 и 100,.. а условие следующее: линия зашла ниже уровня 0 через какое то время вышла выше уровня 0 и зашла за уровень 100 и на выходе из уровня 100 условие должно заканчиватся.

не выходит прописать в советнике,... через for так вообще виснет при тесте, а надо чтоб не висло,.. не поймц как сделать,........?????

и возможно ли прописать условие ниже ?

Чтоб не висло должно быть что то вроде:

if(ind[1]>0 && ind[2]<=0) flag_1 = true;
if(ind[1]<0 && ind[2]>=0) flag_1 = false;

if(flag_1 && ind[1]>100 && ind[2]<=100) { flag_2 = true; flag_1=false; }

if(flag_2 && flag_2 && ind[1]<100 && ind[2]>=100)
{
   flag_2 = false;
   // Здесь вроде бы произошло описываемое событие...
   // Но надо экспертом проверять...
}
Вобщем я имел ввиду что с помощью этих флажков надо описывать тогда расчётов меньше будет, и тем более циклов нет...
 
Infinity >>:

Люди добрые помогите с условием,. как правильно прописать условие типа : есть индикатор с 2 уровнями 0 и 100,.. а условие следующее: линия зашла ниже уровня 0 через какое то время вышла выше уровня 0 и зашла за уровень 100 и на выходе из уровня 100 условие должно заканчиватся.

не выходит прописать в советнике,... через for так вообще виснет при тесте, а надо чтоб не висло,.. не поймц как сделать,........?????

и возможно ли прописать условие ниже ?


Может быть что-то вроде этого - только идея(!) - для Индикатора:

x[i]=iRSI(...); // <= Пусть RSI будет в качестве Примера. 

TimeStart = 0;
TimeEnd   = 0;


if(x[i]>0   &&   x[i+1]<=0) {
   TimeStart=Time[i];
}
if(x[i]>=100   &&   x[i+1]<100){
   TimeEnd=Time[i+1];
}

if(TimeStart!=0   &&   TimeEnd!=0   &&   TimeEnd>TimeStart) {
   Range_i_Start = iBarShift(NULL,0, TimeStart);
   Range_i_End   = iBarShift(NULL,0, TimeEnd);

   bool status = false;
   for(int k = ...Range_i_Start -> Range_i_End  ) {
      if(x[k]<0   ||   x[k]>100) {
         status = true;
         break;
      }
   } // for()

   if(status==false) {
      ...Done;

      TimeStart = 0;
      TimeEnd   = 0;
   }
} // if(TimeStart!=0   &&   TimeEnd!=0) {
Причина обращения: