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

Center of Gravity

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

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

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

О программе

Это пользовательский индикатор для MetaTrader 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 Orange
#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 = "";
extern string Mod1Code = "";
extern string Mod2Code = "";
extern string Mod3Code = "";
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++)

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

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

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

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

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

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

Стоимость полного кода
624,70₽ ≈ $7.64