← К каталогу
Исходный код · ID 2892

linear regression.mq5

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4, который отображает на графике линейную регрессию и каналы стандартного отклонения для списка выбранных валютных пар. Индикатор строит графические объекты (трендовые линии, каналы, текстовые подписи и индикаторы направления) непосредственно в окне графика.

При расчёте индикатор считывает цены закрытия для каждого символа из заданного списка на указанном количестве баров и определяет направление тренда. Для текущего символа отображается трендовая линия регрессии и три пары каналов, построенных по множителям стандартного отклонения. Цветовая индикация направления меняется в зависимости от того, движется ли тренд вверх или вниз.

Набор параметров позволяет настроить список сканируемых символов, префиксы и суффиксы имён, количество баров для расчёта, числовые множители каналов, цвета линий и текстовых элементов, а также позицию подписей на графике.

Настройки программы

НастройкаОписание
Symbols To Scan (symbols) Список символов — Список символов для сканирования через запятую.
period Таймфрейм расчёта — Таймфрейм, используемый для расчёта (0 — таймфрейм графика).
line_width Толщина линий — Толщина линий трендовых объектов и каналов.
Color when moved up (UPcolor) Цвет восходящего тренда — Цвет индикации при восходящем направлении тренда.
Color when moved down (DownColor) Цвет нисходящего тренда — Цвет индикации при нисходящем направлении тренда.
bars back regression begins (LR_length) Длина расчёта регрессии — Количество баров, от которого начинается расчёт регрессии.
LR_c Цвет линии регрессии — Цвет трендовой линии линейной регрессии.
1st channel (std_channel_1) Множитель канала 1 — Множитель стандартного отклонения для первых каналов.
c_1 Цвет канала 1 — Цвет каналов первого множителя стандартного отклонения.
2nd channel (std_channel_2) Множитель канала 2 — Множитель стандартного отклонения для вторых каналов.
c_2 Цвет канала 2 — Цвет каналов второго множителя стандартного отклонения.
3nd channel (std_channel_3) Множитель канала 3 — Множитель стандартного отклонения для третьих каналов.
c_3 Цвет канала 3 — Цвет каналов третьего множителя стандартного отклонения.
Symbol Prefix (symbolPrefix) Префикс символа — Префикс, добавляемый к имени каждого символа из списка.
Symbol Suffix (symbolSuffix) Суффикс символа — Суффикс, добавляемый к имени каждого символа из списка.
HorizPos Горизонтальная позиция меток — Горизонтальная позиция текстовых меток на графике.
VertPos Вертикальная позиция меток — Вертикальная позиция текстовых меток на графике.
Получить полный код

Поиск по коду файла

???//+------------------------------------------------------------------+

#property indicator_chart_window

input string    symbols="AUDCAD,AUDCHF,AUDJPY,AUDNZD,AUDUSD,CADCHF,CADJPY,CHFJPY,EURAUD,EURCAD,EURCHF,EURGBP,EURJPY,EURNZD,EURUSD,GBPAUD,GBPCAD,GBPCHF,GBPJPY,GBPNZD,GBPUSD,NZDCAD,NZDCHF,NZDJPY,NZDUSD,USDCAD,USDCHF,USDJPY"; //Symbols To Scan

extern int period=0;
/*default 0 means the channel will use the open time from "x" bars back on which ever time period 
the indicator is attached to_  one can change to 1,5,15,30,60___etc to "lock" the start time to a specific 
period, and then view the "locked" channels on a different time period___*/
extern int line_width=1;
input color   UPcolor = clrLimeGreen;     //Color when moved up
input color   DownColor = clrRed;      //Color when moved down

extern int LR_length=400;   // bars back regression begins
extern color  LR_c=Orange;
extern double std_channel_1=0.618;        // 1st channel
extern color  c_1=Gray;
extern double std_channel_2=1.618;        // 2nd channel
extern color  c_2=Gray;
extern double std_channel_3=2.618;        // 3nd channel
extern color  c_3=Gray;

input string symbolPrefix=""; //Symbol Prefix
input string symbolSuffix=""; //Symbol Suffix   
string symbolListFinal[]; // array of symbols after merging post and prefix
string symbolList[]; // array of symbols 
color MyColor[]; 
int numSymbols=0; //the number of symbols to scan 
extern int      HorizPos            = 10;
extern int      VertPos             = 10;

