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

Tipu Renko

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

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

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

О программе

Tipu Renko — это пользовательский индикатор для MetaTrader 4, реализующий отображение Renko-графиков. Индикатор строит кирпичи на основе изменения цены на заданное количество пунктов, позволяя визуализировать направление тренда без учёта временных интервалов.

Индикатор поддерживает два режима формирования кирпичей: по ценам закрытия или по диапазону высокого и низкого. Визуальное оформление настраивается через параметры цвета, стиля и толщины линий, а также через возможность заливки кирпичей.

Функциональность включает отрисовку прямоугольников в качестве кирпичей и стрелок при смене направления тренда. Индикатор отслеживает количество последовательных кирпичей в каждом направлении и предоставляет систему уведомлений — push-уведомления, звуковые и email-оповещения — при появлении сигналов на покупку или продажу.

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

НастройкаОписание
Box Mode (eRenkoMode) Режим Renko — Определяет способ формирования кирпичей: по ценам закрытия или по диапазону высокого и низкого.
Renko Mark (eRenkoMark) Маркировка Renko — Задаёт тип визуальной маркировки: без маркировки, прямоугольники-кирпичи или стрелки смены тренда.
Reko Size (iRenkoSize) Размер кирпича — Размер кирпича в пунктах, определяющий минимальное изменение цены для построения нового кирпича.
Line Style (eRenkoStyle) Стиль линии — Стиль линий, используемых для отображения кирпичей.
Line Width (iRenkoWidth) Толщина линии — Толщина линий кирпичей в пунктах.
Up Color (cUpCandle) Цвет восходящего — Цвет восходящих (бычьих) кирпичей.
Down Color (cDwnCandle) Цвет нисходящего — Цвет нисходящих (медвежьих) кирпичей.
Fill Candles (bFill) Заливка свечей — Включает или отключает заливку прямоугольников кирпичей соответствующим цветом.
Alert Mobile (bAlertM) Уведомление на мобильное — Включает или отключает отправку push-уведомлений на мобильное устройство при появлении сигналов.
Alert Onscreen (bAlertS) Уведомление на экран — Включает или отключает звуковые уведомления на графике при появлении сигналов.
Alert Email (bAlertE) Уведомление по email — Включает или отключает отправку email-уведомлений при появлении сигналов на покупку или продажу.
Получить полный код

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

#property version   "1.00"
#property strict
#property indicator_chart_window

#define PipsPoint Get_PipsPoint()

enum ENUM_RenkoMode
  {
   rClose = 0,       //Close
   rHighLow = 1,     //High/Low
  };

enum ENUM_RenkoMark
  {
   None=0,
   Brick=1,
   Arrows=2,
  };

input ENUM_RenkoMode eRenkoMode        =  0;              //Box Mode
input ENUM_RenkoMark eRenkoMark        =  1;              //Renko Mark
input int            iRenkoSize        =  20;             //Reko Size
input ENUM_LINE_STYLE eRenkoStyle      =  0;              //Line Style
input int            iRenkoWidth       =  1;              //Line Width
input color          cUpCandle         =  C'31,159,192';  //Up Color
input color          cDwnCandle        =  C'230,77,69';   //Down Color
input bool           bFill             =  true;           //Fill Candles
input bool           bAlertM           =  false;          //Alert Mobile
input bool           bAlertS           =  true;           //Alert Onscreen
input bool           bAlertE           =  false;          //Alert Email

string short_name="tp_Renko";
string indicator_name="Tipu Renko";
int iLastTrend;
double dLowR=0,dHighR=0,dOpenR=0,dCloseR=0;
datetime dtPrevTime=0;
static datetime prevTime;
double dBuyCounter=0.0,dSellCounter=0.0;

double dTrendBuffer[],dSignalBuffer[],dBuyCountBuffer[],dSellCountBuffer[];

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

