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

X-TMA CHANNEL-01

!!!-mt4 x-tma channel-01 aa button.mq5

Похожие материалы по тегам

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный файл является пользовательским индикатором для MetaTrader 5, предназначенным для отображения на графике ценовых каналов и вспомогательных элементов. Индикатор рассчитывает и рисует две независимые линии канала с настраиваемыми периодами, цветами и множителями волатильности, а также ленту между их границами. Дополнительно предусмотрены стрелки-сигналы, которые могут отображаться на графике в зависимости от выбранного режима.

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

Настройки сгруппированы по разделам: параметры первого канала, второго канала, ленты и внешнего вида стрелок, а также параметры кнопки управления. Все вычисления выполняются на основе ценовых данных и стандартных индикаторов MetaTrader.

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

НастройкаОписание
Indicator Строка с названием индикатора, отображаемая в его заголовке.
STR01 Текстовая метка-разделитель для группы настроек первого канала TMA.
showTMA1 Включает отображение первого канала.
TMA1per Период расчёта первого канала.
TMA1clr Цвет линий первого канала.
TMA1atrMulti Множитель, применяемый к значению волатильности при расчёте границ первого канала.
STR02 Текстовая метка-разделитель для группы настроек второго канала TMA.
showTMA2 Включает отображение второго канала.
TMA2per Период расчёта второго канала.
TMA2price Тип цены, используемый при расчёте второго канала.
TMA2clr Цвет линий второго канала.
STR03 Текстовая метка-разделитель для группы настроек ленты.
ShowArrows Режим отображения стрелок: скрыть, внутри, по центру или снаружи относительно свечи.
ARROWBAR Номер бара, на котором отображается стрелка. Значение 0 означает отрисовку на текущем баре, что может привести к исчезновению стрелки до закрытия бара.
ArrowGap Расстояние в пунктах от максимума или минимума свечи до позиции стрелки.
SoundFile Имя звукового файла, воспроизводимого при появлении сигнала.
SIGNALBAR Номер бара, на котором проверяется наличие сигнала для отправки уведомлений.
button_note1 Текстовая метка-разделитель перед группой настроек кнопки.
btn_corner Угол графика, к которому привязана кнопка.
btn_text Текст, отображаемый на кнопке.
btn_Font Название шрифта для текста кнопки.
btn_FontSize Размер шрифта текста кнопки.
btn_text_ON_color Цвет текста кнопки, когда отображение данных включено.
btn_text_OFF_color Цвет текста кнопки, когда отображение данных выключено.
btn_background_color Цвет фона кнопки.
btn_border_color Цвет рамки кнопки.
button_x Горизонтальное смещение кнопки от выбранного угла графика.
button_y Вертикальное смещение кнопки от выбранного угла графика.
btn_Width Ширина кнопки в пикселях.
btn_Height Высота кнопки в пикселях.
button_note2 Текстовая метка-разделитель после группы настроек кнопки.
Получить полный код

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

#property description "Let light shine out of darkness and illuminate your world"
#property description "and with this freedom leave behind your cave of denial"
#property indicator_chart_window
#property indicator_buffers 17
#define Version "TMA CHANNEL-01"
string ID="Xard>",TimeFrame="Current time frame";

extern string Indicator = Version;

extern string STR01                      = "<<<==== [01] TMA1 Settings ====>>>";
  extern bool showTMA1                   = false;
   extern int TMA1per                    = 56,TMA1atr=100,TMA1width=1;
 extern color TMA1clr                    = clrRed;
extern double TMA1atrMulti               = 2.;
       double TMA1[],TMA1up[],TMA1dn[],TMA1bandUp[],TMA1bandDn[];

extern string STR02                      = "<<<==== [02] TMA2 Settings ====>>>";  
  extern bool showTMA2                   = true, Extrapolate=true;
   extern int TMA2per                    = 56,TMA2atr=100,TMA2width=3;
extern ENUM_APPLIED_PRICE TMA2price      = PRICE_WEIGHTED;
 extern color TMA2clr                    = clrDimGray;
extern double TMA2atrMulti               = 2.;  bool returnBars;
       double TMA2[],TMA2up[],TMA2dn[],TMA2bandUp[],TMA2bandDn[];   double TMA2slope[],trend1[],trend2[];

