В тестере MessageBox() не работает поэтому не проверял. Проверил только аналогичное применение в скрипте, работает нормально.AlexeyVik
Вы тут _http://forum.mql4.com/ru/65341/page29
приводили пример, как доработать код в советнике, чтобы появилась возможность ручного подтверждения открытия ордеров, которая при обновлении с 670 на 745 билд канула в лету...
Я не настолько силен, чтоб понять куда и чего...
Использую простой шаблон, где гоняю условия. Подскажите, плиз, куда и чего, что бы было ручное подтверждение открытия/закрытия ордеров.
С уважением.
P.S. Шаблон прилагаю.
Ларчик просто открывалсяКод:input int timerSeconds = 1; MqlDateTime str1; int OnInit() { EventSetTimer(timerSeconds); return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { EventKillTimer(); Comment(""); } void OnTick() { } void OnTimer() { TimeLocal(str1); Comment(str1.sec); }
Никаких.Можно ли из основного куска программы, которая OnTick() вызывать специальные подпрограммы, типа OnInit() и OnDeinit() ?
Как бы, логика подсказывает, что можно, а реально там никаких подводных камней не заложено?
Никаких.
Ну если страшно, сделай отдельную функцию и вызывай из init или deinit ну и соответственно из OnTick()
OnDeinit(5);
Привет всем.
Кто может написать условие (можно в функцию засунуть) по индикатору.
Условия
Появилась первая синяя точка выше белой линии (перед тем на прошлом баре была ниже) и, если нет голубой, открываемся по направлению от других индикаторов.
Если есть голубая, ждем следующей синей точки и открываемся по направлению от других индикаторов.
Картинки и индикатор ниже.
//---------------------------------------------------------------+
double buf2 = iCustom(NULL,0,"i-BB-Width",2,0);// Blue
double buf4 = iCustom(NULL,0,"i-BB-Width",4,0);// Aqua
double buf5 = iCustom(NULL,0,"i-BB-Width",5,1);// белая линия
//----------------------------------------------------------------+
// if(buf2 !=0)// синяя точка
// if(buf2 !=0 && buf2 > buf5)// синяя точка над белой линией
// if(buf4 !=0)// голубая точка
//----------------------------------------------------------------+
Подскажите, есть такая функция, которая бы добавляла/отнимала количество пунктов последней свечи к значению индикатора?
Например, значения RSI на рассматриваемой свече упало, при этом нам нужно к этому значению еще добавить количество пунктов закрытой свечи. Если долго, объяснять не надо...
if (hi < cena) hi = cena;if (hi <= cena) {hi = cena++;} - тут находит hi
// if (lo<=0) {lo = cena--;} тут закоментировал, т.к. ничего невышло.
спасибо огромное, но .. опять lo не нашел, 0 выдает по lo, hi прекрасно находит.
А разве ArrayMaximum() _http://docs.mql4.com/ru/array/arraymaximumтак все выглядит, двойных ;; точно нет, эту болезнь поборол
for ( i = 0; i < 480; i++){
optiontype = FileReadString(hFile);
cena = StrToDouble(FileReadString(hFile));
if (cena < 1) {i--;} вроде тут 0.0. и 0 убирается
--------------- ваш код------------------
if (hi < cena) hi = cena;
if (lo<0.000001 || lo>cena) lo = cena;
}
Comment (" ",hi," ",lo); --- сдесь получаю hi и 0 по lo
------------------------- так данные идут из файла ------------
call;1.2531;
call;1.2656;
call;1.2712;
call;1.2418;
call;1.2544;
put;1.1988;
put;1.2135;
put;1.2399;
put;1.2076;
put;1.2366;
double lo = 0, hi = 0;
for (i = 0; i < 480; i++)
{
optiontype = FileReadString(hFile);
cena = StrToDouble(FileReadString(hFile));
// Как я понял, то при каждой итерации цикла читается следующая строка файла...
if (cena > hi) hi = cena;
if (lo > 0.0 && cena < lo) lo = cena;
}
// После выхода из цикла имеем hi и lo...