Initial commit: MQL5 Indicators Collection (MetaTrader 5) - Part 4
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# 🚀 Unlock the Power of Trading!
|
||||
|
||||
Welcome to this open-source trading project. Here you will find powerful tools to enhance your trading journey. If you find this project useful, please consider starring ⭐, sharing, or donating to support further development!
|
||||
|
||||
---
|
||||
|
||||
**Support the project:**
|
||||
- Star this repository on GitHub
|
||||
- Share it with your trading friends
|
||||
- [Donate here](https://www.paypal.com/donate/?hosted_button_id=YOUR_BUTTON_ID) to help us grow!
|
||||
|
||||
---
|
||||
|
||||
## Files included:
|
||||
### Source Files:
|
||||
- `xenvelopes2.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
@@ -0,0 +1,195 @@
|
||||
//+---------------------------------------------------------------------+
|
||||
//| XEnvelopes2.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 description ""
|
||||
//---- íîìåð âåðñèè èíäèêàòîðà
|
||||
#property version "1.00"
|
||||
//---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
|
||||
#property indicator_chart_window
|
||||
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôåðîâ 6
|
||||
#property indicator_buffers 6
|
||||
//---- èñïîëüçîâàíî âñåãî òðè ãðàôè÷åñêèõ ïîñòðîåíèÿ
|
||||
#property indicator_plots 3
|
||||
//+----------------------------------------------+
|
||||
//| Ïàðàìåòðû îòðèñîâêè îáëàêà |
|
||||
//+----------------------------------------------+
|
||||
//---- îòðèñîâêà èíäèêàòîðà â âèäå öâåòíîãî îáëàêà
|
||||
#property indicator_type1 DRAW_FILLING
|
||||
//---- â êà÷åñòâå öâåòà îáëàêà èñïîëüçîâàí
|
||||
#property indicator_color1 clrPaleGreen
|
||||
//---- îòîáðàæåíèå ìåòêè èíäèêàòîðà
|
||||
#property indicator_label1 "Upper XEnvelopes2 Cloud"
|
||||
//+----------------------------------------------+
|
||||
//| Ïàðàìåòðû îòðèñîâêè îáëàêà |
|
||||
//+----------------------------------------------+
|
||||
//---- îòðèñîâêà èíäèêàòîðà â âèäå öâåòíîãî îáëàêà
|
||||
#property indicator_type2 DRAW_FILLING
|
||||
//---- â êà÷åñòâå öâåòà îáëàêà èñïîëüçîâàí
|
||||
#property indicator_color2 clrLavender
|
||||
//---- îòîáðàæåíèå ìåòêè èíäèêàòîðà
|
||||
#property indicator_label2 "XEnvelopes1 Cloud"
|
||||
//+----------------------------------------------+
|
||||
//| Ïàðàìåòðû îòðèñîâêè îáëàêà |
|
||||
//+----------------------------------------------+
|
||||
//---- îòðèñîâêà èíäèêàòîðà â âèäå öâåòíîãî îáëàêà
|
||||
#property indicator_type3 DRAW_FILLING
|
||||
//---- â êà÷åñòâå öâåòà îáëàêà èñïîëüçîâàí
|
||||
#property indicator_color3 clrPink
|
||||
//---- îòîáðàæåíèå ìåòêè èíäèêàòîðà
|
||||
#property indicator_label3 "Lower XEnvelopes2 Cloud"
|
||||
//+----------------------------------------------+
|
||||
//| Îïèñàíèå êëàññà CXMA |
|
||||
//+----------------------------------------------+
|
||||
#include <SmoothAlgorithms.mqh>
|
||||
//+----------------------------------------------+
|
||||
//---- îáúÿâëåíèå ïåðåìåííûõ êëàññà CXMA èç ôàéëà SmoothAlgorithms.mqh
|
||||
CXMA XMA1;
|
||||
//+----------------------------------------------+
|
||||
//| Îáúÿâëåíèå ïåðå÷èñëåíèé |
|
||||
//+----------------------------------------------+
|
||||
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_SIMPL_, //Simpl Price (OC/2)
|
||||
PRICE_QUARTER_, //Quarted Price (HLOC/4)
|
||||
PRICE_TRENDFOLLOW0_, //TrendFollow_1 Price
|
||||
PRICE_TRENDFOLLOW1_, //TrendFollow_2 Price
|
||||
PRICE_DEMARK_ //Demark Price
|
||||
};
|
||||
//+----------------------------------------------+
|
||||
//| Îáúÿâëåíèå ïåðå÷èñëåíèé |
|
||||
//+----------------------------------------------+
|
||||
/*enum SmoothMethod - ïåðå÷èñëåíèå îáúÿâëåíî â ôàéëå SmoothAlgorithms.mqh
|
||||
{
|
||||
MODE_SMA_, //SMA
|
||||
MODE_EMA_, //EMA
|
||||
MODE_SMMA_, //SMMA
|
||||
MODE_LWMA_, //LWMA
|
||||
MODE_JJMA, //JJMA
|
||||
MODE_JurX, //JurX
|
||||
MODE_ParMA, //ParMA
|
||||
MODE_T3, //T3
|
||||
MODE_VIDYA, //VIDYA
|
||||
MODE_AMA, //AMA
|
||||
}; */
|
||||
//+----------------------------------------------+
|
||||
//| Âõîäíûå ïàðàìåòðû èíäèêàòîðà |
|
||||
//+----------------------------------------------+
|
||||
input Smooth_Method XMA_Method=MODE_SMA; // Ìåòîä óñðåäíåíèÿ
|
||||
input uint XLength=12; // Ãëóáèíà ñãëàæèâàíèÿ
|
||||
input int XPhase=15; // Ïàðàìåòð ñãëàæèâàíèÿ
|
||||
//---- äëÿ JJMA èçìåíÿþùèéñÿ â ïðåäåëàõ -100 ... +100, âëèÿåò íà êà÷åñòâî ïåðåõîäíîãî ïðîöåññà;
|
||||
//---- äëÿ VIDIA ýòî ïåðèîä CMO, äëÿ AMA ýòî ïåðèîä ìåäëåííîé ñêîëüçÿùåé
|
||||
input Applied_price_ IPC=PRICE_CLOSE; // Öåíîâàÿ êîíñòàíòà
|
||||
input double Deviation1=0.1; // Äåâèàöèÿ 1
|
||||
input double Deviation2=0.3; // Äåâèàöèÿ 2
|
||||
input int Shift=0; // Ñäâèã èíäèêàòîðà ïî ãîðèçîíòàëè â áàðàõ
|
||||
input int PriceShift=0; // Ñäâèã èíäèêàòîðà ïî âåðòèêàëè â ïóíêòàõ
|
||||
//+----------------------------------------------+
|
||||
//---- îáúÿâëåíèå äèíàìè÷åñêèõ ìàññèâîâ, êîòîðûå áóäóò â
|
||||
//---- äàëüíåéøåì èñïîëüçîâàíû â êà÷åñòâå èíäèêàòîðíûõ áóôåðîâ
|
||||
double UpBuffer1[],DnBuffer1[],UpBuffer2[],DnBuffer2[],UpBuffer3[],DnBuffer3[];
|
||||
//---- îáúÿâëåíèå ïåðåìåííûõ çíà÷åíèÿ âåðòèêàëüíîãî ñäâèãà ìóâèíãà è êîýôôèöèåíòîâ äåâèàöèè
|
||||
double dPriceShift,UpKdev1,DnKdev1,UpKdev2,DnKdev2;
|
||||
//---- îáúÿâëåíèå öåëî÷èñëåííûõ ïåðåìåííûõ íà÷àëà îòñ÷åòà äàííûõ
|
||||
int min_rates_total;
|
||||
//+------------------------------------------------------------------+
|
||||
//| Custom indicator initialization function |
|
||||
//+------------------------------------------------------------------+
|
||||
int OnInit()
|
||||
{
|
||||
//---- èíèöèàëèçàöèÿ ïåðåìåííûõ íà÷àëà îòñ÷åòà äàííûõ
|
||||
min_rates_total=XMA1.GetStartBars(XMA_Method,XLength,XPhase);
|
||||
//---- óñòàíîâêà àëåðòîâ íà íåäîïóñòèìûå çíà÷åíèÿ âíåøíèõ ïåðåìåííûõ
|
||||
XMA1.XMALengthCheck("XLength",XLength);
|
||||
XMA1.XMAPhaseCheck("XPhase",XPhase,XMA_Method);
|
||||
//---- èíèöèàëèçàöèÿ ñäâèãà ïî âåðòèêàëè
|
||||
dPriceShift=_Point*PriceShift;
|
||||
|
||||
if(Deviation1>=Deviation2)
|
||||
{
|
||||
Print("Âõîäíîé ïàðàìåòð Äåâèàöèÿ 2 âñåãäà äîëæåí áûòü áîëüøå âõîäíîãî ïàðàìåòðà Äåâèàöèÿ 1! Èñïðàâüòå çíà÷åíèÿ ýòèõ âõîäíûõ ïàðàìåòðîâ èíäèêàòîðà!");
|
||||
return(INIT_FAILED);
|
||||
}
|
||||
//---- èíèöèàëèçàöèÿ êîýôôèöèåíòîâ äåâèàöèè
|
||||
UpKdev1=(1+Deviation1/100.0);
|
||||
DnKdev1=(1-Deviation1/100.0);
|
||||
UpKdev2=(1+Deviation2/100.0);
|
||||
DnKdev2=(1-Deviation2/100.0);
|
||||
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà â èíäèêàòîðíûé áóôåð
|
||||
SetIndexBuffer(0,UpBuffer2,INDICATOR_DATA);
|
||||
SetIndexBuffer(1,DnBuffer2,INDICATOR_DATA);
|
||||
SetIndexBuffer(2,UpBuffer1,INDICATOR_DATA);
|
||||
SetIndexBuffer(3,DnBuffer1,INDICATOR_DATA);
|
||||
SetIndexBuffer(4,UpBuffer3,INDICATOR_DATA);
|
||||
SetIndexBuffer(5,DnBuffer3,INDICATOR_DATA);
|
||||
//---- îñóùåñòâëåíèå ñäâèãà èíäèêàòîðà ïî ãîðèçîíòàëè
|
||||
PlotIndexSetInteger(0,PLOT_SHIFT,Shift);
|
||||
PlotIndexSetInteger(1,PLOT_SHIFT,Shift);
|
||||
PlotIndexSetInteger(2,PLOT_SHIFT,Shift);
|
||||
//---- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷åòà îòðèñîâêè èíäèêàòîðà
|
||||
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
|
||||
PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,min_rates_total);
|
||||
PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,min_rates_total);
|
||||
//--- ñîçäàíèå èìåíè äëÿ îòîáðàæåíèÿ â îòäåëüíîì ïîäîêíå è âî âñïëûâàþùåé ïîäñêàçêå
|
||||
IndicatorSetString(INDICATOR_SHORTNAME,"Env("+string(XLength)+")");
|
||||
PlotIndexSetString(0,PLOT_LABEL,"Env("+string(XLength)+")Upper Cloud2");
|
||||
PlotIndexSetString(1,PLOT_LABEL,"Env("+string(XLength)+")Cloud1");
|
||||
PlotIndexSetString(2,PLOT_LABEL,"Env("+string(XLength)+")Lower Cloud2");
|
||||
//--- îïðåäåëåíèå òî÷íîñòè îòîáðàæåíèÿ çíà÷åíèé èíäèêàòîðà
|
||||
IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
|
||||
//---- çàâåðøåíèå èíèöèàëèçàöèè
|
||||
return(INIT_SUCCEEDED);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| 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);
|
||||
//---- îáúÿâëåíèå ïåðåìåííûõ ñ ïëàâàþùåé òî÷êîé
|
||||
double price,xma;
|
||||
//---- îáúÿâëåíèå öåëî÷èñëåííûõ ïåðåìåííûõ è ïîëó÷åíèå óæå ïîñ÷èòàííûõ áàðîâ
|
||||
int first,bar;
|
||||
//---- ðàñ÷åò ñòàðòîâîãî íîìåðà first äëÿ öèêëà ïåðåñ÷åòà áàðîâ
|
||||
if(prev_calculated>rates_total || prev_calculated<=0) // ïðîâåðêà íà ïåðâûé ñòàðò ðàñ÷åòà èíäèêàòîðà
|
||||
first=0; // ñòàðòîâûé íîìåð äëÿ ðàñ÷åòà âñåõ áàðîâ
|
||||
else first=prev_calculated-1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷åòà íîâûõ áàðîâ
|
||||
//---- îñíîâíîé öèêë ðàñ÷åòà èíäèêàòîðà
|
||||
for(bar=first; bar<rates_total && !IsStopped(); bar++)
|
||||
{
|
||||
price=PriceSeries(IPC,bar,open,low,high,close);
|
||||
xma=XMA1.XMASeries(0,prev_calculated,rates_total,XMA_Method,XPhase,XLength,price,bar,false);
|
||||
UpBuffer1[bar]=DnBuffer2[bar]=UpKdev1*xma+dPriceShift;
|
||||
DnBuffer1[bar]=UpBuffer3[bar]=DnKdev1*xma+dPriceShift;
|
||||
//----
|
||||
UpBuffer2[bar]=UpKdev2*xma+dPriceShift;
|
||||
DnBuffer3[bar]=DnKdev2*xma+dPriceShift;
|
||||
}
|
||||
//----
|
||||
return(rates_total);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
Reference in New Issue
Block a user