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

CustomCandle_TRO_MODIFIED_VERSION

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

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

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

О программе

Индикатор CustomCandle_TRO_MODIFIED_VERSION отображает на графике MetaTrader 4 свечные паттерны, рассчитанные по пользовательскому таймфрейму. При обнаружении новой свечи заданного периода он создаёт графические объекты (прямоугольники для тел свечей и трендовые линии для теней) и обновляет их по мере движения цены в рамках текущей свечи.

Для ежедневного таймфрейма (1440) индикатор поддерживает пользовательское время открытия сессии, задаваемое строковым параметром, с автоматической корректировкой на выходные дни. Для остальных таймфреймов новая свеча определяется по стандартному смене бара.

Цвета тел и теней свечей, толщина объектов и режим отображения настраиваются через параметры. Индикатор не использует торговые API и не совершает сделок. Он работает только в окне графика и ограничивает использование таймфреймов, превышающих D1, и периодов, превышающих H4.

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

НастройкаОписание
noteTimeNY noteTimeNY — Строковый информационный параметр с примечанием о времени сессии NY.
noteTimeAU noteTimeAU — Строковый информационный параметр с примечанием о времени сессии AU.
05:00 am pst = 14:00 server time (myOpenHHMM) myOpenHHMM — Строковый параметр пользовательского времени открытия сессии в формате ЧЧ:ММ серверного времени (например, 14:00).
TimeFrame TimeFrame — Целочисленный таймфрейм в минутах, по которому определяются пользовательские свечи (по умолчанию 60).
UpCandle UpCandle — Цвет бычьих (растущих) свечных тел.
DnCandle DnCandle — Цвет медвежьих (нисходящих) свечных тел.
DojiColor DojiColor — Цвет свечных тел при совпадении цены открытия и закрытия (дожи).
Width Width — Толщина графических объектов свечей и теней в пикселях.
BGCandle BGCandle — Переключатель отрисовки фона свечных тел (true/false).
Получить полный код

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

#property indicator_chart_window

extern string noteTimeNY = " 14:00 server time = 05:00 am pst" ; 
extern string noteTimeAU = " 23:00 server time = 14:00 am pst" ; 

extern string myOpenHHMM = "14:00"; // 05:00 am pst = 14:00 server time 

extern int   TimeFrame=60;
extern color UpCandle=DarkGreen;
extern color DnCandle=MistyRose;
extern color DojiColor=Blue;
extern int   Width=1;
extern bool  BGCandle=True;

int      Nbar,OpenBar,timer,i,timerTF,name,MidBar;
double   HighPrevBar,LowPrevBar,ClosePrevBar;
double   OpenNewBar,HighNewBar,LowNewBar,CloseNewBar;
double   HighCurBar,LowCurBar,CloseCurBar;
double   priceNewSH,priceNewSL,pricePrevSH,pricePrevSL,priceCurSH,priceCurSL;
string   nameNewCandle,namePrevCandle;
string   nameNewShadowH,nameNewShadowL,namePrevShadowH,namePrevShadowL;
string   NameBar, NameHigh, NameLow;
datetime TimeOpenNewBar,TimeCloseNewBar,TimeClosePrevBar;
datetime timeNewShadow,timePrevShadow;
bool     NewBar;

string     yymmddms  ;
int cd ;
datetime   r ; 

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

int deinit(){
for(int DelOBJ=1; DelOBJ<=name; DelOBJ++){
ObjectDelete(NameBar+DelOBJ);
ObjectDelete(NameHigh+DelOBJ);
ObjectDelete(NameLow+DelOBJ);}

return(0);}

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

if(TimeFrame>1440)
{Comment("\n"," TimeFrame more than D1 is not supporting!!!");return(0);}
if(Period()>240)
{Comment("\n"," Period more than H4 is not supporting!!!");return(0);}
if(TimeFrame<=Period()||MathMod(TimeFrame,Period())!=0)
{Comment("\n"," TimeFrame should be more or divisible by M",Period());return(0);}
i=Bars-IndicatorCounted();
while(i>0){i--;
while(i>=0) if(Time[i]==TimeOpenNewBar||BarNew(i,TimeFrame)==false)i--;
             else{NewBar=true; name++; break;}
if(i<0) i=0;
if(NewBar==true){

  OpenBar=iBarShift(0,0,TimeOpenNewBar,false);
  TimeClosePrevBar=Time[i+1];
  ClosePrevBar=Close[i+1];
  HighPrevBar=High[Highest(0,0,MODE_HIGH,OpenBar-i,i+1)];
  LowPrevBar=Low[Lowest(0,0,MODE_LOW,OpenBar-i,i+1)];
  namePrevCandle=NameBar+(name-1);
  MidBar=OpenBar-MathRound((OpenBar-i)/2);
  timePrevShadow=Time[MidBar];
  pricePrevSH=PriceShadow(OpenNewBar,ClosePrevBar,0);
  pricePrevSL=PriceShadow(OpenNewBar,ClosePrevBar,1);
  namePrevShadowH=NameHigh+(name-1);
  namePrevShadowL=NameLow+(name-1);

if(ObjectFind(namePrevCandle)==0){
  ObjectMove(namePrevCandle,1,TimeClosePrevBar,ClosePrevBar);
  PropBar(OpenNewBar,ClosePrevBar,namePrevCandle);
  if(OpenBar==i+1) ObjectSet(namePrevCandle,OBJPROP_WIDTH, Width*3);}
if(ObjectFind(namePrevShadowH)==0){
  if(pricePrevSH==HighPrevBar) ObjectDelete(namePrevShadowH);
   else{ObjectMove(namePrevShadowH,0,timePrevShadow,pricePrevSH);
    ObjectMove(namePrevShadowH,1,timePrevShadow,HighPrevBar);
    ColorShadow(OpenNewBar,ClosePrevBar,namePrevShadowH);
    ObjectSetText(namePrevShadowH,"High="+DoubleToStr(HighPrevBar,Digits),7,"Tahoma");}}
if(ObjectFind(namePrevShadowL)==0){
  if(pricePrevSL==LowPrevBar) ObjectDelete(namePrevShadowL);
   else{ObjectMove(namePrevShadowL,0,timePrevShadow,pricePrevSL);
    ObjectMove(namePrevShadowL,1,timePrevShadow,LowPrevBar);
    ColorShadow(OpenNewBar,ClosePrevBar,namePrevShadowL);
    ObjectSetText(namePrevShadowL,"Low="+DoubleToStr(LowPrevBar,Digits),7,

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

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

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

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

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

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

Стоимость полного кода
726,30₽ ≈ $8.88