Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 504

 
niktron:

Здравствуйте!

Подскажите как записать условие-

если свободной маржи хватает для открытия позиции?

(Чтобы не выскакивала ошибка 131)...Спасибо!

Вам нужно проверять допустимый объём позиции, а не маржу. 131-я ошибка указывает о неверном лоте
 

Необходимо найти максимальное значение индикатора за 15 периодов. Поиск в барах не проблема, но в индикаторе?

Предположу, что для этого необходимо сделать цикл проверки, объявить массив и найти в нем это значение. Цикл сделан, но не знаю, как объявить массив.

Ну а потом с помощью функции ArrayMaximum найти значение? Подскажите, как осуществить задачу.

for(int i=0;i<=15;i++)
{
double indicator[];
ArrayInitialize(indicator,0);
double MA_2_t=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i); 
}
 
niktron:

Здравствуйте!

Подскажите как записать условие-

если свободной маржи хватает для открытия позиции?

(Чтобы не выскакивала ошибка 131)...Спасибо!


https://docs.mql4.com/ru/account/accountfreemargincheck
 
Forexman77:

Необходимо найти максимальное значение индикатора за 15 периодов. Поиск в барах не проблема, но в индикаторе?

Предположу, что для этого необходимо сделать цикл проверки, объявить массив и найти в нем это значение. Цикл сделан, но не знаю, как объявить массив.

Ну а потом с помошью функции ArrayMaximum найти значение. Подскажите, как осуществить задачу.

Нужен не просто масcив, а индикаторный буфер. В основном цикле заполнять буфер значениями индиктора и использовать функцию ArrayMaximum() к этому буферу.
 
Integer:
Нужен не просто масcив, а индикаторный буфер. В основном цикле заполнять буфер значениями индиктора и использовать функцию ArrayMaximum() к этому буферу.

Поиск нужен для советника. Подойдет к нему индикаторный буффер?
 
Forexman77:
Поиск нужен для советника. Подойдет к нему индикаторный буффер?


В советнике нет индикторного буфера.

Если в советнике, тогда два варианта:

1. Делать все в индикаторе, советник вызывает индикатор и получает готовое значение.

2. В советнике делать цикл. Но тогда массив вообще не нужен.

val=0;

for(i=1;i<=15;i++) {

    ind=iMA(...,i);

   if(ind>val) val=ind;

}
 
Integer:


В советнике нет индикторного буфера.

Если в советнике, тогда два варианта:

1. Делать все в индикаторе, советник вызывает индикатор и получает готовое значение.

2. В советнике делать цикл. Но тогда массив вообще не нужен.

Массив будет нужен. Для поиска минимума. Минимум таким образом не найти.
 
Forexman77:
Массив будет нужен. Для поиска минимума. Минимум таким образом не найти.



То есть вы точно знаете и абсолютно уверены? Опровергать ваше мнение не нужно? Предпочтете остаться при нем?

 
niktron:

Здравствуйте!

Подскажите как записать условие-

если свободной маржи хватает для открытия позиции?

(Чтобы не выскакивала ошибка 131)...Спасибо!

может лот неправильный если 131?
 
Integer:



То есть вы точно знаете и абсолютно уверены? Опровергать ваше мнение не нужно? Предпочтете остаться при нем?

Нужно, конечно! Ну, как применить данную конструкцию к поиску минимума? Пораскинув мозгами у меня не получается)
Да и объявлять массив научиться хочу. Попробовал так:

double massiv[];
int start()
  {
//----
for(int i=0;i<=33;i++)
{
double ind=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,i); 
massiv[33]=ind;
double minValueidx=ArrayMinimum(massiv,33,0);
Alert("minValueidx=",minValueidx);
}
//----
   return(0);
  }
Выходит -1.
Причина обращения: