Initial commit: MQL5 Indicators Collection (MetaTrader 5) - Part 2
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:
|
||||
- `maxminchannelwithslope.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 |
@@ -0,0 +1,125 @@
|
||||
//+------------------------------------------------------------------+
|
||||
//| MaxminChannelWithSlope.mq5 |
|
||||
//| Copyright © 2016, fajuzi |
|
||||
//| fajuzi@yahoo.it 2015 |
|
||||
//+------------------------------------------------------------------+
|
||||
#property copyright "Copyright © 2016, fajuzi"
|
||||
#property link "fajuzi@yahoo.it 2015"
|
||||
#property description "simple max - min channel with ema slope"
|
||||
//---- íîìåð âåðñèè èíäèêàòîðà
|
||||
#property version "1.00"
|
||||
//---- îòðèñîâêà èíäèêàòîðà â ãëàâíîì îêíå
|
||||
#property indicator_chart_window
|
||||
//---- êîëè÷åñòâî èíäèêàòîðíûõ áóôåðîâ 2
|
||||
#property indicator_buffers 2
|
||||
//---- èñïîëüçîâàíî îäíî ãðàôè÷åñêîå ïîñòðîåíèå
|
||||
#property indicator_plots 1
|
||||
//+-----------------------------------+
|
||||
//| Ïàðàìåòðû îòðèñîâêè èíäèêàòîðà |
|
||||
//+-----------------------------------+
|
||||
//---- îòðèñîâêà èíäèêàòîðà â âèäå öâåòíîãî îáëàêà
|
||||
#property indicator_type1 DRAW_FILLING
|
||||
//---- â êà÷åñòâå öâåòà èíäèêàòîðà èñïîëüçîâàí
|
||||
#property indicator_color1 clrPaleTurquoise
|
||||
//---- îòîáðàæåíèå ìåòêè èíäèêàòîðà
|
||||
#property indicator_label1 "MaxminChannelWithSlope"
|
||||
//+-----------------------------------+
|
||||
//| Âõîäíûå ïàðàìåòðû èíäèêàòîðà |
|
||||
//+-----------------------------------+
|
||||
input uint barre=20; // Bars for calculation min max
|
||||
input double ratio=4.0; // Ratio EMA period / bars
|
||||
input double xslope=1.0; // Slope adjustment
|
||||
//+-----------------------------------+
|
||||
//---- îáúÿâëåíèå öåëî÷èñëåííûõ ïåðåìåííûõ íà÷àëà îòñ÷åòà äàííûõ
|
||||
int min_rates_total;
|
||||
double cosemap,emap,xslp,pendenzaxslp;
|
||||
//---- îáúÿâëåíèå äèíàìè÷åñêèõ ìàññèâîâ, êîòîðûå áóäóò â
|
||||
//---- äàëüíåéøåì èñïîëüçîâàíû â êà÷åñòâå èíäèêàòîðíûõ áóôåðîâ
|
||||
double UpBuffer[];
|
||||
double DnBuffer[];
|
||||
//+------------------------------------------------------------------+
|
||||
//| Custom indicator initialization function |
|
||||
//+------------------------------------------------------------------+
|
||||
void OnInit()
|
||||
{
|
||||
//---- èíèöèàëèçàöèÿ ïåðåìåííûõ íà÷àëà îòñ÷åòà äàííûõ
|
||||
min_rates_total=3;
|
||||
xslp=xslope*0.5;//adjustment of slope
|
||||
emap=barre*ratio;//period
|
||||
cosemap=(emap+1.0)/2.0;//constant
|
||||
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà â èíäèêàòîðíûé áóôåð
|
||||
SetIndexBuffer(0,UpBuffer,INDICATOR_DATA);
|
||||
//---- îñóùåñòâëåíèå ñäâèãà íà÷àëà îòñ÷åòà îòðèñîâêè èíäèêàòîðà
|
||||
PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
|
||||
//---- óñòàíîâêà çíà÷åíèé èíäèêàòîðà, êîòîðûå íå áóäóò âèäèìû íà ãðàôèêå
|
||||
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
|
||||
//---- èíäåêñàöèÿ ýëåìåíòîâ â áóôåðå êàê â òàéìñåðèè
|
||||
ArraySetAsSeries(UpBuffer,true);
|
||||
//---- ïðåâðàùåíèå äèíàìè÷åñêîãî ìàññèâà â èíäèêàòîðíûé áóôåð
|
||||
SetIndexBuffer(1,DnBuffer,INDICATOR_DATA);
|
||||
//---- èíäåêñàöèÿ ýëåìåíòîâ â áóôåðå êàê â òàéìñåðèè
|
||||
ArraySetAsSeries(DnBuffer,true);
|
||||
//---- èíèöèàëèçàöèÿ ïåðåìåííîé äëÿ êîðîòêîãî èìåíè èíäèêàòîðà
|
||||
string shortname;
|
||||
StringConcatenate(shortname,"MaxminChannelWithSlope(",barre,", ",DoubleToString(ratio,2),", ",xslope,")");
|
||||
//---- ñîçäàíèå èìåíè äëÿ îòîáðàæåíèÿ â îòäåëüíîì ïîäîêíå è âî âñïëûâàþùåé ïîäñêàçêå
|
||||
IndicatorSetString(INDICATOR_SHORTNAME,shortname);
|
||||
//--- îïðåäåëåíèå òî÷íîñòè îòîáðàæåíèÿ çíà÷åíèé èíäèêàòîðà
|
||||
IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
|
||||
//---- çàâåðøåíèå èíèöèàëèçàöèè
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| 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 pendenza;
|
||||
static double pendenza_prev;
|
||||
//---- îáúÿâëåíèå öåëî÷èñëåííûõ ïåðåìåííûõ
|
||||
int limit;
|
||||
//---- ðàñ÷åò ñòàðòîâîãî íîìåðà limit äëÿ öèêëà ïåðåñ÷åòà áàðîâ
|
||||
if(prev_calculated>rates_total || prev_calculated<=0)// ïðîâåðêà íà ïåðâûé ñòàðò ðàñ÷åòà èíäèêàòîðà
|
||||
{
|
||||
limit=rates_total-min_rates_total-1; // ñòàðòîâûé íîìåð äëÿ ðàñ÷åòà âñåõ áàðîâ
|
||||
pendenza_prev=0.0;
|
||||
}
|
||||
else limit=rates_total-prev_calculated; // ñòàðòîâûé íîìåð äëÿ ðàñ÷åòà òîëüêî íîâûõ áàðîâ
|
||||
//---- èíäåêñàöèÿ ýëåìåíòîâ â ìàññèâàõ êàê â òàéìñåðèÿõ
|
||||
ArraySetAsSeries(High,true);
|
||||
ArraySetAsSeries(Low,true);
|
||||
//---- îñíîâíîé öèêë ðàñ÷åòà èíäèêàòîðà
|
||||
for(int bar=limit; bar>=0 && !IsStopped(); bar--)
|
||||
{
|
||||
pendenza=pendenza_prev+(High[bar]+Low[bar]-High[bar+1]-Low[bar+1]-pendenza_prev)/cosemap;
|
||||
pendenzaxslp=pendenza*xslp;
|
||||
//----
|
||||
switch(bar+1-ArrayMaximum(High,bar,barre))
|
||||
{
|
||||
case 0 : UpBuffer[bar+1]=High[bar+1]; break;
|
||||
default : UpBuffer[bar+1]=UpBuffer[bar+2]+pendenzaxslp;
|
||||
}
|
||||
switch(bar+1-ArrayMinimum(Low,bar,barre))
|
||||
{
|
||||
case 0 : DnBuffer[bar+1]=Low[bar+1]; break;
|
||||
default : DnBuffer[bar+1]=DnBuffer[bar+2]+pendenzaxslp;
|
||||
}
|
||||
if(bar) pendenza_prev=pendenza;
|
||||
}
|
||||
UpBuffer[0]=UpBuffer[1]+pendenzaxslp;
|
||||
DnBuffer[0]=DnBuffer[1]+pendenzaxslp;
|
||||
//----
|
||||
return(rates_total);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
Reference in New Issue
Block a user