Initial commit: MQL5 Indicators Collection (MetaTrader 5) - Part 3

This commit is contained in:
GeneralTradingSarl
2025-06-24 00:49:58 +01:00
commit ce28e11d35
5015 changed files with 75789 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

@@ -0,0 +1,23 @@
# 🚀 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:
- `speedometer.mq5`
### Screenshots:
![Screenshot](1__4.png)
![Screenshot](2__2.png)
![Screenshot](3__2.png)
> 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 @@
//+------------------------------------------------------------------+
//| Speedometr.mq5 |
//| Copyright 2016, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_plots 0
input int FontSize = 12; // Ðàçìåð øðèôòà
input string FontName = "Arial"; // Íàèìåíîâàíèå øðèôòà
input color ClrWay = Red; // Öâåò ìåòêè - ïóòü öåíû â ïóíêòàõ
input color ClrSpeed = Yellow; // Öâåò ìåòêè - ñêîðîñòü ïóíêòû â ñåêóíäó
input color ClrTime = White; // Öâåò ìåòêè - èçìåíåíèå âðåìåíè â ìèêðîñåêóíäàõ
input int SpeedSound = 20; // Îïîâåùåíèå ïðåâûøåíèÿ ñêîðîñòè
input ENUM_BASE_CORNER Corner = CORNER_RIGHT_UPPER; // Óãîë äëÿ âûâîäà èíôîðìàöèè
input bool AlertOn = true; // Âêëþ÷åíèå îïîâåùåíèÿ
bool one=true;
double LastBid;
ulong LastTime=0,T=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
Comment("");
ObjectDelete(0,"Label1");
ObjectDelete(0,"Label2");
ObjectDelete(0,"Label3");
}
//+------------------------------------------------------------------+
//| Óñòàíîâêà ìåòîê |
//+------------------------------------------------------------------+
void PutLabel(string name,string text,int x,int y,color clr)
{
ObjectDelete(0,name);
//--- ñîçäàäèì òåêñòîâóþ ìåòêó
ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- óñòàíîâèì êîîðäèíàòû ìåòêè
ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- óñòàíîâèì óãîë ãðàôèêà, îòíîñèòåëüíî êîòîðîãî áóäóò îïðåäåëÿòüñÿ êîîðäèíàòû òî÷êè
ObjectSetInteger(0,name,OBJPROP_CORNER,Corner);
//--- óñòàíîâèì òåêñò
ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- óñòàíîâèì øðèôò òåêñòà
ObjectSetString(0,name,OBJPROP_FONT,FontName);
//--- óñòàíîâèì ðàçìåð øðèôòà
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,FontSize);
//--- óñòàíîâèì öâåò
ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
}
//+------------------------------------------------------------------+
//| 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[])
{
//---
double speed=0,way=0,Bid=0;
ulong dt=0;
T=GetMicrosecondCount();
Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
if(LastBid!=Bid)
{
dt=T-LastTime;
way=(Bid-LastBid)/_Point;
speed=way/dt;
// Måòêè â ïðàâîé ïîëîâèíå ãðàôèêà
if(Corner==CORNER_RIGHT_UPPER || Corner==CORNER_RIGHT_LOWER)
{
PutLabel("Label1","Way: "+(string)NormalizeDouble(way,2),150,30,ClrWay);
PutLabel("Label2","Time: "+(string)NormalizeDouble(dt,2),150,55,ClrTime);
PutLabel("Label3","Speed: "+(string)NormalizeDouble(speed*1000000,2),150,80,ClrSpeed);
}
else // Måòêè â ëåâîé ïîëîâèíå ãðàôèêà
{
PutLabel("Label1","Way: "+(string)NormalizeDouble(way,2),20,30,ClrWay);
PutLabel("Label2","Time: "+(string)NormalizeDouble(dt,2),20,55,ClrTime);
PutLabel("Label3","Speed: "+(string)NormalizeDouble(speed*1000000,2),20,80,ClrSpeed);
}
}
LastTime=T;
LastBid=Bid;
if(MathAbs(speed*1000000)<SpeedSound) one=true;
// Îïîâåùåíèÿ ïðè âêëþ÷åííîé îïöèè AlertOn
if((MathAbs(speed*1000000)>SpeedSound && one && AlertOn))
{
Alert("Ñêîðîñòü âûøå "+(string)SpeedSound+" ïóíêòîâ â ñåêóíäó!");
SendNotification("Ñêîðîñòü âûøå: "+(string)SpeedSound+" ïóíêòîâ â ñåêóíäó!");
SendMail("Ñèãíàë èíäèêàòîðà","Ñêîðîñòü âûøå: "+(string)SpeedSound+" ïóíêòîâ â ñåêóíäó!");
one=false;
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+