Форум » Индикаторы » Индикаторы уровней » Ответить

Индикаторы уровней

set: Уважаемый, Scriptong.Помогите мне пожалуйста подготовить 2 индикатора к использованию в генераторе по созданию советника.Суть вопроса:Вывести численные значения ТП и СЛ Bay i Sell в отдельные буферы из которых можно будет считать конкретные величины при генерировании советника.

Ответов - 27, стр: 1 2 All

Scriptong: set пишет: http://zalil.ru/upload/34378903 Спасибо, скачал. Но вновь огорчу Вас. Это, опять-таки, декомпилированная версия. Посмотрел в сети - везде лежат такие же версии. Полной нет нигде. Отправил запрос на почту автору индикатора. Как он ответит, так и будем поступать.

Scriptong: Scriptong пишет: Отправил запрос на почту автору индикатора. Как он ответит, так и будем поступать. От автора индикатора получен следующий ответ: "Здраствуйте, Игорь. У меня, действительно нет желания распространять исходный код данного индикатора. Это исходит из личных побуждений и предпочтений."

anatolyp: Здравствуйте, Scriptong. В одном из кодов индикатора увидел вот такие строки: ............... extern int UpdateSek = 60; int time = 1; ............................ int start() { int hwnd =WindowHandle(Symbol(),Period()); if(hwnd != 0 && (time==0 || TimeCurrent()-time>UpdateSek)) { PostMessageA(hwnd, WM_COMMAND, 33324, 0); Print("Обнавились"); time=TimeCurrent(); } int counted_bars=IndicatorCounted(); далее идет код индикатора. Автор утверждает, что этот блок отвечает за то, чтобы индик перерисовывался каждые заданные секунды( UpdateSek). Тогда можно вставлять в советники перерисовывающиеся индикаторы и советники будут работать корректно. А каково ваше мнение ?Можно ли вообще такое сделать и есть ли смысл с этим возиться? С уважением.


Scriptong: anatolyp пишет: Автор утверждает, что этот блок отвечает за то, чтобы индик перерисовывался каждые заданные секунды( UpdateSek). Автор прав, но Вы его неправильно поняли. Речь идет о том, чтобы разбудить индикатор. Индикаторы, как известно, срабатывают по тикам. Так вот, если тики не приходят, то, запустив приведенный код в цикле, можно быть уверенным, что индикатор будет обновлять свои данные с заданной периодичностью, не дожидаясь тиков. Хотя это имеет смысл только с некоторыми особенными индикаторами, меняющих свои показания не только от изменения цены, но и от изменения времени. Для стандартных индикаторов МТ4 такой финт ничего не изменит в их показаниях. С перерисовывающимися индикаторами все остается по-старому - толку от них нет. Ну какой толк в том, чтобы по прошествии какого-то времени увидеть, что два часа назад нужно было открывать Buy вместо Sell, который виделся на то время по индикатору?

set: я так понял что тема закрыта и ничего не будет, я прав?

set: свои варианты никто не предложит?

set: Уважаемые, можно ли вас попросить не рыбу, а удочку. Проведите со мной легкое обучение по созданию буферов в индикаторах и правильной записи параметров для вывода информации.Заранее благодарен за ваше решение

Scriptong: set пишет: Уважаемые, можно ли вас попросить не рыбу, а удочку. Проведите со мной легкое обучение по созданию буферов в индикаторах и правильной записи параметров для вывода информации.Заранее благодарен за ваше решение В разделе MQLabs выложена ссылка на статью о создании индикатора.

set: Здравствуйте , уважаемый! статью прочитал, но ответов к решению моей задачи не нашел, вопрос 1:как задать буферу информацию, что там на каждом тике хранится только число от конкретного расчета по определенной формуле, 2:как убирать информацию от предыдущих расчетов, 3:как подготовить значения с необходимой точностью знаков после запятой и до нее для разных инструментов торговли.С уважением , рядовой и ученик

Scriptong: Добрый день. set пишет: 1:как задать буферу информацию, что там на каждом тике хранится только число от конкретного расчета по определенной формуле, 2:как убирать информацию от предыдущих расчетов, 3:как подготовить значения с необходимой точностью знаков после запятой и до нее для разных инструментов торговли. Отвечаю по пунктам: 1. Если буферу соответствует массив, к примеру g_buffer, то выглядит это просто как присваивание некоторого значения нужному элементу массива: g_buffer[index] = <формула расчет значения>; index - это порядковый номер бара, на котором необходимо рассчитать значение. Нумерация баров в MQL4 производится "задом наперед". Так, нулевой бар - это всегда текущий формирующийся бар. Слева от него по графику - бар №1 и т. д. В момент формирования нового бара предыдущий нулевой бар получает индекс 1, а предыдущий бар №1 - становится баром №2. 2. В момент присваивания нового значения старое значение автоматически пропадает. Если нужно просто стереть значение, чтобы на графике ничего не отображалось, то можно выполнить следующее присваивание: g_buffer[index] = EMPTY_VALUE; 3. В индикаторе можно задать точность представления информации для всех его значений: IndicatorDigits(<кол-во знаков после запятой>); Также при подготовке значений можно производить их округление до заданной точности: double value = NormalizeDouble(prevValue, <кол-во знаков после запятой>); P. S. Заданные Вами вопросы являются достаточно сложными моментами. Поэтому, если на данный момент Вы прочли только указанные мною статьи, то, скорее всего, мои ответы, приведенные выше, не дадут необходимой информации. В этом случае Вам нужно, все же, начать с нуля - почитать Учебник. Если по ходу его прочтения возникнут вопросы, то, конечно же, задавайте их здесь.

set: Здравствуйте уважаемый! Ваша помощь мне очень помогла . У меня возникла некая проблема при написании советника. После закрытия ордера по ТП, полученному из уровня индикатора на следующем тике открывается новый ордер в том же направлении, тк тех анализ показывает на возможность открытия ордера.Мне же в моей тактике не нужен этот ордер, в крайнем случае пока цена не уйдет в том или ином направлении от точки закрытия ордера(допустим на величину +М или -N). Моя попытка ввести дополнительное требование в начальные условия не открывать ордер в диапазоне М-ТП-N привела к полному запрету открытия ордеров.Может это связано с тем что весь теханализ идет на тике, а данный на баре?Помогите разобраться.Привожу часть теханализа относительно уровня ТП.С уважением Set { if ((Bid > iCustom(NULL, NULL, "+++",2,1)+M) && (Bid < iCustom(NULL, NULL, "+++",2,1)-N)) { IfOrderDoesNotExist32(); } }

Scriptong: set пишет: Здравствуйте уважаемый! Ваша помощь мне очень помогла . У меня возникла некая проблема при написании советника. После закрытия ордера по ТП, полученному из уровня индикатора на следующем тике открывается новый ордер в том же направлении, тк тех анализ показывает на возможность открытия ордера.Мне же в моей тактике не нужен этот ордер, в крайнем случае пока цена не уйдет в том или ином направлении от точки закрытия ордера(допустим на величину +М или -N). Моя попытка ввести дополнительное требование в начальные условия не открывать ордер в диапазоне М-ТП-N привела к полному запрету открытия ордеров.Может это связано с тем что весь теханализ идет на тике, а данный на баре?Помогите разобраться.Привожу часть теханализа относительно уровня ТП.С уважением Set Добрый день. Это распространенная проблема, которую можно решать несколькими способами: 1. Ввести ограничение: 1 свеча - 1 сделка. В итоге, если советник обнаружил, что на текущей свече уже открывалась сделка (OpenOrderTime() >= Time[0]), то новую сделку не открывать. 2. Чередовать сигналы покупки и продажи. После сигнала покупки никакие сигналы покупки не воспринимаются. Ждем сигнал продажи. Не очень хорошее решение, но для переворотных стратегий - то, что нужно. 3. Наилучший способ - решать такие вещи для каждой стратегии индивидуально. К примеру, почему ордер закрывается по профиту, если еще действует сигнал открытия? В этом случае либо профит не должен быть установлен, либо сигнал уже должен перестать действовать. Возможно, стоит разобраться в самом алгоритме стратегии.



полная версия страницы