Ошибка в числе передаваемых параметров (очень распространенная
у новичков):
double upsig = iCustom(NULL,0,"AMAstdev",9,2,30,2.0,1.0 , int mode, int shift); //с заданными параметрами
Это опечатка. Читал я именно с параметрами mode и shift. Всё равно возвращает 2147... и так далее.
поиск по форуму с ключом "АМА" (лат. регистр) - там есть примеры получше.
Пример там всё тот же - только без расчёта стандартного отклонения, просто сигналом считается отклонение линии на заданное количество пунктов.Зато обнаружил как минимум ещё одного человека, у которого те же проблемы - причём с кодом, взятым прямо отсюда.
Функция iAMA, предложенная KimIV мне не помогла (руки кривые?). Потому как написать индикатор на ней что-то не получилось, а хочется, чтобы и индикатор, и эксперт получали гарантировано одно и то же.
Всё же, как получить правильные значения из программы?
Вот в этом месте
нет записи нулевых значений, почитайте https://www.mql5.com/ru/forum/50458
if (ddK > Filter) kAMAupsig[pos] = AMA; //есть восходящий тренд else kAMAupsig[pos] = 0; //нет восходящего тренда if (ddK < -Filter) kAMAdownsig[pos] = AMA; //есть нисходящий тренд else kAMAdownsig[pos] = 0; // нет нисходящего тренда
нет записи нулевых значений, почитайте https://www.mql5.com/ru/forum/50458
Rosh:
Вот в этом месте
нет записи нулевых значений, почитайте https://www.mql5.com/ru/forum/50458
Спасибо, Rosh. Я вставил строки видаВот в этом месте
if (ddK > Filter) kAMAupsig[pos] = AMA; //есть восходящий тренд else kAMAupsig[pos] = 0; //нет восходящего тренда if (ddK < -Filter) kAMAdownsig[pos] = AMA; //есть нисходящий тренд else kAMAdownsig[pos] = 0; // нет нисходящего тренда
нет записи нулевых значений, почитайте https://www.mql5.com/ru/forum/50458
SetIndexEmptyValue(0,0.0);в Init функцию для каждого индикаторного буфера. Теперь, я таки получаю нулевые значения. Всегда и везде. Включая нулевой буфер индикатора, т.е., тот, который содержит значения самой линии (которая не может быть равна нулю). Таким образом, проблема не только в этом. Правильные значения - это не только "не 2147... ". Это те значения, которые показывает индикатор в окне графика и в окне данных. Скажите, проблема в коде или между клавиатурой и креслом?
Щас
Попробуйте этот вариант
//+------------------------------------------------------------------+ //| AMAstdevKiriyenko.mq4 | //| Kiriyenko | //| 'Помогите исправить ошибку в самопальном индикаторе' | //+------------------------------------------------------------------+ #property copyright "Kiriyenko" #property link "'Помогите исправить ошибку в самопальном индикаторе'" #property indicator_chart_window #property indicator_buffers 3 #property indicator_color1 LightGreen #property indicator_width1 1 #property indicator_color2 Red #property indicator_width2 2 #property indicator_color3 Blue #property indicator_width3 2 //+------------------------------------------------------------------+ //| макроопределения | //+------------------------------------------------------------------+ //---- строковые константы #define INDICATOR_SHORT_NAME "AMAstdev" #define MAIN "AMA line" #define UP "UpTrend point" #define DOWN "DownTrend point" //+------------------------------------------------------------------+ //| внешние переменные | //+------------------------------------------------------------------+ //---- периоды extern int periodAMA = 9; //период расчёта к-та эффективности extern double nfast = 2; //период EMA для эффективного рынка extern double nslow = 30; //период EMA для неэффективного рынка //---- расчёт сглаживающей константы extern double Pow = 2.0; //степень эффективности //---- влияние стандартного отклонения extern double dK = 1.0; //коэффициент для фильтра //+------------------------------------------------------------------+ //| глобальные переменные | //+------------------------------------------------------------------+ //---- буферы double kAMAbuffer[]; double kAMAupsig[]; double kAMAdownsig[]; //---- оптимизация кода индикатора int cbars = 0, prevbars = 0, prevtime = 0; //---- сглаживающие коэффициенты double slowSC, fastSC; //---- приращения индикатора double ddAMA[]; //+------------------------------------------------------------------+ //| Вставка значения в массив приращений | //+------------------------------------------------------------------+ bool InsertDif(double a) { //---- проверка, заполнен ли массив for (int i = 0; i < periodAMA; i++) //для всех элементов массива if (ddAMA[i] == 0) //если элемент равен нулю { ddAMA[i] = a; //сохраняем значение в этот элемент return (true); //и удачно завершаемся } //---- массив уже заполнен, нужно вставлять элемент с конца for (i = 0; i < periodAMA-1;i++) //все элементы массива, кроме последнего ddAMA[i] = ddAMA[i+1]; //сдвигаем влево на одну позицию ddAMA[periodAMA-1] = a; //и записываем значение в самую правую позицию return (true); //после чего удачно завершаемся } //+------------------------------------------------------------------+ //| Инициализация | //+------------------------------------------------------------------+ int init() { //---- индикаторы //---- главная линия SetIndexBuffer(0,kAMAbuffer); SetIndexStyle(0,DRAW_LINE,0,2); SetIndexLabel(0,MAIN); //---- подтверждение восходящего тренда SetIndexBuffer(1,kAMAupsig); SetIndexStyle(1,DRAW_ARROW); SetIndexArrow(1,159); SetIndexLabel(1,UP); //---- подтверждение нисходящего тренда SetIndexBuffer(2,kAMAdownsig); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,159); SetIndexLabel(2,DOWN); //---- настройки индикатора IndicatorDigits(4); string name = StringConcatenate(INDICATOR_SHORT_NAME, " (",periodAMA,"/",nfast,"/",nslow,")"); IndicatorShortName(name); //---- расчёт к-тов slowSC = (2.0 /(nslow+1)); //медленный к-т сглаживания fastSC = (2.0 /(nfast+1)); //быстрый к-т сглаживания //---- подготовка массива ArrayResize(ddAMA,periodAMA); ArrayInitialize(ddAMA,0.); //---- готово return(0); } //+------------------------------------------------------------------+ //| Деинициализация | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Итерационная функция | //+------------------------------------------------------------------+ int start() { //---- оптимизация производительности double var1,var2; if (prevbars == Bars) return(0); //если индикатор уже посчитан, выходим cbars = IndicatorCounted(); //к-во посчитанных баров if (Bars <= (periodAMA+2)) return(0); // если баров на графике if (cbars < 0) return(-1); //выходим при некорректном значении переменных if (cbars > 0) cbars--; //последний посчитанный бар будет пересчитан //---- подготовка переменных int pos = Bars-cbars-periodAMA-2; //счётчик в начало периода double AMA0; //предыдущее AMA if (cbars == 0) AMA0 = Close[pos+1]; //предыдущее AMA не расчитывалось //---- расчёт индикатора while (pos>=0) { //---- расчёт сигнала double signal = MathAbs(Close[pos]-Close[pos+periodAMA]); //трендовая составляющая //---- расчёт шума double noise = 0.000000001; for (int i = 0;i<periodAMA;i++) { noise = noise + MathAbs(Close[pos+i]-Close[pos+i+1]); //шумовая составляющая } //---- расчёт коэффициента сглаживания double ER = signal/noise; //коэффициент эффективности double SSC = ER*(fastSC-slowSC) + slowSC; //коэффициент сглаживания //---- расчёт главной линии double AMA = AMA0 + (MathPow(SSC,Pow)*(Close[pos]-AMA0)); //расчёт kAMAbuffer[pos]=AMA; //вывод //---- расчёт фильтрации тренда double ddK = (AMA - AMA0)/Point; //разность InsertDif(ddK); //накапливаем приращение if (pos < Bars - 2*(periodAMA+2)) //если баров накопилось достаточно { //---- расчёт среднего арифметического double SMAdif = 0; //вначале равно нулю for (i = 0; i < periodAMA; i++) { SMAdif += ddAMA[i]; //последовательно суммируем } SMAdif /= periodAMA; //и делим на количество //---- расчёт стандартного отклонения double StDev = 0; //вначале равно нулю for (i = 0; i < periodAMA; i++) { StDev += MathPow(ddAMA[i]-SMAdif,2); //суммируем квадраты отклонений } StDev = MathSqrt(StDev)/periodAMA; //извлекаем корень и делим на количество //---- расчёт фильтра double Filter = dK*StDev; //---- обработка значений var1=0; var2=0; if (ddK > Filter) var1=AMA; //есть восходящий тренд if (ddK < -Filter) var2=AMA; //есть нисходящий тренд kAMAupsig[pos] = var1; //нет восходящего тренда kAMAdownsig[pos] = var2; // нет нисходящего тренда } //---- переход к концу цикла AMA0 = AMA; //сохраняем предыдущее значение AMA pos--; //переходим к сдедующему бару } //---- завершение работы prevbars=Bars; //сохраняем количество баров return(0); //готово }
Большое спасибо, Rosh, за участие. Ничего не поменялось. Я же говорю,
нулю (или миллиардам) равны как upsig и downsig, так и главная линия,
которая считается так:
Здесь переменная во-первых, в любом случае проинициализирована, во-вторых, не может быть равна нулю ни при каких обстоятельствах.
Высланный в последнем посте код тоже выводит эти самые два миллиарда. Причём, для главной линии тоже. Я понимаю, что SetIndexEmptyValue позволит получать нули. Но требуются не нули.
Забавно, что если печатать содержимое индикаторных буферов из кода индикатора:
А через iCustom() - ни-ни. Причём, я пробовал просто заносить в буфер произвольные значения:
И так делают все версии этого индикатора, в том числе, с этого сервера взятые :?
С уважением.
//---- расчёт главной линии double AMA = AMA0 + (MathPow(SSC,Pow)*(Close[pos]-AMA0)); //расчёт kAMAbuffer[pos]=AMA; //вывод
Здесь переменная во-первых, в любом случае проинициализирована, во-вторых, не может быть равна нулю ни при каких обстоятельствах.
Высланный в последнем посте код тоже выводит эти самые два миллиарда. Причём, для главной линии тоже. Я понимаю, что SetIndexEmptyValue позволит получать нули. Но требуются не нули.
Забавно, что если печатать содержимое индикаторных буферов из кода индикатора:
Print(kAMAbuffer[pos]);выводятся нормальные значения.
А через iCustom() - ни-ни. Причём, я пробовал просто заносить в буфер произвольные значения:
kAMAbuffer[pos] = 12.3;- нифига! В индикаторе всё правильно, а iCustom продолжает дёргать нулевые значения.
И так делают все версии этого индикатора, в том числе, с этого сервера взятые :?
С уважением.
Не знаю, что у Вас там не получается, вот такой проверочный скрипт
выдает на 4х часовке Фунте
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: removed
2006.11.13 13:35:27 AMAstdevKiriyenko GBPUSD,H4: removed
2006.11.13 13:35:27 AMAstdevKiriyenko GBPUSD,H4: deinitialized
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9078 up=1. 9078 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9075 up=1. 9075 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9067 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9067 up=1. 9067 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9064 up=1. 9064 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9057 up=1. 9057 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9044 up=1. 9044 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9043 up=1. 9043 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=0 down=1. 9038
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=1. 9038 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9034 up=1. 9034 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.903 up=1. 903 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9027 up=1. 9027 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9018 up=1. 9018 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9007 up=1. 9007 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.899 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8988 up=1. 8988 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8986 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8986 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8985 up=0 down=1. 8985
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8992 up=0 down=1. 8992
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9002 up=0 down=1. 9002
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9019 up=0 down=1. 9019
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9028 up=0 down=1. 9028
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9036 up=0 down=1. 9036
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9042 up=0 down=1. 9042
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9045 up=0 down=1. 9045
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9047 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9047 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9046 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9046 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9045 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9045 up=1. 9045 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9042 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9041 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9041 up=1. 9041 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=1. 9039 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9028 up=1. 9028 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9018 up=1. 9018 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9009 up=1. 9009 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8997 up=1. 8997 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8994 up=1. 8994 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.899 up=1. 899 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8983 up=1. 8983 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8975 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8974 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8974 up=1. 8974 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8973 up=1. 8973 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8972 up=1. 8972 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8969 up=1. 8969 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8963 up=1. 8963 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.895 up=1. 895 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8942 up=1. 8942 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8936 up=1. 8936 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8929 up=1. 8929 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8919 up=1. 8919 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8907 up=1. 8907 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8885 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8886 up=1. 8886 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8872 up=1. 8872 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8853 up=1. 8853 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8839 up=1. 8839 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8804 up=1. 8804 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8781 up=1. 8781 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8755 up=1. 8755 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8751 up=1. 8751 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8742 up=1. 8742 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8735 up=1. 8735 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8733 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8732 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8731 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8731 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8731 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8731 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.873 up=0 down=1. 873
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8735 up=0 down=1. 8735
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8751 up=0 down=1. 8751
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8768 up=0 down=1. 8768
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8781 up=0 down=1. 8781
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8786 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8789 up=0 down=1. 8789
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8798 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8801 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.88 up=1. 88 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8798 up=1. 8798 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8787 up=1. 8787 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8772 up=1. 8772 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8749 up=1. 8749 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8729 up=1. 8729 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8716 up=1. 8716 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8704 up=1. 8704 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8695 up=1. 8695 down=0
2006.11.13 13:35:27 AMAstdevKiriyenko GBPUSD,H4: initialized
2006.11.13 13:35:27 AMAstdevKiriyenko GBPUSD,H4: loaded successfully
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: loaded successfully
2006.11.13 13:35:12 Compiling 'CheckAMAStep'
//+------------------------------------------------------------------+ //| CheckAMAStep.mq4 | //| Rosh | //| 'Помогите исправить ошибку в самопальном индикаторе' | //+------------------------------------------------------------------+ #property copyright "Rosh" #property link "'Помогите исправить ошибку в самопальном индикаторе'" //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { double main,up,down; //---- for (int shift=100;shift>-0;shift--) { main=iCustom(Symbol(),0,"AMAstdevKiriyenko",9,2,30,2.0,1.0,0,shift); up=iCustom(Symbol(),0,"AMAstdevKiriyenko",9,2,30,2.0,1.0,1,shift); down=iCustom(Symbol(),0,"AMAstdevKiriyenko",9,2,30,2.0,1.0,2,shift); Print("i="," main=",main," up=",up," down=",down); } //---- return(0); } //+------------------------------------------------------------------+
выдает на 4х часовке Фунте
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: removed
2006.11.13 13:35:27 AMAstdevKiriyenko GBPUSD,H4: removed
2006.11.13 13:35:27 AMAstdevKiriyenko GBPUSD,H4: deinitialized
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9078 up=1. 9078 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9075 up=1. 9075 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9067 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9067 up=1. 9067 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9064 up=1. 9064 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9057 up=1. 9057 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9044 up=1. 9044 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9043 up=1. 9043 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=0 down=1. 9038
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9038 up=1. 9038 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9034 up=1. 9034 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.903 up=1. 903 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9027 up=1. 9027 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9018 up=1. 9018 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9007 up=1. 9007 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.899 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8988 up=1. 8988 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8986 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8986 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8985 up=0 down=1. 8985
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8992 up=0 down=1. 8992
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9002 up=0 down=1. 9002
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9019 up=0 down=1. 9019
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9028 up=0 down=1. 9028
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9036 up=0 down=1. 9036
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9042 up=0 down=1. 9042
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9045 up=0 down=1. 9045
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9047 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9047 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9046 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9046 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9045 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9045 up=1. 9045 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9042 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9041 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9041 up=1. 9041 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9039 up=1. 9039 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9028 up=1. 9028 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9018 up=1. 9018 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.9009 up=1. 9009 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8997 up=1. 8997 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8994 up=1. 8994 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.899 up=1. 899 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8983 up=1. 8983 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8975 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8974 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8974 up=1. 8974 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8973 up=1. 8973 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8972 up=1. 8972 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8969 up=1. 8969 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8963 up=1. 8963 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.895 up=1. 895 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8942 up=1. 8942 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8936 up=1. 8936 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8929 up=1. 8929 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8919 up=1. 8919 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8907 up=1. 8907 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8885 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8886 up=1. 8886 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8872 up=1. 8872 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8853 up=1. 8853 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8839 up=1. 8839 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8804 up=1. 8804 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8781 up=1. 8781 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8755 up=1. 8755 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8751 up=1. 8751 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8742 up=1. 8742 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8735 up=1. 8735 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8733 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8732 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8731 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8731 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8731 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8731 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.873 up=0 down=1. 873
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8735 up=0 down=1. 8735
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8751 up=0 down=1. 8751
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8768 up=0 down=1. 8768
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8781 up=0 down=1. 8781
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8786 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8789 up=0 down=1. 8789
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8798 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8801 up=0 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.88 up=1. 88 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8798 up=1. 8798 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8787 up=1. 8787 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8772 up=1. 8772 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8749 up=1. 8749 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8729 up=1. 8729 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8716 up=1. 8716 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8704 up=1. 8704 down=0
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: i= main=1.8695 up=1. 8695 down=0
2006.11.13 13:35:27 AMAstdevKiriyenko GBPUSD,H4: initialized
2006.11.13 13:35:27 AMAstdevKiriyenko GBPUSD,H4: loaded successfully
2006.11.13 13:35:27 CheckAMAStep GBPUSD,H4: loaded successfully
2006.11.13 13:35:12 Compiling 'CheckAMAStep'
Rosh, спасибо, открыл глаза.
Фишка была в том, что индикатор, наложенный на график, отрисовывался весь, но при поступлении новых баров он этого не делал. Поэтому, при прогоне на истории, он тоже нормально возвращал значение для нулевого бара и все предыдущие, но уже на следующем баре нулевое значение доступно не было.
Исправил я так: почти полностью прибил "оптимизацию" кода - удалил всё, связанное с
В связи с этим, вопрос: где был косяк в оригинальном коде? У меня из-за отсутствия индикатора просто работа стоит (стояла), поэтому я ошибку из академического интереса искать не стал, просто исправил таким образом. Но академический интерес остался. Как надо было правильно использовать IndicatorCounted в приведённом индикаторе? Кому интересно и не лень, подскажите.
Фишка была в том, что индикатор, наложенный на график, отрисовывался весь, но при поступлении новых баров он этого не делал. Поэтому, при прогоне на истории, он тоже нормально возвращал значение для нулевого бара и все предыдущие, но уже на следующем баре нулевое значение доступно не было.
Исправил я так: почти полностью прибил "оптимизацию" кода - удалил всё, связанное с
cbars = IndicatorCounted();и дальнейшим использованием переменной cbars. В связи с этим ввёл переменную NumBars - на скольких барах вообще строить индикатор.
В связи с этим, вопрос: где был косяк в оригинальном коде? У меня из-за отсутствия индикатора просто работа стоит (стояла), поэтому я ошибку из академического интереса искать не стал, просто исправил таким образом. Но академический интерес остался. Как надо было правильно использовать IndicatorCounted в приведённом индикаторе? Кому интересно и не лень, подскажите.
dmitriy:
Rosh, спасибо, открыл глаза.
Фишка была в том, что индикатор, наложенный на график, отрисовывался весь, но при поступлении новых баров он этого не делал. Поэтому, при прогоне на истории, он тоже нормально возвращал значение для нулевого бара и все предыдущие, но уже на следующем баре нулевое значение доступно не было.
Исправил я так: почти полностью прибил "оптимизацию" кода - удалил всё, связанное с
В связи с этим, вопрос: где был косяк в оригинальном коде? У меня из-за отсутствия индикатора просто работа стоит (стояла), поэтому я ошибку из академического интереса искать не стал, просто исправил таким образом. Но академический интерес остался. Как надо было правильно использовать IndicatorCounted в приведённом индикаторе? Кому интересно и не лень, подскажите.
Насколько я вижу, Вы забыли "подавить" нулем значение, возвращаемое
по умолчанию как нерисуемое. Rosh, спасибо, открыл глаза.
Фишка была в том, что индикатор, наложенный на график, отрисовывался весь, но при поступлении новых баров он этого не делал. Поэтому, при прогоне на истории, он тоже нормально возвращал значение для нулевого бара и все предыдущие, но уже на следующем баре нулевое значение доступно не было.
Исправил я так: почти полностью прибил "оптимизацию" кода - удалил всё, связанное с
cbars = IndicatorCounted();и дальнейшим использованием переменной cbars. В связи с этим ввёл переменную NumBars - на скольких барах вообще строить индикатор.
В связи с этим, вопрос: где был косяк в оригинальном коде? У меня из-за отсутствия индикатора просто работа стоит (стояла), поэтому я ошибку из академического интереса искать не стал, просто исправил таким образом. Но академический интерес остался. Как надо было правильно использовать IndicatorCounted в приведённом индикаторе? Кому интересно и не лень, подскажите.
SetIndexEmptyValue(Номер_буффера,0.0);
Иначе как нерисуемое взвращается EMPTY_VALUE, которое отлично от нуля.
В той ветке, на которую Rosh ссылался это только краем прошло.
Успехов.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Выводил через Print() индикаторные буферы. Всё соответствует истине.
Вот код:
При чтении кода из эксперта через функцию iCustom() наблюдаю странность - содержимое всех трёх индикаторных буферов по мнению iCustom() равно 2147483647 (максимум для типа int). Мало того, при обращении к нескольким следующим буферам (которых не существует), получаю сплошной ряд нулей. И только после определённого номера (не помню, какого), чтение следующего индикаторного буфера возвращает ошибку "Нет такого буфера".
Читаю так:
Приходится писать отдельную функцию, которая считает этот индикатор, а это очень неудобно и вообще - мои предыдущие самопальные индикаторы, а также скачанные поделки других писателей :) прекрасно читаются обычным способом.
В чём дело я уже слабо себе представляю.
Помогите!