Initial commit: MQL5 Indicators Collection (MetaTrader 5) - Part 1
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
@@ -0,0 +1,22 @@
|
||||
# 🚀 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:
|
||||
- `advanced_line_chart.mq5`
|
||||
|
||||
### Screenshots:
|
||||

|
||||

|
||||
|
||||
> Made with ❤️ for the trading community.
|
||||
@@ -0,0 +1,90 @@
|
||||
//+------------------------------------------------------------------+
|
||||
//| ADVANCED LINE CHART.mq5 |
|
||||
//| Copyright 2023, Igor Gerasimov. |
|
||||
//| tgwls2@gmail.com |
|
||||
//+------------------------------------------------------------------+
|
||||
#property copyright "Copyright 2023, Igor Gerasimov."
|
||||
#property link "tgwls2@gmail.com"
|
||||
#property version "1.00"
|
||||
#property indicator_chart_window
|
||||
#property indicator_buffers 1
|
||||
#property indicator_plots 1
|
||||
#property indicator_type1 DRAW_LINE
|
||||
#property indicator_color1 clrDarkGray
|
||||
#property indicator_width1 1
|
||||
#define THIRD (1/(double)3)
|
||||
#define ELOG2 MathLog(2)
|
||||
double Z[],Z0[3]= {0,0,0};
|
||||
datetime T=0;
|
||||
//+------------------------------------------------------------------+
|
||||
//| Custom indicator initialization function |
|
||||
//+------------------------------------------------------------------+
|
||||
int OnInit()
|
||||
{
|
||||
SetIndexBuffer(0,Z,INDICATOR_DATA);
|
||||
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[])
|
||||
{
|
||||
const int x=rates_total-1,
|
||||
y=prev_calculated-1;
|
||||
if(T!=time[x] || y<=0)
|
||||
{
|
||||
if(y<=0) ArrayFill(Z0,0,3,0);
|
||||
const int y0=y<x?y:y-1;
|
||||
for(int z=(y0>=0?y0:0); z<x && !IsStopped(); z++)
|
||||
{
|
||||
const double s=high[z]-low[z],
|
||||
t=(high[z]+low[z])/2,
|
||||
u=((high[z]-Temp(open[z],high[z],low[z],close[z],t,s))/s-0.5)*2,
|
||||
w=u-Z0[0],
|
||||
v=MathAbs(w)>0?w/MathMax(MathMax(MathAbs(w),MathAbs(Z0[0]-Z0[1])),MathAbs(Z0[1]-Z0[2])):0;
|
||||
Z[z]=t-(high[z]-t)*(u+v)/2;
|
||||
Z0[2]=Z0[1];
|
||||
Z0[1]=Z0[0];
|
||||
Z0[0]=u;
|
||||
}
|
||||
}
|
||||
{
|
||||
const double s0=high[x-1]-low[x-1],
|
||||
s=high[x]-low[x],
|
||||
t=(high[x]+low[x])/2,
|
||||
u=((high[x]-Temp(open[x],high[x],low[x],close[x],t,s))/s-0.5)*2,
|
||||
w=u-Z0[0],
|
||||
v=MathAbs(w)>0?w/MathMax(MathMax(MathAbs(w),MathAbs(Z0[0]-Z0[1])),MathAbs(Z0[1]-Z0[2])):0,
|
||||
r=MathMax((double)((int)TimeCurrent()-(int)time[x]+1)/PeriodSeconds(PERIOD_CURRENT),(MathMax(s,s0)>0?s/MathMax(s,s0):0)),
|
||||
d=1-r,
|
||||
a=MathSin(d*M_PI_2),
|
||||
b=r>0?r*(1-r*MathLog(1/r)/ELOG2):0,
|
||||
c=MathTanh(d*12);
|
||||
Z[x]=(Z[x-1]*c+(t-(high[x]-t)*(u+v)/2)*b+(Z[x-1]+(Z[x-1]-Z[x-2])/2+close[x])*a/2)/(a+b+c);
|
||||
}
|
||||
T=time[x];
|
||||
return(rates_total);
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
//| Temp |
|
||||
//+------------------------------------------------------------------+
|
||||
double Temp(const double o,
|
||||
const double h,
|
||||
const double l,
|
||||
const double c,
|
||||
const double m,
|
||||
const double r)
|
||||
{
|
||||
const double a=3*MathPow(r,2),b=a>0?4*(MathPow(c,2)+MathPow(o,2))/a-8*c*o/a-THIRD:0;
|
||||
return(m+(h-m)*((MathMin(o,c)>m || c>o)?b:((MathMax(o,c)<m || c<o)?-b:0)));
|
||||
}
|
||||
//+------------------------------------------------------------------+
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
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: 2.4 KiB |
Reference in New Issue
Block a user