//+------------------------------------------------------------------+ //| Гусеница.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Yellow #property indicator_color2 Blue //---- buffers //---- indicator buffers double ExtBuffer1[]; double ExtBuffer2[]; //300 - количество баров double X[300]; //массив, в который записываются котировки и он передается как данные для рассчета Гусенице double Y1[300];//в этом массиве хранятся значения Гусеницы с 1ым набором параметров double Y2[300];//в этом массиве хранятся значения Гусеницы со 2ым набором параметров //импорт функции Гусеница из библиотеки #import "ExpertSample.dll" void fastsingular(double a[],int,int,int,double b[]); //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(2); SetIndexBuffer(0, ExtBuffer1); SetIndexBuffer(1, ExtBuffer2); SetIndexStyle(0,DRAW_LINE, EMPTY, 2); SetIndexStyle(1,DRAW_LINE, EMPTY, 2); IndicatorDigits(6); SetIndexDrawBegin(0,0); IndicatorShortName("Gus"); return(0); } int start() { //Инициализация массивов нулями ArrayInitialize(X,0); ArrayInitialize(Y1,0); ArrayInitialize(Y2,0); //n - длина массива данных, передаваемых гусенице (максимум 4000, но лучше брать немного...) //l1, l2 - длины лагов (максимум 20) //s1, s2 - число собственных компонент. если использовать только для сглаживания, то = 1 int i, n, l1, s1; n = 300; l1 = 7; s1 = 1; int l2, s2; l2 = 5; s2 = 1; //заполнение массива ценами for(i=299; i>=0; i--) { X[i] = Low[i] + (High[i]-Low[i])/2; //Print("--", X[i]); } //ArrayCopy(X, Close, 0, 0, n); fastsingular(X, n, l1, s1, Y1); //вызов гусеницы с 1ым набором параметров fastsingular(X, n, l2, s2, Y2); //вызов гусеницы со 2ым набором параметров ArrayCopy(ExtBuffer1, Y1); ArrayCopy(ExtBuffer2, Y2); return(0); } //+------------------------------------------------------------------+