:) А почему бы как функцию нового бара не реализовать данный момент? Вам нужно чтоб раз сутки, т.е. начиная с 0.00 времени чтоб индюк делал перерасчёт. Значит делаем просто. В старте есс-но:
По-моему это самый верный путь хоть и примитивен!
Vinin, Ваш тёзка, мне ответил, что он должен меняться сам, но этого никогда не было, только с компиляцией. Спасибо за идею использовать контроль бара! На один график поставил один вариант, на другой Ваш вариант. Завтра посмотрю, что сработает.
ИЛИ. Потому что условие И не выполняется, когда хотя бы один из операндов равен false (первый ИЛИ второй) - в будевой логике это называется "закон Де Моргана"
Я всё понимаю. Но тут смысл в том, что:
Переменная index вообще по коду имеет значение Bar - IndicatorCounted()
Т.е. на текущем баре равно 1, а на новом 2
Входит в функцию IsUpFractal() значение либо по очередно, либо 1 если бар не новый ещё, так?
Значится, переменная i будет иметь фиксированное значение т.к. входной параметр index тоже фиксированный. Значит цикл будет всегда прерываться после первой итерации. Зачем тогда цикл?
На каждом шаге цикла переменная i уменьшается на 1 (i--), поэтому i пробегает все значения от index+g_center-1 до нуля. Кроме того, заметьте, что при первом старте индикатора IndicatorCounted() дает 0, т.е. index будет бежать по всем барам, а значит i каждый раз присваивается index+g_center-1, а затем бежит вниз, пока не достигнет 0 бара ИЛИ пока cnt не станет равно g_center, т.е. пока не перестанет выполняться условие цикла (ну, или пока не произойдет вызод по return, расположенному в самом теле цикла).
ИЛИ. Потому что условие И не выполняется, когда хотя бы один из операндов равен false (первый ИЛИ второй) - в будевой логике это называется "закон Де Моргана"
Ого. Жесть какая. Сколько я использовал эти операторы.. а тут как-будто "баран на новые ворота смотрю". Закон я прочитал, написано как-то дико заумно. Там описывается ситуация с отрицанием. Я так понимаю, данный приём касается только для ситуаций с отрицанием? Я имею ввиду, если какая-нибудь. из булевых переменных не равна True.
Я по ходу понял что не втыкал. Суть такая, что отличие тут следующее. Это индикатор, потому мне ещё не привычно так думать.. Значится при первом вызове индикатора бары не просчитаны и index будет равен либо количеству баров на графике, либо, если условиями ограничен расчёт баров значению какой-то переменной limitReCalcBar.
По сути переменная g_center = 2 исходя из кода. limitReCalcBar = 5000 тоже исходя из внешних переменных.
При первом запуске индикатора в функцию:
//+-------------------------------------------------------------------------------------+//| Определение наличия верхнего фрактала на указанном баре |//+-------------------------------------------------------------------------------------+bool IsUpFractal(int index)
{
double centerHigh = High[index + g_center]; // За точку отсчета берется средний..// ..бар на участке из i_fractalPeriod// ..баров// - 1 - == Поиск максимумов справа от центрального бара ================================int cnt = 0, i = index + g_center - 1;
for (; i >= 0 && cnt < g_center; i--) // Справа от центрального бара должно
{ // ..быть g_center-1 баров с низшим..if (centerHigh <= High[i]) // ..максимумом. Не позволяется..return (false); // ..наличие баров с большим или..
cnt++; // ..равным максимумом.
}
if (i < 0) // g_center-1 низших максимумов не..return (false); // ..найдено. Фрактала нет// - 1 - == Окончание блока =============================================================// - 2 - == Поиск максимумов слева от центрального бара =================================
cnt = 0;
i = index + g_center + 1;
int total = Bars - 1;
for (; i < total && cnt < g_center; i++) // Слева от центрального бара должно
{ // ..быть g_center-1 баров с низшим..if (centerHigh == High[i]) // ..максимумом. Не позволяется..continue; // ..наличие баров с большим..if (centerHigh < High[i]) // ..максимумом. Равный - позволяетсяreturn (false);
cnt++;
}
if (i >= total) // g_center-1 низших максимумов не..return (false); // ..найдено. Фрактала нет// - 2 - == Окончание блока =============================================================return (true); // Фрактал найден
}
передаётся значение 5000 соответственно.
i = index + g_center - 1 = 5000 + 2 - 1 = 5001
Смотрим в цикл:
for (; i >= 0 && cnt < g_center; i--)
Нужно просчитать 5000 баров. После первых двух баров т.е. 0-го и 1-го у нас становится ложных условие cnt < g_center. Как тогда просчитывать все 5000 баров? Вот этот момент я хочу осилить. Для профи видать это элементарно, но я не въезжаю. Если, конечно, оператор && воспринимать как ИЛИ, то всё станет на свои места.. НО это как-то противоречит тому, что я уже использовал в советниках и вообще когда либо встречал.
Ну а когда всё будет расчитано, тогда всё уже просто. Через index на каждом тике будет передаваться 0 и 1 там условия соблюдаться будут в цикле и нет никаких сложностей как я вижу.
Уважаемые програмисты! Подскажите пожалуйста, возможно ли написать такой скрипт, который следит за открытыми позициями и при достижении какой то позицией определенного уровня убытка, часть позиции закрыть. Предельный уровень убытка высталять либо в валюте депозита, либо в пунктах. Таким образом если цена идет против нас, мы уменьшили убыток, а если цена развернулась в плюс, то вместо убытка мы можем получить и какой то профит или еще меньший убыток, взависимости от выставленного ТП. Скрипт должен работать постоянно в режиме советника. Он является помошником к любой торговой системе или эксперту.
Уважаемые програмисты! Подскажите пожалуйста, возможно ли написать такой скрипт, который следит за открытыми позициями и при достижении какой то позицией определенного уровня убытка, часть позиции закрыть. Предельный уровень убытка высталять либо в валюте депозита, либо в пунктах. Таким образом если цена идет против нас, мы уменьшили убыток, а если цена развернулась в плюс, то вместо убытка мы можем получить и какой то профит или еще меньший убыток, взависимости от выставленного ТП. Скрипт должен работать постоянно в режиме советника. Он является помошником к любой торговой системе или эксперту.
Здравствуйте!Возник такой вопрос.В терминале открыто несколько одинаковых окон.К каждому из них подключен один и тот же советник,но с разными настройками.!Подскажите пожалуйста,есть-ли функции или готовые алгоритмы в MQL4 позволяющие определить,из какого окна открыт рыночный ордер?
Здравствуйте!Возник такой вопрос.В терминале открыто несколько одинаковых окон.К каждому из них подключен один и тот же советник,но с разными настройками.!Подскажите пожалуйста,есть-ли функции или готовые алгоритмы в MQL4 позволяющие определить из какого окна открыт рыночный ордер?
Логичнее сделать копии советника, назвав по-разному, и в журнале всё увидите, какая копья и, соответственно, в каком окне Вы уже сообразите!
borilunad: Логичнее сделать копии советника, назвав по-разному, и в журнале всё увидите, какая копья и, соответственно, в каком окне Вы уже сообразите!
borilunad: Логичнее сделать копии советника, назвав по-разному, и в журнале всё увидите, какая копья и, соответственно, в каком окне Вы уже сообразите!
Мне это нужно для того,чтобы советник сам начал расчёты производить.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
По-моему это самый верный путь хоть и примитивен!:) А почему бы как функцию нового бара не реализовать данный момент? Вам нужно чтоб раз сутки, т.е. начиная с 0.00 времени чтоб индюк делал перерасчёт. Значит делаем просто. В старте есс-но:
Тока не либо а И. Там же знак &&
ИЛИ. Потому что условие И не выполняется, когда хотя бы один из операндов равен false (первый ИЛИ второй) - в будевой логике это называется "закон Де Моргана"
Я всё понимаю. Но тут смысл в том, что:
Переменная index вообще по коду имеет значение Bar - IndicatorCounted()
Т.е. на текущем баре равно 1, а на новом 2
Входит в функцию IsUpFractal() значение либо по очередно, либо 1 если бар не новый ещё, так?
Значится, переменная i будет иметь фиксированное значение т.к. входной параметр index тоже фиксированный. Значит цикл будет всегда прерываться после первой итерации. Зачем тогда цикл?
ИЛИ. Потому что условие И не выполняется, когда хотя бы один из операндов равен false (первый ИЛИ второй) - в будевой логике это называется "закон Де Моргана"
Ого. Жесть какая. Сколько я использовал эти операторы.. а тут как-будто "баран на новые ворота смотрю". Закон я прочитал, написано как-то дико заумно. Там описывается ситуация с отрицанием. Я так понимаю, данный приём касается только для ситуаций с отрицанием? Я имею ввиду, если какая-нибудь. из булевых переменных не равна True.
Я по ходу понял что не втыкал. Суть такая, что отличие тут следующее. Это индикатор, потому мне ещё не привычно так думать.. Значится при первом вызове индикатора бары не просчитаны и index будет равен либо количеству баров на графике, либо, если условиями ограничен расчёт баров значению какой-то переменной limitReCalcBar.
По сути переменная g_center = 2 исходя из кода. limitReCalcBar = 5000 тоже исходя из внешних переменных.
При первом запуске индикатора в функцию:
передаётся значение 5000 соответственно.
i = index + g_center - 1 = 5000 + 2 - 1 = 5001
Смотрим в цикл:
Нужно просчитать 5000 баров. После первых двух баров т.е. 0-го и 1-го у нас становится ложных условие cnt < g_center. Как тогда просчитывать все 5000 баров? Вот этот момент я хочу осилить. Для профи видать это элементарно, но я не въезжаю. Если, конечно, оператор && воспринимать как ИЛИ, то всё станет на свои места.. НО это как-то противоречит тому, что я уже использовал в советниках и вообще когда либо встречал.
Ну а когда всё будет расчитано, тогда всё уже просто. Через index на каждом тике будет передаваться 0 и 1 там условия соблюдаться будут в цикле и нет никаких сложностей как я вижу.
Уважаемые програмисты! Подскажите пожалуйста, возможно ли написать такой скрипт, который следит за открытыми позициями и при достижении какой то позицией определенного уровня убытка, часть позиции закрыть. Предельный уровень убытка высталять либо в валюте депозита, либо в пунктах. Таким образом если цена идет против нас, мы уменьшили убыток, а если цена развернулась в плюс, то вместо убытка мы можем получить и какой то профит или еще меньший убыток, взависимости от выставленного ТП. Скрипт должен работать постоянно в режиме советника. Он является помошником к любой торговой системе или эксперту.
Уважаемые програмисты! Подскажите пожалуйста, возможно ли написать такой скрипт, который следит за открытыми позициями и при достижении какой то позицией определенного уровня убытка, часть позиции закрыть. Предельный уровень убытка высталять либо в валюте депозита, либо в пунктах. Таким образом если цена идет против нас, мы уменьшили убыток, а если цена развернулась в плюс, то вместо убытка мы можем получить и какой то профит или еще меньший убыток, взависимости от выставленного ТП. Скрипт должен работать постоянно в режиме советника. Он является помошником к любой торговой системе или эксперту.
Возможно. Здесь помогут.
Возможно. Здесь помогут.
Есть такая штука стоп лосс называется!!!
Здравствуйте!Возник такой вопрос.В терминале открыто несколько одинаковых окон.К каждому из них подключен один и тот же советник,но с разными настройками.!Подскажите пожалуйста,есть-ли функции или готовые алгоритмы в MQL4 позволяющие определить,из какого окна открыт рыночный ордер?
Здравствуйте!Возник такой вопрос.В терминале открыто несколько одинаковых окон.К каждому из них подключен один и тот же советник,но с разными настройками.!Подскажите пожалуйста,есть-ли функции или готовые алгоритмы в MQL4 позволяющие определить из какого окна открыт рыночный ордер?
Логичнее сделать копии советника, назвав по-разному, и в журнале всё увидите, какая копья и, соответственно, в каком окне Вы уже сообразите!
Я то соображу,а как советнику об этом сообщить?
Логичнее сделать копии советника, назвав по-разному, и в журнале всё увидите, какая копья и, соответственно, в каком окне Вы уже сообразите!
Мне это нужно для того,чтобы советник сам начал расчёты производить.