center-of-gravity-v3_5321336253495413104.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «center-of-gravity-v3_5321336253495413104.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор рассчитывает кривую полиномиальной регрессии «Center of Gravity» методом наименьших квадратов на основе цен закрытия. Для определения коэффициентов полинома строится система линейных уравнений, которая решается методом Гаусса. Порядок полинома задаётся параметром метода.
На графике отображается рассчитанная регрессионная кривая, а также полосы стандартного отклонения на уровнях ±1σ, ±3σ и ±5σ, каждая из которых имеет свой цвет. При активации соответствующего переключателя индикатор рисует стрелки-метки с текущими значениями на нулевом баре.
Индикатор поддерживает интерактивное взаимодействие с графиком: клик по маркерной точке позволяет пересчитать диапазон баров, а нажатие клавиш увеличивает или уменьшает глобальный множитель в пипах, влияющий на ширину полос.
Настройки программы
| Настройка | Описание |
|---|---|
| OrigCode | Текстовый параметр, содержащий ссылку на автора оригинального кода индикатора |
| Mod1Code | Текстовый параметр, содержащий ссылку на автора первой модификации индикатора |
| Mod2Code | Текстовый параметр, содержащий ссылку на автора второй модификации индикатора |
| Mod3Code | Текстовый параметр, содержащий ссылку на автора третьей модификации индикатора |
| See_Prices | Переключатель для показа или скрытия ценовых меток (стрелок) на текущем баре |
| bars_back | Целое число, задающее количество баров, используемых для расчёта индикатора |
| m | Вариант настройки, определяющий метод расчёта: уровни поддержки/сопротивления, каналы или дуги |
| i | Целое число, задающее начальный бар для расчёта полиномиальной регрессии |
| kstd | Числовой параметр-множитель, масштабирующий ширину полос стандартного отклонения |
| sName | Целочисленный идентификатор, используемый для формирования имени объекта и глобальной переменной |
Поиск по коду файла
#property strict
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 RoyalBlue
#property indicator_color2 Red
#property indicator_color3 LimeGreen
#property indicator_color4 Red
#property indicator_color5 LimeGreen
#property indicator_color6 Silver
#property indicator_color7 Silver
#property indicator_style1 2
#property indicator_style2 0
#property indicator_style3 0
#property indicator_style4 0
#property indicator_style5 0
#property indicator_style6 0
#property indicator_style7 0
#property indicator_style8 0
enum ENUM_SR
{
sr1=1,//S/R
sr2=2,//Channel
sr3=3//Arcs
};
extern string OrigCode = "NG3110 AT latchess.com";
extern string Mod1Code = "Linuxser AT www.forex-tsd.com";
extern string Mod2Code = "Brooky AT Brooky-Indicators.com";
extern string Mod3Code = "www.mql5.com/en/users/stiopa";
extern bool See_Prices=true;//See Prices
extern int bars_back=100;//Bars Back
input ENUM_SR m=3;//Method
extern int i=0;//Beginning
extern double kstd=0.1;//Multiplier
extern int sName=1102;//Name
string stRing="pr"+(string)sName;
string pips_Global="pips_Global"+Symbol();
double fx[],sqh[],sql[],stdh[],stdl[],stdh2[],stdl2[];
double ai[10,10],b[10],x[10],sx[20];
double sum,qq,mm,tt,sq,std;
int ip,p,n,f,n_global=0,pips_global=0;
int ii,jj,kk,ll,nn;
bool ready_flag=false;
void Prepare_Object()
{
if(ready_flag==true)return;
p=bars_back;
nn=m;
Arrow(stRing,Time[p],fx[p],159,Red,2,DoubleToStr(p,0));
ready_flag=true;
}
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
EventKillTimer();
if(reason==1 || reason==5)
{
ObjectDelete(stRing);
GlobalVariableDel(pips_Global);
}
for(int y=0; y<8; y++)
{
ObjectDelete("price"+(string)y);
}
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
// код доступен только после оплаты
}
void OnTimer()
{
if(ready_flag==false)
{
mat();
}
}
void mat()
{
if(ready_flag==false)Prepare_Object();
int mi;
p=bars_back;
sx[1]=p+1;
SetIndexDrawBegin(0,Bars-p-1);
SetIndexDrawBegin(1,Bars-p-1);
SetIndexDrawBegin(2,Bars-p-1);
SetIndexDrawBegin(3,Bars-p-1);
SetIndexDrawBegin(4,Bars-p-1);
SetIndexDrawBegin(5,Bars-p-1);
SetIndexDrawBegin(6,Bars-p-1);
for(mi=1;mi<=nn*2-2;mi++)
{
sum=0;
for(n=i;n<=i+p;n++)
{
sum+=MathPow(n,mi);
}
sx[mi+1]=sum;
}
for(mi=1;mi<=nn;mi++)
{
sum=0.00000;
for(n=i;n<=i+p;n++)
{
if(mi==1)
sum+=Close[n];
else
sum+=Close[n]*MathPow(n,mi-1);
}
b[mi]=sum;
}
for(jj=1;jj<=nn;jj++)
{
for(ii=1;ii<=nn;ii++)
{
kk=ii+jj-1;
ai[ii,jj]=sx[kk];
}
}
for(kk=1;kk<=nn-1;kk++)
{
ll=0;mm=0;
for(ii=kk;ii<=nn;ii++)
{
if(MathAbs(ai[ii,kk])>mm)
{
mm=MathAbs(ai[ii,kk]);
ll=ii;
}
}
if(ll!=0)
Показано первые 50% кода (символов: 5674)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.