[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 332
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пытаюсь написать индикатор. Идея простая: УСРЕДНЯЕМ (СИЛА БЫКОВ-СИЛА МЕДВЕДЕЙ). Естественно за определенный период.
int start()
{
int i=Bars-IndicatorCounted()-1;
while(i>=0)
{
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_EMA,i);
MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i);
Buf_0[i]=MA_Bulls[i];
i--;
}
return;
}
на экран вывожу для контроля только СГЛАЖЕННЫХ быков Buf_0[i]=MA_Bears[i];Это сделано для контроля на определенном этапе построения индюка. и сразу вижу что эти сглаженные быки нифига не совпадают с обычными встроенными. Даже ПРИМЕРНО. Если сглаживать периодом 1, то они по идее вообще должны повторять ввстроенных быков. Отсюда вывод что то не так в строчке MA_Bulls[i]=iMAOnArray(Bulls_array,100,MA_Period,0,MODE_SMA,i); Что именно не пойму...ПОМОГИТЕ!!!! УЖЕ 3 ДНЯ по справочникам и документации лазаю. СПАСИБО!
Вы сначало сформируйте массивы данных от быков и медведей а потом следующим циклом их гладьте, а то вы его ещё не сформировали а уже сглаживание применяете там данных то ещё нет что сглаживать?
Вы сначало сформируйте массивы данных от быков и медведей а потом следующим циклом их гладьте, а то вы его ещё не сформировали а уже сглаживание применяете там данных то ещё нет что сглаживать?
Перевод
costy_ писал(а) >>
Большое спасибо, я всё ближе. Один момент не совсем ясен.
'14:56' - date literal string is incomplete такое предупреждение мне выдал комп.
я так понимаю, он дату ещё хочет, но мне конкретной даты не нужно, мне важно, чтобы текущая цена каждый день сравнивалась с ценой определённого времени того же дня. Прошу уточнить момент.
А зачем вам вообще их через иКастом вызывать? Для унификации что-ли? Ну, напишите для каждого отдельный индикатор-обертку, и вызывайте уже их через иКастом...
Проблема в том, что эти два индикатора (AO и AC) я переделал, и теперь хочу, чтобы бары окрашивались в соответствии с модифицированными индикаторами. Или есть еще варианты как можно сделать? Просто MQL недавно только начал разбирать...
Проблема в том, что эти два индикатора (AO и AC) я переделал, и теперь хочу, чтобы бары окрашивались в соответствии с модифицированными индикаторами. Или есть еще варианты как можно сделать? Просто MQL недавно только начал разбирать...
Дык то, что вы переделали и вызывайте, в чем проблема? Например, если переделанные индикаторы у Вас так и называются АО, АС, то вызов будет
ну или параметры там добавьте если свои какие-то сделали
Большое спасибо, я всё ближе. Один момент не совсем ясен.
'14:56' - date literal string is incomplete такое предупреждение мне выдал комп.
я так понимаю, он дату ещё хочет, но мне конкретной даты не нужно, мне важно, чтобы текущая цена каждый день сравнивалась с ценой определённого времени того же дня. Прошу уточнить момент.
costy_ писал(а) >>
Большое спасибо, я всё ближе. Один момент не совсем ясен.
'14:56' - date literal string is incomplete такое предупреждение мне выдал комп.
я так понимаю, он дату ещё хочет, но мне конкретной даты не нужно, мне важно, чтобы текущая цена каждый день сравнивалась с ценой определённого времени того же дня. Прошу уточнить момент.
Всё-таки хочу докопаться, возможно ли выдержать привязку ко времени. В как вообще на языке MQL4 сказать цена Bid в 14.00 каждого торгового дня?
skifodessa 05.12.2009 14:07
Всем доброго дня.
Подскажите пожалуста как подсчитать кол-во пересечений ценой определеного уровня. Я хочу что бы ордер открывался не после первого пересечения уровня, а после 3 (4,5...)
Спасибо.
------------------------------------------------------------
Можно попробовать алгоритм
Если (Цена текущего бара>уровеня И цена предыдущего бара <уровня)То{счетчик увеличить на один}
Если (счетчик>3) То {открыть ордер; счетчик сбросить в ноль}
Теперь напишем все тоже самое на привычном языке (пишу только блоки. сами их вставите в нужные места)
Extern int Chet=10; // после скольки пересечений открывать ордер
Extern double Uroven=1.6566; //после пересечения ценой какого уровня начать считать
в функции старт условия будут примерно такие
int k;
if(Open[0]>Uroven && Open[1]<Uroven)k=k+1;// здесь рассмотрено пересечение ВВЕРХ
if(k>Chet){OrderSend(.......);k=0};
А вообще вопрос довольно не очень сложный.В учебнике по МКЛ хорошо расписаны эти основы АЛГОРИТМИКИ
ДЛЯ Vinin писал(а) >>
Спасибо за внимание. но этим делу не поможешь. Так как вы просто заменили цикл While циклом FOR
ДЛЯ Urain писал(а) >>
Следующими двумя строками как раз и формируется нужный массив.
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Urain Вы наверно подумали что в функцию iMAOnArray нужно передавать уже законченный сформированный массив.Формирование его циклами FOR не помогло. Потому как в эту функцию (iMAOnArray) передается не массив а его ИМЯ. А массив обрабатывается ПОЭЛЕМЕНТНО.
посредством изменения i в строке MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i);
С проблеммой разобрался. Она гораздо глубже чем кажется. Если применять эту обработку только в советнике то проблемм нет, но если строить график по ней, то по любому грабли. Дело все в ИНВЕРСНОМ индексировании массивов. Функция iMAOnArray имеет прямое (слева на право) индексирование, а графики индексируются справа на лево. За это пояснение спасибо Garfich у.
ДЛЯ Vinin писал(а) >>
Спасибо за внимание. но этим делу не поможешь. Так как вы просто заменили цикл While циклом FOR
ДЛЯ Urain писал(а) >>
Следующими двумя строками как раз и формируется нужный массив.
Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Bulls_array[i]=iBullsPower(NULL,0,PeriodPower,PRICE_CLOSE,i);
Urain Вы наверно подумали что в функцию iMAOnArray нужно передавать уже законченный сформированный массив.Формирование его циклами FOR не помогло. Потому как в эту функцию (iMAOnArray) передается не массив а его ИМЯ. А массив обрабатывается ПОЭЛЕМЕНТНО.
посредством изменения i в строке MA_Bears[i]=iMAOnArray(Bears_array,0,MA_Period,0,MODE_SMA,i);
С проблеммой разобрался. Она гораздо глубже чем кажется. Если применять эту обработку только в советнике то проблемм нет, но если строить график по ней, то по любому грабли. Дело все в ИНВЕРСНОМ индексировании массивов. Функция iMAOnArray имеет прямое (слева на право) индексирование, а графики индексируются справа на лево. За это пояснение спасибо Garfich у.
Не знаю какая была проблема но Vinin правильно написал (не важно for или while) главное что сначало циклом формируется массив данных а затем следующим циклом формируем от него iMA,
а строка Bears_array[i]=iBearsPower(NULL,0,PeriodPower,PRICE_CLOSE,i); заполняет лишь одно i-тое значение массива.,
те без цикла массив сформирован не будет.