Ваши вопросы по языку MQL4

AlexeyVik

Программист mql4 mql5
Раскажите не пожалуйста.
Если условие не имеет эффекта, то какого Алерт показал 7?:laugh:
PHP:
expression has no effect
PHP:
double numb1=7;double numb2=4;double val=0;numb1>numb2?val=numb1:val=numb2;Alert(val);

val = numb1 > numb2 ? numb1 : numb2;
и следующая строка
Alert(val);
никак не зависит от условия в предыдущей.
 
Последнее редактирование модератором:

_SERG_

Активный участник
Добрый день. Вопрос про удаленный контроль. Предположим у меня сова на управленческом счете висит и высылает мне на мыло сообщения в случае нарушения.
1) Как поставить пароль, чтобы он не смог поменять настройки extern?(Чтобы он мог через пользовательское меню их видеть, но изменять их только после пароля)
2) Как заставить сов высылать сообщение об отключении почты в настройках? Ведь собственно можно банально обрубить связь в настройках

ИХМО, тут от твоей подготовки, как программиста или постановщика задачи всё зависит.
Но, то что это надо делать не средствами терминала, которыми можно управлять через интерфейс, это однозначно.
При таком подходе пароли не нужны, поскольку нет доступа к функции, как таковой.
Ну а "обрубывание" связи, сетевым экраном конечно возможно, но эту функцию ещё найти надо.
Текущая версия терминала, например, держит постоянно два сокета для работы, и периодически на MQL5 ходит, адрес сходу не скажу, но кому интересно, "netstat -b -n 1" используйте и понаблюдайте.
 
Последнее редактирование:

Bob5

Новичок форума
Подскажите пожалуйста - как из буфера получить максимальное значение. Есть Buf_1 , с - временным интервалом от 0 бара и до .... Прямо в лоб через ArrayMaximum - с моим уровнем познаний - не получается.

Как можно решить эту задачку, за ранее благодарен.
 
Последнее редактирование:

fs256

Местный знаток
Подскажите пожалуйста как из буфера взять максимальное значение. Есть Buf_1 , с - временным интервалом от 0 бара и до .... Прямо в лоб через ArrayMaximum - с моим уровнем познаний - не получается.

Как можно решить эту задачку, за ранее благодарен.


Наверное ищешь среди чисел < 1. Я не поленился и зашел:
docs.mql4.com/ru/array/arraymaximum
А там - int ArrayMaximum, то бишь для целых чисел.
Тогда значит (примерно) так:

double cc=-1000 (смотря сколько надо, может 0, может -1 и т.д.);
for(i=Bars-1; i>=0; i--) {
c=...;
cc=fmax(cc,c);
}
 
Последнее редактирование модератором:

mobidik

-----
Подскажите пожалуйста - как из буфера получить максимальное значение. Есть Buf_1 , с - временным интервалом от 0 бара и до .... Прямо в лоб через ArrayMaximum - с моим уровнем познаний - не получается.

Как можно решить эту задачку, за ранее благодарен.


Так загляните в справку - там все предельно ясно описано, а что бы было еще понятнее, вот Вам стандартный CCI в котором задаем за сколько баров искать и он выдает в коменте индекс бара с максимальным значением индикатора, а зная его индекс можно узнать и его значение.
 

Вложения

  • CCI_test_max.mq4
    8,7 КБ · Просмотры: 20
Последнее редактирование:

fs256

Местный знаток
Так загляните в справку - там все предельно ясно описано, а что бы было еще понятнее, вот Вам стандартный CCI в котором задаем за сколько баров искать и он выдает в коменте индекс бара с максимальным значением индикатора, а зная его индекс можно узнать и его значение.

Да, поздно уже, ступил. Она же индекс возвращает. mobidik, спасибо. Если просто, то получается:
cc=c[ArrayMaximum(c,0,0)];
 

ivanlys1

Прохожий
Здравствуйте, помогите пожалуйста с советником. Начинаю тестировать выдает ошибку array out of range in EA.mq4' (149,49), как я понял ошибка в этой строчке
for (int li_8 = li_4; li_8 > 0; li_8--) aia_0[li_8] = aia_0[li_8 - 1]; Если эту часть кода в советнике удалить, то тестер запускается, но советник уже не торгует. Подскажите пожалуйста, что в этом коде нужно изменить, чтобы все заработало.
 

vladradon

