ObjectCreate("text_object", OBJ_TEXT, 0, T'2004.02.20 12-30', 1.0045);
Все чертится! только как цвет задать для этого объекта? в MQL2 в конце всего задовался цвет! а как тут быть?
посмотрите функцию ObjectSet. используйте значение свойства OBJPROP_COLOR
посмотрите функцию ObjectSet. используйте значение свойства OBJPROP_COLOR
Спасибо! помогло! напоминаю про присланный вам пример!...
самое странное что если написать все в лоб то работает:
for(i=0; i<bars; i++) { zzz1[i]=iMA(.......,i); zzz2[i]=iMA(.......,i); zzz3[i]=iMA(.......,i); }; for(i=0; i<bars; i++) { xxx1[i]=iMAonArray(zzz1,.....); xxx2[i]=iMAonArray(zzz2,.....); xxx3[i]=iMAonArray(zzz3,.....); };
LeonSi, нужно иметь в виду, что iMAOnArray обрабатывает массивы слева направо (от старых данных к новым). чтобы в своих массивах данные расположить именно так, объявите массивы as series (ArrayAsSeries), либо самостоятельно организуйте изменение индекса задом наперёд. почему всё нормально, если написать циклы для каждого таймфрейма отдельно, для меня остаётся загадкой
LeonSi, нужно иметь в виду, что iMAOnArray обрабатывает массивы слева направо (от старых данных к новым). чтобы в своих массивах данные расположить именно так, объявите массивы as series (ArrayAsSeries), либо самостоятельно организуйте изменение индекса задом наперёд. почему всё нормально, если написать циклы для каждого таймфрейма отдельно, для меня остаётся загадкой
(ArrayAsSeries) - нет такого:(... сколько тут не бился:( ничего не выходит! немогли бы вы подправить 1 пример? и выложить сдесь?... думаю что это был бы для многих наглядный пример... Заранее благодарен
пардон. ArraySetAsSeries
Та же беда! Ничего не могу понять. Есть объявление
А пример вообще шедевр!
Долго я искал функцию iMAOnBuffer() :)
Самое подлое, что примеры со Стохастиком и Осмой работают, и вроде написаны также.
double PrimaryBuffer[]; double SmoothedBuffer[];
Далее в start() по циклу обсчитывается PrimaryBuffer, и идет попытка получить сглаженные значения, опять же через цикл:
SmoothedBuffer[i]=iMAOnArray(PrimaryBuffer,Bars,SmoothPeriod,0,MODE_SMA,i);
В итоге выходят одни бублики, то есть нули.
Так же непонятен параметр
total - Items number to counting. в операторе iMAonArray??? длина буфера? поставил туда Bars и не увидел никаких перемен... если можно растолкуйте что к чему?
Присоединяюсь к предыдущему оратору.А пример вообще шедевр!
Sample
if(iMAOnBuffer(ExtBuffer,0,21,0,MODE_EMA,0)>iMAOnBuffer(ExtBuffer,0,60,0,MODE_EMA,0)) return(0);
if(iMAOnBuffer(ExtBuffer,0,21,0,MODE_EMA,0)>iMAOnBuffer(ExtBuffer,0,60,0,MODE_EMA,0)) return(0);
Долго я искал функцию iMAOnBuffer() :)
Самое подлое, что примеры со Стохастиком и Осмой работают, и вроде написаны также.
Rosh, Вы привели два фрагмента кода, но среди них нет какой-либо информации во-первых, о размере массивов PrimaryBuffer и SmoothedBuffer, во-вторых о том, как заполнен массив PrimaryBuffer. без этой информации трудно дать ответ.
вы можете задавать количество рассчитываемых элементов, меньшее, чем размер массива
вы можете задавать количество рассчитываемых элементов, меньшее, чем размер массива
PrimaryBuffer считает корректно, я проверял. Считается он на основе цифровых фильтров. Размер массива(количество обсчитываемых баров) я менял от Bars(max) до конкретного значения (160). В init() задается название индикатора, которое выводится в окошке индикатора (сам индикатор в отдельном окне, как OSMA).
Далее, я забыл , что логи МТ и логи индикаторов теперь в разных папках находятся, поэтому думал, что МТ не ругается.
Сейчас поднял нужный лог, там выдает:
Поэтому, так как вина наполовину на мне (потому что я не понимаю суть всех параметров в функции iMAOnArray, а именно total), прошу объяснить только , как бороться с этой ошибкой - почему нулевой индекс не входит в этот range, и почему размер массива получился такой, хотя обращение шло как
short_name="MyInduk Smoothed "; switch(SmoothMode) { case 0: name="SMA"; break; case 1: name="EMA"; break; case 2: name="SSMA"; break; case 3: name="LMA"; break; } IndicatorShortName(short_name+name+"("+SmoothPeriod+")");
Если я забиваю строку
SmoothedBuffer[i]=iMAOnArray(PrimaryBuffer,Bars,SmoothPeriod,0,MODE_SMA,i);
комментами, то эта надпись появляется, если нет, то исчезает. Отсюда я делаю вывод, что блок init() не может выполниться, если не выполняется блок start() - это я так, к слову, может другим это наблюдение пригодится.Далее, я забыл , что логи МТ и логи индикаторов теперь в разных папках находятся, поэтому думал, что МТ не ругается.
Сейчас поднял нужный лог, там выдает:
13:19:31 MyInduk Smoothed EURUSD,H4: index 0 is out of range [0-0]
Поэтому, так как вина наполовину на мне (потому что я не понимаю суть всех параметров в функции iMAOnArray, а именно total), прошу объяснить только , как бороться с этой ошибкой - почему нулевой индекс не входит в этот range, и почему размер массива получился такой, хотя обращение шло как
iMAOnArray(PrimaryBuffer,Bars,SmoothPeriod,0,MODE_SMA,i);
?
объявление массива
double SmoothedBuffer[];
говорит о его нулевой длине.
либо указывайте конкретный размер сначала, либо делайте ArrayResize, ArrayCopy, ArrayCopySeries или SetIndexBuffer, после чего размер будет назначен
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
почему значения переменой TWO = 0???
и что означает total - Items number to counting. в операторе iMAonArray??? длина буфера? поставил туда Bars и не увидел никаких перемен... если можно растолкуйте что к чему?