extern string STR03                      = "<<<==== [03] Ribbon Settings ====>>>";
  extern bool showRIBBON                 = true;  double MA1[],MA2[],MA3[],MA4[];
 extern color RibColUP                   = C'80,80,180',RibColDN=C'160,60,60';  int getChartScale=WRONG_VALUE;

enum showAR { HideArrows, INSIDE, CENTER, OUTSIDE };  //enum showAR { aDoNotCALC, HideArrows, aOnCHART, aOnINDIK }; 
extern showAR          ShowArrows  =  OUTSIDE;   //IN      
extern int               ARROWBAR  =  0;   //На каком баре рисовать Стрелку: =0 - рисовать на текущем (до закрытия - может исчезнуть)
extern int               ArrowGap  =  3;   //Дистанция от High/Low свечи  
extern color             ColorBUY  =  clrAqua,    //PaleGreen,  //LightGreen,  //Turquoise,  //White,  //LightCyan,   //White,  //LimeGreen,  //FireBrick,   //  
                        ColorSELL  =  clrOrange;   //HotPink;  //LightPink;  //Salmon;  //HotPink;  //Orange;  //Magenta;   //Red;  //Gold;  //SlateBlue;   //
extern int                CodeBUY  =  233,
                         CodeSELL  =  234,  
                        ArrowSize  =  2;        
extern string           SoundFile  =  "alert2.wav";   //"news.wav";  //"expert.wav";  //   //"stops.wav"   //
extern int              SIGNALBAR  =  1;   //На каком баре сигналить....
extern bool         AlertsMessage  =  true,   //false,    
                      AlertsSound  =  true,   //false,
                      AlertsEmail  =  false,
                     AlertsMobile  =  false;
double ARRUP[], ARRDN[];   datetime TimeBar=0;   ENUM_TIMEFRAMES TimeFrameS=PERIOD_CURRENT;   string sTFR;

extern string             button_note1          = "------------------------------";
extern ENUM_BASE_CORNER   btn_corner            = CORNER_LEFT_UPPER; // chart btn_corner for anchoring
extern string             btn_text              = "TMA";
extern string             btn_Font              = "Arial";
extern int                btn_FontSize          = 10;                             //btn__font size
extern color              btn_text_ON_color     = clrWhite;
extern color              btn_text_OFF_color    = clrRed;
extern color              btn_background_color  = clrDimGray;
extern color              btn_border_color      = clrBlack;
extern int                button_x              = 20;                                     //btn__x
extern int                button_y              = 13;                                     //btn__y
extern int                btn_Width             = 60;                                 //btn__width
extern int                btn_Height            = 20;                                //btn__height
extern string             button_note2          = "------------------------------";