void OnDeinit(const int reason)
  {

   DeleteBricks();
  }

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[])
  {
      // код доступен только после оплаты
   }

   int limit;
   string sMsg,sSubject;
   bool bBuy=false,bSell=false;

   ArraySetAsSeries(dTrendBuffer,true);
   ArraySetAsSeries(dSignalBuffer,true);
   ArraySetAsSeries(dBuyCountBuffer,true);
   ArraySetAsSeries(dSellCountBuffer,true);

   if(prev_calculated < 0)  return(0);

   if(prev_calculated>0) limit=rates_total-prev_calculated+1; //non-repainting should give -2 if prev_cal is 0, meaning two candles ahead
   else
     {
      limit=rates_total-1;
      dLowR  = low[limit];
      dOpenR = open[limit];
      dtPrevTime=time[limit];
     }

   for(int i=limit-1; i>=0; i--)
     {
      double dcheck=iRenkoSize*PipsPoint;
      switch(eRenkoMode)
        {
         case 0:
            bBuy=close[i]>=dOpenR+dcheck;
            bSell=close[i]<=dOpenR-dcheck;
            break;

         case 1:
            bBuy=high[i]>=dOpenR+dcheck;
            bSell=low[i]<=dOpenR-dcheck;
            break;
        }

      if(bBuy)
        {
         dCloseR=NormalizeDouble(dOpenR,_Digits)+dcheck;
         if(ObjectFind(0,short_name+(string)time[i])<0 && eRenkoMark==1)
            RectangleCreate(0,short_name+(string)time[i],0,dtPrevTime,dOpenR,time[i],dCloseR,cUpCandle,eRenkoStyle,iRenkoWidth,bFill,false,false,false,0);
         dOpenR=dCloseR;
         dtPrevTime=time[i];
         dSellCounter=0; dSellCountBuffer[i]=dSellCounter;
         if(dTrendBuffer[i+1]!=OP_BUY)
           {
            dSignalBuffer[i]=OP_BUY;
            dTrendBuffer[i]=dSignalBuffer[i];
            dBuyCounter=1;  dBuyCountBuffer[i]=dBuyCounter;
            if(ObjectFind(0,short_name+(string)time[i])<0 && eRenkoMark==2)
               ArrowCreate(0,short_name+(string)time[i],0,time[i],low[i],233,ANCHOR_TOP,cUpCandle,eRenkoStyle,iRenkoWidth,false,false,false);
           }
         else
           {dBuyCounter++;     dBuyCountBuffer[i]=dBuyCounter;}
        }
      if(bSell)
        {
         dCloseR=NormalizeDouble(dOpenR,_Digits)-dcheck;
         if(ObjectFind(0,short_name+(string)time[i])<0 && eRenkoMark==1)
            RectangleCreate(0,short_name+(string)time[i],0,dtPrevTime,dOpenR,time[i],dCloseR,cDwnCandle,eRenkoStyle,iRenkoWidth,bFill,false,false,false,0);
         dOpenR=dCloseR;
         dtPrevTime=time[i];
         dBuyCounter=0;  dBuyCountBuffer[i]=dBuyCounter;
         if(dTrendBuffer[i+1]!=OP_SELL)
           {
            dSignalBuffer[i]=OP_SELL;
            dTrendBuffer[i]=dSignalBuffer[i];
            dSellCounter=1; dSellCountBuffer[i]=dSellCounter;
            if(ObjectFind(0,short_name+(string)time[i])<0 && eRenkoMark==2)
               ArrowCreate(0,short_name+(string)time[i],0,time[i],high[i],234,ANCHOR_BOTTOM,cDwnCandle,eRenkoStyle,iRenkoWidth,false,false,false);
           }
         else
           {dSellCounter++;   dSellCountBuffer[i]=dSellCounter;}
        }

      if(dTrendBuffer[i]!=OP_BUY && dTrendBuffer[i]!=OP_SELL)
         dTrendBuffer[i]=dTrendBuffer[i+1];
      if(dBuyCountBuffer[i] == EMPTY_VALUE)
         dBuyCountBuffer[i] = dBuyCountBuffer[i+1];
      if(dSellCountBuffer[i] == EMPTY_VALUE)
         dSellCountBuffer[i] = dSellCountBuffer[i+1];
     }

   if(dSignalBuffer[0]==OP_BUY)
     {
      sMsg=indicator_name+" "+_Symbol+"\n "+"Buy Alert: "+
           "\n "+"Time: "+TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTES);
      sSubject=indicator_name+" "+_Symbol+" "+"Buy Alert";
      SendAlert(bAlertM,bAlertS,bAlertE,sMsg,sSubject);
      dTrendBuffer[0]=OP_BUY;
     }
   if(dSignalB

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

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

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

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

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

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

Стоимость полного кода
799,40₽ ≈ $9.77