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

expforex

Программиров
Господа,

Очень нужна помощь. Имеется индикатор, очень простой и всем, наверное, известный: Trend Magic. Основан на двух стандартных индикаторах: CCI(50) и ATR(5). Рисует очень красивые линии на графике. У меня, как чайника в программировании, имеется вопрос: как из значений CCI и ATR получается значение, которое отображается на графике цены и по которому рисуется эта самая линия? Можете вывести формулу?

bufferUp[shift] = Low[shift] - iATR(NULL, 0, ATR, shift);
bufferDn[shift] = High[shift] + iATR(NULL, 0, ATR, shift);

F вообще все формулы в самом индикаторе, он настолько маленький что даже ты сможет разобраться
 

Walt6730

Новичок форума
bufferUp[shift] = Low[shift] - iATR(NULL, 0, ATR, shift);
bufferDn[shift] = High[shift] + iATR(NULL, 0, ATR, shift);

F вообще все формулы в самом индикаторе, он настолько маленький что даже ты сможет разобраться

Спасибо за оперативный ответ и за столь высокую оценку моих более чем скромных интеллектуальных способностей :) Хотел бы еще раз уточнить: по первой формуле индикатор выдает абсолютное значение цены (это важно!) текущей свечи на аптренде, а по нижней - на даунтренде? Под значением цены я понимаю, например, 1.3243 для пары евродоллар. И потом рисует линию от значения к значению? Другими словами (чтобы убедиться, что я понял все правильно), каждая из этих формул выдает то значение, которое отображается в Data Window? По ходу дела еще вопрос: а как получить значение на предыдущей свече?
 
Последнее редактирование:

expforex

Программиров
Спасибо за оперативный ответ и за столь высокую оценку моих более чем скромных интеллектуальных способностей :) Хотел бы еще раз уточнить: по первой формуле индикатор выдает абсолютное значение цены (это важно!) текущей свечи на аптренде, а по нижней - на даунтренде? Под значением цены я понимаю, например, 1.3243 для пары евродоллар. И потом рисует линию от значения к значению? Другими словами (чтобы убедиться, что я понял все правильно), каждая из этих формул выдает то значение, которое отображается в Data Window? По ходу дела еще вопрос: а как получить значение на предыдущей свече?

:) Ничего личного, сам себя таким назвал. ;-)
Нет он просо записывает в 2 буфера значения Свечи ХАй+ АТР, от этого и получается линия верхняя, ну и соответственно нижняя
 

Walt6730

Новичок форума
:) Ничего личного, сам себя таким назвал. ;-)
Нет он просо записывает в 2 буфера значения Свечи ХАй+ АТР, от этого и получается линия верхняя, ну и соответственно нижняя
Звыняй за тугоумие. Задам вопрос так, чтобы мне было понятно: как получается значение в Data Window?
 

expforex

Программиров
Я про него и говорю, в индикаторе два буфера :
bufferUp и bufferDn
0 и 1 соответственно
в Дата окне соответственно 1 bufferUp и 2 bufferDn
Высчитываются значения CCI ATR
а потом по формуле:
if (thisCCI >= 0)
{
bufferUp[shift] = Low[shift] - iATR(NULL, 0, ATR, shift);
if (bufferUp[shift] < bufferUp[shift + 1])
bufferUp[shift] = bufferUp[shift + 1];
}
else
{
if (thisCCI <= 0)
{
bufferDn[shift] = High[shift] + iATR(NULL, 0, ATR, shift);
if (bufferDn[shift] > bufferDn[shift + 1])
bufferDn[shift] = bufferDn[shift + 1];
}
}
 

Walt6730

Новичок форума
Ну, сейчас немного стало проясняться, хотя и с напрягом... Теперь несколько вопросов по переменным: Low и High - это, как я понимаю, значения цены? А что такое i перед ATR и shift?
 

expforex