bool                      show_data             = true;
string IndicatorName, IndicatorObjPrefix;

   bool calculateValue;  string FontType="Arial Black",SymPair="",indicatorFileName;
   double data1;  int timeFrame,BarsCount=1000,Type,Type2,win,FontSize=14,FontSize2=12,pipsize;

   int init2(){

   int Buffers=17,Buf=-1;  IndicatorBuffers(Buffers);  TMA2per=MathMax(TMA2per,1);
   if(TimeFrame==0 || TimeFrame<Period()) TimeFrame=Period();  timeFrame=stringToTimeFrame(TimeFrame);
   TimeFrameS = fmax(TimeFrameS,_Period);   /*TFK = TimeFrame/_Period;*/  sTFR = StringSubstr(EnumToString(TimeFrameS),7);

   win=WindowFind(ID);

   if(showRIBBON)         Type=DRAW_HISTOGRAM; else Type=DRAW_NONE;
   Buf+=1; SetIndexBuffer(Buf,MA1);       
   Buf+=1; SetIndexBuffer(Buf,MA2);       
   Buf+=1; SetIndexBuffer(Buf,MA3);       
   Buf+=1; SetIndexBuffer(Buf,MA4);       fSetBuffers();

   if(showTMA1)           Type=DRAW_LINE; else Type=DRAW_NONE; int T1w=TMA1width; color T1c=TMA1clr;
   Buf+=1; SetIndexBuffer(Buf,TMA1);       SetIndexStyle(Buf,DRAW_NONE);      SetIndexDrawBegin(Buf,TMA1per);
   Buf+=1; SetIndexBuffer(Buf,TMA1bandUp); SetIndexStyle(Buf,Type,0,T1w,T1c); SetIndexDrawBegin(Buf,TMA1per);
   Buf+=1; SetIndexBuffer(Buf,TMA1bandDn); SetIndexStyle(Buf,Type,0,T1w,T1c); SetIndexDrawBegin(Buf,TMA1per);

   if(showTMA2)           Type=DRAW_LINE; else Type=DRAW_NONE; int T2w=TMA2width; color T2c=TMA2clr;
   Buf+=1; SetIndexBuffer(Buf,TMA2);       SetIndexStyle(Buf,DRAW_NONE);      SetIndexDrawBegin(Buf,TMA2per);
   Buf+=1; SetIndexBuffer(Buf,TMA2up);     SetIndexStyle(Buf,DRAW_NONE);      SetIndexDrawBegin(Buf,TMA2per);
   Buf+=1; SetIndexBuffer(Buf,TMA2dn);     SetIndexStyle(Buf,DRAW_NONE);      SetIndexDrawBegin(Buf,TMA2per);
   Buf+=1; SetIndexBuffer(Buf,TMA2bandUp); SetIndexStyle(Buf,Type,0,T2w,T2c); SetIndexDrawBegin(Buf,TMA2per);
   Buf+=1; SetIndexBuffer(Buf,TMA2bandDn); SetIndexStyle(Buf,Type,0,T2w,T2c); SetIndexDrawBegin(Buf,TMA2per);
   Buf+=1; SetIndexBuffer(Buf,TMA2slope);  SetIndexStyle(Buf,DRAW_NONE);
   Buf+=1; SetIndexBuffer(Buf,trend1);     SetIndexStyle(Buf,DRAW_NONE);
   Buf+=1; SetIndexBuffer(Buf,trend2);     SetIndexStyle(Buf,DRAW_NONE);

   Buf+=1; SetIndexBuffer(Buf,ARRUP);  SetIndexStyle(Buf,ShowArrows>0?DRAW_ARROW:DRAW_NONE,EMPTY,ArrowSize,ColorBUY);   SetIndexArrow(Buf,CodeBUY);    
   Buf+=1; SetIndexBuffer(Buf,ARRDN);  SetIndexStyle(Buf,ShowArrows>0?DRAW_ARROW:DRAW_NONE,EMPTY,ArrowSize,ColorSELL);  SetIndexArrow(Buf,CodeSELL);   

   if(Buffers != Buf+1) Print("*******Buffer MisMatch!!!   ",Buffers," ",Buf);
   for(int Bufx=0;Bufx<indicator_buffers;Bufx++){SetIndexLabel(Bufx,"X-TMA");}

   indicatorFileName = WindowExpertName();
   calculateValue    = (TimeFrame=="calculateValue"); if (calculateValue) return(0);
   returnBars        = (TimeFrame=="returnBars");     if (returnBars)     return(0);
   timeFrame         = stringToTimeFrame(TimeFrame);  return(INIT_SUCCEEDED);}//End OnInit

   void deinit2(){ int reason; switch(reason){
      case REASON_CHARTCHANGE :
      case REASON_RECOMPILE   :
      case REASON_CLOSE       : break;
                      default : {         
   CleanUpOnAisle1(ID); string lookFor = ID+":"; int lookForLength = StringLen(lookFor);
   for(int io=ObjectsTotal()-1; io>=0; io--){string objectName=ObjectName(io); 
   if(StringSubstr(objectName,0,lookForLength)==lookFor) ObjectDelete(objectName);}}}}

