0
Views
0
Downloads
0
Favorites
ColorJFatl_Cloud_Digit
//+---------------------------------------------------------------------+
//| ColorJFatl_Cloud_Digit.mq5 |
//| Copyright © 2016, Nikolay Kositsin |
//| Khabarovsk, farria@mail.redcom.ru |
//+---------------------------------------------------------------------+
//| Äëÿ ðàáîòû èíäèêàòîðà ñëåäóåò ïîëîæèòü ôàéë SmoothAlgorithms.mqh |
//| â ïàïêó (äèðåêòîðèþ): êàòàëîã_äàííûõ_òåðìèíàëà\\MQL5\Include |
//+---------------------------------------------------------------------+
#property copyright "Copyright © 2016, Nikolay Kositsin"
#property link "farria@mail.redcom.ru"
#property version "1.00"
//---- îòðèñîâêà èíäèêàòîðà â îñíîâíîì îêíå
#property indicator_chart_window
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôåðîâ 6
#property indicator_buffers 6
//---- èñïîëüçîâàíî âñåãî òðè ãðàôè÷åñêèõ ïîñòðîåíèÿ
#property indicator_plots 3
//+------------------------------------------------+
//| Ïàðàìåòðû îòðèñîâêè ôîíà |
//+------------------------------------------------+
//---- îòðèñîâêà ôîíà â îáëà÷íîì âèäå
#property indicator_type1 DRAW_FILLING
#property indicator_type2 DRAW_FILLING
//---- âûáîð öâåòîâ ôîíà
#property indicator_color1 clrPaleTurquoise
#property indicator_color2 clrThistle
//---- îòîáðàæåíèå ìåòîê
#property indicator_label1 "Upper Cloud"
#property indicator_label2 "Lower Cloud"
//+------------------------------------------------+
//| Ïàðàìåòðû îòðèñîâêè èíäèêàòîðà |
//+------------------------------------------------+
//---- îòðèñîâêà èíäèêàòîðà â âèäå ìíîãîöâåòíîé ëèíèè
#property indicator_type3 DRAW_COLOR_LINE
//---- â êà÷åñòâå öâåòîâ òðåõöâåòíîé ëèíèè èñïîëüçîâàíû
#property indicator_color3 clrMagenta,clrGray,clrGold
//---- ëèíèÿ èíäèêàòîðà - íåïðåðûâíàÿ êðèâàÿ
#property indicator_style3 STYLE_SOLID
//---- òîëùèíà ëèíèè èíäèêàòîðà ðàâíà 5
#property indicator_width3 5
//---- îòîáðàæåíèå ìåòêè èíäèêàòîðà
#property indicator_label3 "JFATL"
//+------------------------------------------------+
//| îáúÿâëåíèå ïåðå÷èñëåíèé |
//+------------------------------------------------+
enum Applied_price_ //Òèï êîíñòàíòû
{
PRICE_CLOSE_ = 1, //PRICE_CLOSE
PRICE_OPEN_, //PRICE_OPEN
PRICE_HIGH_, //PRICE_HIGH
PRICE_LOW_, //PRICE_LOW
PRICE_MEDIAN_, //PRICE_MEDIAN
PRICE_TYPICAL_, //PRICE_TYPICAL
PRICE_WEIGHTED_, //PRICE_WEIGHTED
PRICE_SIMPL_, //PRICE_SIMPL_
PRICE_QUARTER_, //PRICE_QUARTER_
PRICE_TRENDFOLLOW0_, //TrendFollow_1 Price
PRICE_TRENDFOLLOW1_, //TrendFollow_2 Price
PRICE_DEMARK_ //Demark Price
};
//+------------------------------------------------+
//| ÂÕÎÄÍÛÅ ÏÀÐÀÌÅÒÐÛ ÈÍÄÈÊÀÒÎÐÀ |
//+------------------------------------------------+
input string SirName="ColorJFatl_Cloud_Digit"; //Ïåðâàÿ ÷àñòü èìåíè ãðàôè÷åñêèõ îáúåêòîâ
input int JLength=5; // ãëóáèíà JMA ñãëàæèâàíèÿ
input int JPhase=-100; // ïàðàìåòð JMA ñãëàæèâàíèÿ,
//---- èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100,
//---- âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà;
input Applied_price_ IPC=PRICE_CLOSE_;//öåíîâàÿ êîíñòàíòà
input int FATLShift=0; // ñäâèã Ôàòëà ïî ãîðèçîíòàëè â áàðàõ
input int PriceFATLShift=0; // cäâèã Ôàòëà ïî âåðòèêàëè â ïóíêòàõ
input uint Dev=20; // Äåâèàöèÿ çàëèâêè ôîíîì
input uint Digit=2; //êîëè÷åñòâî ðàçðÿäîâ îêðóãëåíèÿ
input bool ShowPrice=true; //ïîêàçûâàòü öåíîâûå ìåòêè
//---- öâåòà öåíîâûõ ìåòîê
input color Price_color=clrGray;
//+------------------------------------------------+
//---- îáúÿâëåíèå è èíèöèàëèçàöèÿ ïåðåìåííîé äëÿ õðàíåíèÿ êîëè÷åñòâà ðàñ÷¸òíûõ áàðîâ
int FATLPeriod=39;
//---- îáúÿâëåíèå äèíàìè÷åñêèõ ìàññèâîâ, êîòîðûå áóäóò â äàëüíåéøåì èñïîëüçîâàíû â êà÷åñòâå èíäèêàòîðíûõ áóôåðîâ
double LineBuffer[];
double ColorLineBuffer[];
double UpCloudBuffer1[],UpCloudBuffer2[];
double DnCloudBuffer1[],DnCloudBuffer2[];
//---- Îáúÿâëåíèå öåëûõ ïåðåìåííûõ íà÷àëà îòñ÷åòà äàííûõ
int min_rates_total,fstart,FATLSize;
double dPriceFATLShift;
double PointPow10;
//---- Îáúÿâëåíèå ñòðèíãîâ äëÿ òåêñòîâûõ ìåòîê
string Price_name;
//+------------------------------------------------+
//| Èíèöèàëèçàöèÿ êîýôôèöèåíòîâ öèôðîâîãî ôèëüòðà |
//+------------------------------------------------+
double dFATLTable[]=
{
+0.4360409450, +0.3658689069, +0.2460452079, +0.1104506886,
-0.0054034585, -0.0760367731, -0.0933058722, -0.0670110374,
-0.0190795053, +0.0259609206, +0.0502044896, +0.0477818607,
+0.0249252327, -0.0047706151, -0.0272432537, -0.0338917071,
-0.0244141482, -0.0055774838, +0.0128149838, +0.0226522218,
+0.0208778257, +0.0100299086, -0.0036771622, -0.0136744850,
-0.0160483392, -0.0108597376, -0.0016060704, +0.0069480557,
+0.0110573605, +0.0095711419, +0.0040444064, -0.0023824623,
-0.0067093714, -0.0072003400, -0.0047717710, +0.0005541115,
+0.0007860160, +0.0130129076, +0.0040364019
};
//+------------------------------------------------------------------+
// Îïèñàíèå ôóíêöèè iPriceSeries() |
// Îïèñàíèå ôóíêöèè iPriceSeriesAlert() |
// Îïèñàíèå êëàññà CJJMA |
//+------------------------------------------------------------------+
#include <SmoothAlgorithms.mqh>
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
void OnInit()
{
//---- èíèöèàëèçàöèÿ ïåðåìåííûõ
FATLSize=ArraySize(dFATLTable);
min_rates_total=FATLSize+30;
PointPow10=_Point*MathPow(10,Digit);
//---- Èíèöèàëèçàöèÿ ñòðèíãîâ
Price_name=SirName+"Price";
//---- èíèöèàëèçàöèè ïåðåìåííîé äëÿ êîðîòêîãî èìåíè èíäèêàòîðà
string shortname;
StringConcatenate(shortname,"JFatl_Cloud_Digit(",JLength," ,",JPhase,")");
//--- ñîçäàíèå èìåíè äëÿ îòîáðàæåíèÿ â îòäåëüíîì ïîäîêíå è âî âñïëûâàþùåé ïîäñêàçêå
IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//--- îïðåäåëåíèå òî÷íîñòè îòîáðàæåíèÿ çíà÷åíèé èíäèêàòîðà
IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//---- Èíèöèàëèçàöèÿ ñäâèãà ïî âåðòèêàëè
dPriceFATLShift=_Point*PriceFATLShift;
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà â èíäèêàòîðíûé áóôåð
SetIndexBuffer(0,UpCloudBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,UpCloudBuffer2,INDICATOR_DATA);
SetIndexBuffer(2,DnCloudBuffer1,INDICATOR_DATA);
SetIndexBuffer(3,DnCloudBuffer2,INDICATOR_DATA);
SetIndexBuffer(4,LineBuffer,INDICATOR_DATA);
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà â öâåòîâîé, èíäåêñíûé áóôåð
SetIndexBuffer(5,ColorLineBuffer,INDICATOR_COLOR_INDEX);
//---- îñóùåñòâëåíèå ñäâèãà èíäèêàòîðà 1 ïî ãîðèçîíòàëè
PlotIndexSetInteger(0,PLOT_SHIFT,FATLShift);
//---- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷åòà îòðèñîâêè èíäèêàòîðà
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
//---- îñóùåñòâëåíèå ñäâèãà èíäèêàòîðà 2 ïî ãîðèçîíòàëè
PlotIndexSetInteger(1,PLOT_SHIFT,FATLShift);
//---- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷åòà îòðèñîâêè èíäèêàòîðà
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,min_rates_total);
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0.0);
//---- îñóùåñòâëåíèå ñäâèãà èíäèêàòîðà 3 ïî ãîðèçîíòàëè
PlotIndexSetInteger(2,PLOT_SHIFT,FATLShift);
//---- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷åòà îòðèñîâêè èíäèêàòîðà
PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,min_rates_total);
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,0.0);
//----
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//----
ObjectDelete(0,Price_name);
//----
ChartRedraw(0);
}
//+------------------------------------------------------------------+
//| 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[]
)
{
//---- ïðîâåðêà êîëè÷åñòâà áàðîâ íà äîñòàòî÷íîñòü äëÿ ðàñ÷¸òà
if(rates_total<min_rates_total) return(0);
//---- îáúÿâëåíèÿ ëîêàëüíûõ ïåðåìåííûõ
int first,bar;
double jfatl,FATL;
//---- ðàñ÷¸ò ñòàðòîâîãî íîìåðà first äëÿ öèêëà ïåðåñ÷¸òà áàðîâ
if(prev_calculated>rates_total || prev_calculated<=0) // ïðîâåðêà íà ïåðâûé ñòàðò ðàñ÷¸òà èíäèêàòîðà
{
first=FATLPeriod-1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷¸òà âñåõ áàðîâ
fstart=first;
}
else first=prev_calculated-1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷¸òà íîâûõ áàðîâ
//---- îáúÿâëåíèå ïåðåìåííîé êëàññà CJJMA èç ôàéëà JJMASeries_Cls.mqh
static CJJMA JMA;
//---- îñíîâíîé öèêë ðàñ÷¸òà èíäèêàòîðà
for(bar=first; bar<rates_total && !IsStopped(); bar++)
{
//---- ôîðìóëà äëÿ ôèëüòðà FATL
FATL=0.0;
for(int iii=0; iii<FATLSize; iii++) FATL+=dFATLTable[iii]*PriceSeries(IPC,bar-iii,open,low,high,close);
jfatl=JMA.JJMASeries(fstart,prev_calculated,rates_total,0,JPhase,JLength,FATL,bar,false);
LineBuffer[bar]=jfatl+dPriceFATLShift;
LineBuffer[bar]=UpCloudBuffer2[bar]=DnCloudBuffer1[bar]=PointPow10*MathRound(LineBuffer[bar]/PointPow10);
UpCloudBuffer1[bar]=LineBuffer[bar]*Dev;
DnCloudBuffer2[bar]=LineBuffer[bar]/Dev;
}
if(ShowPrice)
{
int bar0=rates_total-1;
datetime time0=time[bar0]+1*PeriodSeconds();
SetRightPrice(0,Price_name,0,time0,LineBuffer[bar0],Price_color);
}
//---- ïåðåñ÷¸ò ñòàðòîâîãî íîìåðà first äëÿ öèêëà ïåðåñ÷¸òà áàðîâ
if(prev_calculated>rates_total || prev_calculated<=0) // ïðîâåðêà íà ïåðâûé ñòàðò ðàñ÷¸òà èíäèêàòîðà
first++;
//---- Îñíîâíîé öèêë ðàñêðàñêè ñèãíàëüíîé ëèíèè
for(bar=first; bar<rates_total && !IsStopped(); bar++)
{
double clr=1;
double trend=LineBuffer[bar]-LineBuffer[bar-1];
if(!trend) clr=ColorLineBuffer[bar-1];
else
{
if(trend>0) clr=2;
if(trend<0) clr=0;
}
ColorLineBuffer[bar]=clr;
}
//----
ChartRedraw(0);
return(rates_total);
}
//+------------------------------------------------------------------+
//| RightPrice creation |
//+------------------------------------------------------------------+
void CreateRightPrice(long chart_id,// chart ID
string name, // object name
int nwin, // window index
datetime time, // price level time
double price, // price level
color Color // Text color
)
//----
{
//----
ObjectCreate(chart_id,name,OBJ_ARROW_RIGHT_PRICE,nwin,time,price);
ObjectSetInteger(chart_id,name,OBJPROP_COLOR,Color);
ObjectSetInteger(chart_id,name,OBJPROP_BACK,true);
ObjectSetInteger(chart_id,name,OBJPROP_WIDTH,2);
//----
}
//+------------------------------------------------------------------+
//| RightPrice reinstallation |
//+------------------------------------------------------------------+
void SetRightPrice(long chart_id,// chart ID
string name, // object name
int nwin, // window index
datetime time, // price level time
double price, // price level
color Color // Text color
)
//----
{
//----
if(ObjectFind(chart_id,name)==-1) CreateRightPrice(chart_id,name,nwin,time,price,Color);
else ObjectMove(chart_id,name,0,time,price);
//----
}
//+------------------------------------------------------------------+
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
---