Программиров
Кхм...
Тебе лучше начать изучать основы языка программирования а не сразу же задавать вопросы по индикатору.
Это мой тебе совет.
 

Walt6730

Новичок форума
Спасибо за совет... Только я с математикой не очень дружу... :(
 

expforex

Программиров
математика и программирование, просто ты задаешь вопросы так сказать 1 класса программирования а это не есть хорошо. Поэтому прежде чем задавать вопросы про индикаторы надо прочитать хотя бы азбуку.

что толку если я тебе скажу что i перед названием индикатора Это функция вызова индикатора а shift Это переменная перебора
 

expforex

Программиров
shift это в данном случае сдвиг бара относительно текущего
 

Влад Рус

Прохожий
Lender, здравствуйте! Рад был получить от Вас ценную помощь. Спасибо. Просто не ожидал такого скорого ответа. По первой задачке очень интересный вариант. Буду пробовать. По второй задачке не очень понял переменную EMPTY. Порывшись в справочнике по МТ4 нашёл там, что EMPTY означает значение по умолчанию или пустое состояние параметра, как-то так. А нулём тогда нельзя заменить, если всё равно пусто? И ещё - что Вы имеете в виду под " за использование двумерных массивов как в примере нужно по руках бить..." ? Где там что не так? Спасибо.
 

Lender

Активный участник
Lender, здравствуйте! Рад был получить от Вас ценную помощь. Спасибо. Просто не ожидал такого скорого ответа. По первой задачке очень интересный вариант. Буду пробовать. По второй задачке не очень понял переменную EMPTY. Порывшись в справочнике по МТ4 нашёл там, что EMPTY означает значение по умолчанию или пустое состояние параметра, как-то так. А нулём тогда нельзя заменить, если всё равно пусто?

в данном случае EMPTY(-1) означает пустое состояние параметра, значение NULL(0) для переменной ticket здесь не подойдет так как может существовать ордер с нулевым тикетом а с минусовым не существуют

EMPTY это константа -1

И ещё - что Вы имеете в виду под " за использование двумерных массивов как в примере нужно по руках бить..." ? Где там что не так? Спасибо.
если использовать двумерные массивы как в том примере то код будет становиться непонятным, корявым, нечитабельным и т.д.
 

lexun

Активный участник
Здравствуйте, подскажите пожалуйста как на mql узнать цену другого инструмента несколько баров назад. У текущего понятно close, open, high, low. У другого можно текущие через маркетинфо посмотреть бид, аск. А вот чтобы несколько баров назад??? помогите=)
 

expforex

Программиров
Здравствуйте, подскажите пожалуйста как на mql узнать цену другого инструмента несколько баров назад. У текущего понятно close, open, high, low. У другого можно текущие через маркетинфо посмотреть бид, аск. А вот чтобы несколько баров назад??? помогите=)
несколько баров назад можно посмотреть либо цену закрытия бара, цену открытия бара, хай лоу бара

iOpen
iClose
/...........
 
Последнее редактирование:

ivan1234

Новичок форума
помогите пожалуйста

как привязать "clossprofit" c "lot"
пример:
clossprofit=10
lot =0.01
clossprofit=clossprofit+ lot=20,
то есть если lot растет, растет clossprofit.
 

Lender

Активный участник
ничего не понятно, с виду 10+0.01 = 10.01, а у тебя аж 20...

может тебе нужно clossprofit = clossprofit*lot ?
тогда clossprofit будет увеличиваться пропорционально лоту
 

lexun

Активный участник
Здравствуйте. Хотел бы узнать.
double massiv1[];
...
int start()
{
massiv1[1]=2;
Alert(massiv1[1]);
...

Выводит 0.
Вообщем проблема в том что не могу вывести значения массивов.
Даже если будет:
int massiv1[];
string a;
...
int start()
{
massiv1[1]=2;
a=massiv[1];
Alert(a);
...
один хрен вылезет 0. Почему и как лечить ся?
 
Верх