linear regression.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «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? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.