Price Data Components
0
Views
0
Downloads
0
Favorites
colorzerolagjccxtrend_x10
//+------------------------------------------------------------------+
//| ColorZerolagJCCXTrend_x10.mq5 |
//| Copyright © 2015, Nikolay Kositsin |
//| Khabarovsk, farria@mail.redcom.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Nikolay Kositsin"
#property link "farria@mail.redcom.ru"
#property description "Èíäèêàòîð îòîáðàæàåò íàïðàâëåíèå äâèæåíèÿ îñöèëëÿòîðà ColorZerolagJCCX ñ ðàçíûõ òàéìôðåéìîâ"
//---- íîìåð âåðñèè èíäèêàòîðà
#property version "1.00"
//---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
#property indicator_chart_window
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôåðîâ 0
#property indicator_buffers 0
//---- íå èñïîëüçîâàíî íè îäíîãî ãðàôè÷åñêîãî ïîñòðîåíèÿ
#property indicator_plots 0
//+-----------------------------------+
//| Îáúÿâëåíèå êîíñòàíò |
//+-----------------------------------+
#define RESET 0 // êîíñòàíòà äëÿ âîçâðàòà òåðìèíàëó êîìàíäû íà ïåðåñ÷åò èíäèêàòîðà
#define INDTOTAL 10 // êîíñòàíòà äëÿ êîëè÷åñòâà îòîáðàæàåìûõ èíäèêàòîðîâ
//+----------------------------------------------+
//| Îïèñàíèå ïåðå÷èñëåíèÿ type_font |
//| Îïèñàíèå êëàññà CFontName |
//+----------------------------------------------+
#include <GetFontName.mqh>
//+----------------------------------------------+
//| Îáúÿâëåíèå ïåðå÷èñëåíèé |
//+----------------------------------------------+
enum Applied_price_ // òèï êîíñòàíòû
{
PRICE_CLOSE_ = 1, // Close
PRICE_OPEN_, // Open
PRICE_HIGH_, // High
PRICE_LOW_, // Low
PRICE_MEDIAN_, // Median Price (HL/2)
PRICE_TYPICAL_, // Typical Price (HLC/3)
PRICE_WEIGHTED_, // Weighted Close (HLCC/4)
PRICE_SIMPLE, // Simple Price (OC/2)
PRICE_QUARTER_, // Quarted Price (HLOC/4)
PRICE_TRENDFOLLOW0_, // TrendFollow_1 Price
PRICE_TRENDFOLLOW1_, // TrendFollow_2 Price
PRICE_DEMARK_ // Demark Price
};
//+----------------------------------------------+
//| Âõîäíûå ïàðàìåòðû èíäèêàòîðà |
//+----------------------------------------------+
input ENUM_TIMEFRAMES TimeFrame0=PERIOD_H1; // Ïåðèîä ãðàôèêà 1
input ENUM_TIMEFRAMES TimeFrame1=PERIOD_H2; // Ïåðèîä ãðàôèêà 2
input ENUM_TIMEFRAMES TimeFrame2=PERIOD_H3; // Ïåðèîä ãðàôèêà 3
input ENUM_TIMEFRAMES TimeFrame3=PERIOD_H4; // Ïåðèîä ãðàôèêà 4
input ENUM_TIMEFRAMES TimeFrame4=PERIOD_H6; // Ïåðèîä ãðàôèêà 5
input ENUM_TIMEFRAMES TimeFrame5=PERIOD_H8; // Ïåðèîä ãðàôèêà 6
input ENUM_TIMEFRAMES TimeFrame6=PERIOD_H12; // Ïåðèîä ãðàôèêà 7
input ENUM_TIMEFRAMES TimeFrame7=PERIOD_D1; // Ïåðèîä ãðàôèêà 8
input ENUM_TIMEFRAMES TimeFrame8=PERIOD_W1; // Ïåðèîä ãðàôèêà 9
input ENUM_TIMEFRAMES TimeFrame9=PERIOD_MN1; // Ïåðèîä ãðàôèêà 10
//---- ïàðàìåòðû ColorZerolagJCCX
input uint smoothing=15;
input uint Smooth = 8; // Ãëóáèíà JJMA óñðåäíåíèÿ
input int JPhase = 100; // Ïàðàìåòð JJMA óñðåäíåíèÿ
//---- èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100,
//---- âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà;
input ENUM_APPLIED_PRICE IPC=PRICE_CLOSE; // Öåíîâàÿ êîíñòàíòà
//----
input double Factor1=0.05;
input uint JCCX_period1=8;
//----
input double Factor2=0.10;
input uint JCCX_period2=21;
//----
input double Factor3=0.16;
input uint JCCX_period3=34;
//----
input double Factor4=0.26;
input int JCCX_period4=55;
//----
input double Factor5=0.43;
input uint JCCX_period5=89;
//----
input color CpColor=clrDarkOrchid; // Öâåò íàçâàíèÿ èíäèêàòîðà
input color UpColor=clrDodgerBlue; // Öâåò ïåðåêóïëåííîñòè èíäèêàòîðà
input color DnColor=clrMagenta; // Öâåò ïåðåïðîäàííîñòè èíäèêàòîðà
input color ZrColor=clrGray; // Öâåò áåç èçìåíåíèÿ
input int FontSize=11; // Ðàçìåð øðèôòà
input type_font FontType=Font14; // Òèï øðèôòà
input ENUM_BASE_CORNER WhatCorner=CORNER_LEFT_LOWER; // Óãîë ðàñïîëîæåíèÿ
input uint Y_=20; // Ðàñïîëîæåíèå ïî âåðòèêàëè
input uint X_=5; // Ðàñïîëîæåíèå ïî ãîðèçîíòàëè
//+----------------------------------------------+
string sFontType;
int min_rates_total;
uint xshift,shift[11];
string sPer[10],sPerA[10],sPerB[10],Cap;
ENUM_TIMEFRAMES ePer[10];
//+------------------------------------------------------------------+
//| Ïîëó÷åíèå òàéìôðåéìà â âèäå ñòðîêè |
//+------------------------------------------------------------------+
string GetStringTimeframe(ENUM_TIMEFRAMES timeframe)
{return(StringSubstr(EnumToString(timeframe),7,-1));}
//+------------------------------------------------------------------+
//| Êëàññ ìàññèâîâ |
//+------------------------------------------------------------------+
class CIndArrow
{
//----
public:
double m_UpInd[1];
double m_DnInd[1];
int m_Handle;
ENUM_TIMEFRAMES m_TimeFrame;
};
//---- îáúÿâëåíèå ìàññèâîâ, êîòîðûå áóäóò â
//---- äàëüíåéøåì èñïîëüçîâàíû äëÿ ïîëó÷åíèÿ èíäèêàòîðíûõ çíà÷åíèé
CIndArrow Ind[INDTOTAL];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//----
ePer[0]=TimeFrame0;
ePer[1]=TimeFrame1;
ePer[2]=TimeFrame2;
ePer[3]=TimeFrame3;
ePer[4]=TimeFrame4;
ePer[5]=TimeFrame5;
ePer[6]=TimeFrame6;
ePer[7]=TimeFrame7;
ePer[8]=TimeFrame8;
ePer[9]=TimeFrame9;
for(int poz=0; poz<INDTOTAL; poz++) Ind[poz].m_TimeFrame=ePer[poz];
//---- ïîëó÷åíèå õåíäëîâ èíäèêàòîðîâ
for(int poz=0; poz<INDTOTAL; poz++)
{
Ind[poz].m_Handle=iCustom(Symbol(),Ind[poz].m_TimeFrame,"ColorZerolagJCCX",smoothing,Smooth,JPhase,IPC,Factor1,JCCX_period1,Factor2,JCCX_period2,
Factor3,JCCX_period3,Factor4,JCCX_period4,Factor5,JCCX_period5);
if(Ind[poz].m_Handle==INVALID_HANDLE)
{
Print("OnInit()(",poz,"): Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà ColorZerolagJCCX");
return(false);
}
}
//----
CFontName FONT;
sFontType=FONT.GetFontName(FontType);
Deinit();
//---- ðàñ÷åò ñòàðòîâîãî áàðà
min_rates_total=int(3*32)+2;
//----
xshift=int(X_+8.3*FontSize);
Cap="ColorZerolagJCCXTrend_x10";
//----
switch(WhatCorner)
{
case CORNER_RIGHT_LOWER:
{
for(int poz=0; poz<=INDTOTAL; poz++) shift[10-poz]=Y_+22*poz;
break;
}
case CORNER_LEFT_LOWER:
{
for(int poz=0; poz<=INDTOTAL; poz++) shift[10-poz]=Y_+22*poz;
break;
}
default:
{
for(int poz=0; poz<=INDTOTAL; poz++) shift[poz]=Y_+22*poz;
}
}
//---
for(int poz=0; poz<INDTOTAL; poz++)
{
sPer[poz]=GetStringTimeframe(ePer[poz]);
sPerA[poz]=sPer[poz]+"Stat+";
sPerB[poz]=sPer[poz]+"Stat_";
}
//--- çàâåðøåíèå èíèöèàëèçàöèè
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//----
Deinit();
//----
ChartRedraw(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void Deinit()
{
//----
for(int poz=0; poz<INDTOTAL; poz++)
{
ObjectDelete(0,sPerA[poz]);
ObjectDelete(0,sPerB[poz]);
}
ObjectDelete(0,Cap);
}
//+------------------------------------------------------------------+
//| Ñîçäàíèå òåêñòîâîé ìåòêè |
//+------------------------------------------------------------------+
void CreateTLabel(long chart_id, // èäåíòèôèêàòîð ãðàôèêà
string name, // èìÿ îáúåêòà
int nwin, // èíäåêñ îêíà
ENUM_BASE_CORNER corner, // ïîëîæåíèå óãëà ïðèâÿçêè
ENUM_ANCHOR_POINT point, // ïîëîæåíèå òî÷êè ïðèâÿçêè
int X, // äèñòàíöèÿ â ïèêñåëÿõ ïî îñè X îò óãëà ïðèâÿçêè
int Y, // äèñòàíöèÿ â ïèêñåëÿõ ïî îñè Y îò óãëà ïðèâÿçêè
string text, // òåêñò
color Color, // öâåò òåêñòà
string Font, // øðèôò òåêñòà
int Size) // ðàçìåð øðèôòà
{
//----
ObjectCreate(chart_id,name,OBJ_LABEL,0,0,0);
ObjectSetInteger(chart_id,name,OBJPROP_CORNER,corner);
ObjectSetInteger(chart_id,name,OBJPROP_ANCHOR,point);
ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,X);
ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,Y);
ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
ObjectSetString(chart_id,name,OBJPROP_FONT,Font);
ObjectSetInteger(chart_id,name,OBJPROP_FONTSIZE,Size);
ObjectSetInteger(chart_id,name,OBJPROP_BACK,false);
}
//+------------------------------------------------------------------+
//| Ïåðåóñòàíîâêà òåêñòîâîé ìåòêè |
//+------------------------------------------------------------------+
void SetTLabel(long chart_id, // èäåíòèôèêàòîð ãðàôèêà
string name, // èìÿ îáúåêòà
int nwin, // èíäåêñ îêíà
ENUM_BASE_CORNER corner, // ïîëîæåíèå óãëà ïðèâÿçêè
ENUM_ANCHOR_POINT point, // ïîëîæåíèå òî÷êè ïðèâÿçêè
int X, // äèñòàíöèÿ â ïèêñåëÿõ ïî îñè X îò óãëà ïðèâÿçêè
int Y, // äèñòàíöèÿ â ïèêñåëÿõ ïî îñè Y îò óãëà ïðèâÿçêè
string text, // òåêñò
color Color, // öâåò òåêñòà
string Font, // øðèôò òåêñòà
int Size) // ðàçìåð øðèôòà
{
//----
if(ObjectFind(chart_id,name)==-1) CreateTLabel(chart_id,name,nwin,corner,point,X,Y,text,Color,Font,Size);
else
{
ObjectSetString(chart_id,name,OBJPROP_TEXT,text);
ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,X);
ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,Y);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
}
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
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[])
{
//--- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷åòà
for(int poz=0; poz<INDTOTAL; poz++) if(Bars(Symbol(),ePer[poz])<min_rates_total) return(RESET);
//---- êîïèðóåì âíîâü ïîÿâèâøèåñÿ äàííûå â ìàññèâû
for(int poz=0; poz<INDTOTAL; poz++)
{
if(CopyBuffer(Ind[poz].m_Handle,0,1,1,Ind[poz].m_UpInd)<=0) return(RESET);
if(CopyBuffer(Ind[poz].m_Handle,1,1,1,Ind[poz].m_DnInd)<=0) return(RESET);
}
//----
color ColorGain[INDTOTAL];
ArrayInitialize(ColorGain,ZrColor);
//---- êîïèðóåì âíîâü ïîÿâèâøèåñÿ äàííûå â ìàññèâû
for(int poz=0; poz<INDTOTAL; poz++)
{
if(Ind[poz].m_UpInd[0] > Ind[poz].m_DnInd[0]) ColorGain[poz]=UpColor;
if(Ind[poz].m_UpInd[0] < Ind[poz].m_DnInd[0]) ColorGain[poz]=DnColor;
}
//----
for(int poz=0; poz<INDTOTAL; poz++)
{
SetTLabel(0,sPerA[poz],0,WhatCorner,ENUM_ANCHOR_POINT(2*WhatCorner),X_,shift[poz+1],sPer[poz]+": ",ColorGain[poz],sFontType,FontSize);
SetTLabel(0,sPerB[poz],0,WhatCorner,ENUM_ANCHOR_POINT(2*WhatCorner),xshift,shift[poz+1],"n",ColorGain[poz],"Wingdings",FontSize);
}
SetTLabel(0,Cap,0,WhatCorner,ENUM_ANCHOR_POINT(2*WhatCorner),X_,shift[0],Cap,CpColor,sFontType,FontSize);
//----
ChartRedraw(0);
return(rates_total);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---