double std_dev[28];
double LR_price_1[28];
double LR_price_2[28];

/*

   double AuxStd_dev[28];   

   double lowest[28];
   double highest[28];
   double lowest_dev[28];
   double highest_dev[28];
*/

int init(){
      // код доступен только после оплаты
   }

int deinit(){ ObjectDelete(period+"m "+LR_length+" TL"); 
   ObjectDelete(period+"m "+LR_length+" +"+std_channel_1+"d"); ObjectDelete(period+"m "+LR_length+" -"+std_channel_1+"d");
   ObjectDelete(period+"m "+LR_length+" +"+std_channel_2+"d"); ObjectDelete(period+"m "+LR_length+" -"+std_channel_2+"d");
   ObjectDelete(period+"m "+LR_length+" +"+std_channel_3+"d"); ObjectDelete(period+"m "+LR_length+" -"+std_channel_3+"d");
return(0);}

int start(){
      // код доступен только после оплаты
   }//refresh chart

ObjectDelete(period+"m "+LR_length+" TL");
ObjectDelete(period+"m "+LR_length+" +"+std_channel_1+"d"); ObjectDelete(period+"m "+LR_length+" -"+std_channel_1+"d");
ObjectDelete(period+"m "+LR_length+" +"+std_channel_2+"d"); ObjectDelete(period+"m "+LR_length+" -"+std_channel_2+"d");
ObjectDelete(period+"m "+LR_length+" +"+std_channel_3+"d"); ObjectDelete(period+"m "+LR_length+" -"+std_channel_3+"d");

int start_bar=LR_length, end_bar=0;
   int n=start_bar-end_bar+1;

  for(int j=0;j<28;j++)
   {  

   double value=iClose(symbolListFinal[j],period,end_bar);
   double a,b,c;
   double sumy=value;
   double sumx=0.0;
   double sumxy=0.0;
   double sumx2=0.0;

   for(int i=1; i<n; i++)
     {
      value=iClose(symbolListFinal[j],period,end_bar+i);
      sumy+=value;
      sumxy+=value*i;
      sumx+=i;
      sumx2+=i*i;
     }

   c=sumx2*n-sumx*sumx;
   if(c==0.0) return;
   b=(sumxy*n-sumx*sumy)/c;
   a=(sumy-sumx*b)/n;
   LR_price_2[j]=a;
   LR_price_1[j]=a+b*n;

         int passo = 4;

         switch(j)//initalize seleted pivot point forumula
           {
            case 2 : passo=3;     break;
            case 6 : passo=3;     break;            
            case 7 : passo=2;     break;
            case 12 : passo=2;    break;            
            case 18 : passo=2;    break;   
            case 23 : passo=3;    break; 
            case 27 : passo=2;    break;                                                
           }   

/*  
  SetText("LR_price_1"+IntegerToString(j),DoubleToStr(LR_price_2[j],passo),HorizPos+120,(j*16)+VertPos+15,clrAqua); 
  SetText("LR_price_2"+IntegerToString(j),DoubleToStr(LR_price_1[j],passo),HorizPos+170,(j*16)+VertPos+15,clrAqua);
*/    
           if(LR_price_2[j]<LR_price_1[j]) {

                       GlobalVariableSet(symbolListFinal[j]+"LR", DownColor);
                       SetObjText("ColSymb"+IntegerToString(j),CharToStr(234),HorizPos+50,(j*16)+VertPos+15,DownColor,8);}
           else{
                       GlobalVariableSet(symbolListFinal[j]+"LR", UPcolor);
                       SetObjText("ColSymb"+IntegerToString(j),CharToStr(233),HorizPos+50,(j*16)+VertPos+15,UPcolor,8);}  

    if(symbolListFinal[j]==_Symbol) int dux=j;      

 }

   ObjectCreate(period+"m "+LR_length+" TL",OBJ_TREND,0,iTime(Symbol(),period,start_bar),LR_price_1[dux],Time[end_bar],LR_price_2[dux]);
   ObjectSet(period+"m "+LR_length+" TL",OBJPROP_COLOR,LR_c);
   ObjectSet(period+"m "+LR_length+" TL",OBJPROP_WIDTH,line_width);
   ObjectSet(period+"m "+LR_length+" TL",OBJPROP_RAY,false);     

 for(int t=0; t<start_bar; t++)
  { 

Показано первые 50% кода (символов: 9010)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
901₽ ≈ $11.01