Программист
for (int li_8 = li_4; li_8 > 0; li_8--) aia_0[li_8] = aia_0[li_8 - 1]; Если эту часть кода в советнике удалить, то тестер запускается, но советник уже не торгует. Подскажите пожалуйста, что в этом коде нужно изменить, чтобы все заработало.
У Вас индексация массива выходит за рамки допустимого. Т.е. индекс в какой-то момент выходит за рамки. А судя по строчке, что вы выложили, это взломанный код - там вообще глюков может быть ... много короче...
 

alex7474

Новичок форума
Скажите пожалуйста,а как в этом советнике прописать ограничение на количество одновременно открытых ордеров? Заранее спасибо.
 

Вложения

  • MultADX.mq4
    12,9 КБ · Просмотры: 22

alexshell

Элитный участник
Скажите пожалуйста,а как в этом советнике прописать ограничение на количество одновременно открытых ордеров? Заранее спасибо.

На каждой паре открывается не более, чем по одному ордеру. Если хотите ограничивать по всем используемым парам, то надо уточнять это.
Для варианта ,если не будете использовать других советников на данном счете, можно сделать так:
Найдите строку
if(CountTrades(symb)<1)
и замените её на вот эту:
if(CountTrades(symb)<1&&OrdersTotal()<5)
Это значит что на счете будет не более 5 ордеров.
 

alex7474

Новичок форума
На каждой паре открывается не более, чем по одному ордеру. Если хотите ограничивать по всем используемым парам, то надо уточнять это.
Для варианта ,если не будете использовать других советников на данном счете, можно сделать так:
Найдите строку
if(CountTrades(symb)<1)
и замените её на вот эту:
if(CountTrades(symb)<1&&OrdersTotal()<5)
Это значит что на счете будет не более 5 ордеров.

Спасибо."Это значит что на счете будет не более 5 ордеров".Хотелось бы уточнить это по всем ордерам(то есть по всем валютным парам.Я как раз хотел второй вариант: "Если хотите ограничивать по всем используемым парам") или количество ордеров по одной валютной паре?А то рынок закрыт не проверить.
 
Последнее редактирование:

alexshell

Элитный участник
Спасибо."Это значит что на счете будет не более 5 ордеров".Хотелось бы уточнить это по всем ордерам(то есть по всем валютным парам.Я как раз хотел второй вариант: "Если хотите ограничивать по всем используемым парам") или количество ордеров по одной валютной паре?А то рынок закрыт не проверить.

по всем валютным парам
 

alex7474

Новичок форума
На каждой паре открывается не более, чем по одному ордеру. Если хотите ограничивать по всем используемым парам, то надо уточнять это.
Для варианта ,если не будете использовать других советников на данном счете, можно сделать так:
Найдите строку
if(CountTrades(symb)<1)
и замените её на вот эту:
if(CountTrades(symb)<1&&OrdersTotal()<5)
Это значит что на счете будет не более 5 ордеров.

Не сочтите за назойливость(или наглость), а нет ли варианта не по количеству ордеров, а по размеру маржи: в валюте депозита или в процентах от депозита
 

alexshell

Элитный участник
Давай завтра. Я уже сплю. Телефон только пиликает об уведомлениях. Ну или кто еще подскажет как средства в формулу подставить
 

alexshell

Элитный участник
Не сочтите за назойливость(или наглость), а нет ли варианта не по количеству ордеров, а по размеру маржи: в валюте депозита или в процентах от депозита

Сделал в процентах просадки. При определенной просадке новые ордера открываться не будут. Количество ордеров то же оставил.
На будущее, для этого есть тема доработка советников. Данная тема немного о другом.
 

Вложения

  • MultADX.mq4
    13,7 КБ · Просмотры: 20

alex7474

Новичок форума
Сделал в процентах просадки. При определенной просадке новые ордера открываться не будут. Количество ордеров то же оставил.
На будущее, для этого есть тема доработка советников. Данная тема немного о другом.

Спасибо большое,а на счёт темы извините(не разобрался сразу,просто перепутал, сразу обе были открыты)
 

блондинка

Элитный участник
Мне(не спецу) надо узнать
строчка
if(A<1 && B>2)
и
if(A<1 ││ B>2)
это одно и тоже ?)))
мне нужен логический знак "или"
т.е. либо A<1 либо B>2 то....
спасибо!)))
 
Верх