int start2()
                   {
                   fSetBuffers();

   int counted_bars=IndicatorCounted();  int i,j,k,limit; double TMA1range;
   if(counted_bars<0) return(-1);  if(counted_bars>0) counted_bars--; 
   limit=MathMin(Bars-counted_bars+TMA2per,Bars-1);  if(returnBars){TMA2[0] = limit+1; return(0);}

   for (i=limit; i>=0; i--){
          TMA1[i] = EMPTY_VALUE;
        TMA1up[i] = EMPTY_VALUE;
        TMA1dn[i] = EMPTY_VALUE;
          TMA1[i] = iMA(NULL,0,TMA1per,0,MODE_LWMA,PRICE_CLOSE,i);
        TMA1range = iATR(NULL,0,TMA1atr,i+10);
    TMA1bandUp[i] = TMA1[i+1] + (TMA1range * TMA1atrMulti);
    TMA1bandDn[i] = TMA1[i+1] - (TMA1range * TMA1atrMulti);}

   if(calculateValue || timeFrame==Period()){
   if(TMA2slope[limit]==-1) CleanPoint(limit,TMA2up,TMA2dn);
   for(i=limit;i>=0;i--){
   if(Extrapolate || (!Extrapolate && i>TMA2per)){
            double sum  = (TMA2per+1)*iMA(NULL,0,1,0,MODE_SMA,TMA2price,i);
            double sumw = (TMA2per+1);
   for(j=1, k=TMA2per; j<=TMA2per; j++, k--){
             sum  += k*iMA(NULL,0,1,0,MODE_SMA,TMA2price,i+j);  sumw += k;
   if(j<=i){ sum  += k*iMA(NULL,0,1,0,MODE_SMA,TMA2price,i-j);  sumw += k;}}
   double TMA2range = iATR(NULL,0,TMA2atr,i+10)*TMA2atrMulti;
            TMA2[i] = sum/sumw;  
      TMA2bandUp[i] = TMA2[i]+TMA2range;
      TMA2bandDn[i] = TMA2[i]-TMA2range;} else {
            TMA2[i] = TMA2[i+1];  
      TMA2bandUp[i] = TMA2bandUp[i+1];  
      TMA2bandDn[i] = TMA2bandDn[i+1];}         
          TMA2up[i] = EMPTY_VALUE;
          TMA2dn[i] = EMPTY_VALUE;
       TMA2slope[i] = TMA2slope[i+1];
          trend1[i] = 0;
          trend2[i] = trend2[i+1];
   if(TMA2[i]> TMA2[i+1]) TMA2slope[i] = 1;
   if(TMA2[i]< TMA2[i+1]) TMA2slope[i] =-1;
   if(Close[i] > TMA2bandUp[i]) trend2[i] = 1;
   if(Close[i] < TMA2bandDn[i]) trend2[i] =-1;
   if(TMA2slope[i]==-1) PlotPoint(i,TMA2up,TMA2dn,TMA2);  //}

   if(TMA1bandUp[i]>TMA2bandUp[i]){MA2[i]=TMA1bandUp[i];MA1[i]=TMA2bandUp[i];MA4[i]=EMPTY_VALUE;MA3[i]=EMPTY_VALUE;}
   if(TMA1bandDn[i]<TMA2bandDn[i]){MA4[i]=TMA1bandDn[i];MA3[i]=TMA2bandDn[i];MA2[i]=EMPTY_VALUE;MA1[i]=EMPTY_VALUE;}

   ARRDN[i]=EMPTY_VALUE;  if (MA1[i+ARROWBAR]!=EMPTY_VALUE && MA1[i+1+ARROWBAR]==EMPTY_VALUE)  ARRDN[i] = setArrow("sell",TMA1bandUp,i); 
   ARRUP[i]=EMPTY_VALUE;  if (MA3[i+ARROWBAR]!=EMPTY_VALUE && MA3[i+1+ARROWBAR]==EMPTY_VALUE)  ARRUP[i] = setArrow("buy",TMA1bandDn,i);} 

   if (AlertsMessage || AlertsEmail || AlertsMobile || AlertsSound) {  ///
     string messageUP = WindowExpertName()+" >> "+_Symbol+", "+sTFR+" >> Arrow UP >> BUY";   ///above
     string messageDN = WindowExpertName()+" << "+_Symbol+", "+sTFR+" << Arrow DN << SELL";  ///below
     if (TimeBar!=Time[0] &&  ARRUP[SIGNALBAR]

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

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

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

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

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

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

Стоимость полного кода
1 561,10₽ ≈ $19.08