Initial commit: MQL5 Scripts Collection (MetaTrader 5)

This commit is contained in:
GeneralTradingSarl
2025-06-24 00:33:04 +01:00
commit 60a549d89c
1959 changed files with 31907 additions and 0 deletions
@@ -0,0 +1,19 @@
# 🚀 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!
---
![Screenshot](script.png)
## Source Files
- `opentrade.mq5`
---
> Made with ❤️ for the trading community.
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

@@ -0,0 +1,126 @@
//+------------------------------------------------------------------+
//| Open Trade.mq5 |
//| Copyright 2023 |
//| https://www.mql5.com/en/users/neverwolf |
//+------------------------------------------------------------------+
#property copyright "Neverwolf"
#property link "https://www.mql5.com/en/users/neverwolf"
#property version "1.00"
#property script_show_inputs
enum TradeType
{
OPEN_BUY = 0, // ORDER_TYPE_BUY
OPEN_SELL = 1, // ORDER_TYPE_SELL
};
input group "Open Trade";
input TradeType OrderType = OPEN_BUY; // Order Type
input double Lots = 0.01; // Lots
input int dev = 10; // Deviation
input double TakeProfit = 0.0; // TakeProfit in Points
input double StopLoss = 0.0; // StopLoss in Points
input string commt = ""; // Trade Comment
input int magic = 1212; // Trade Magic Number
void OnStart()
{
OpenTrade(Symbol(), (ENUM_ORDER_TYPE)OrderType, Lots, dev, TakeProfit, StopLoss, commt, magic);
}
//+------------------------------------------------------------------+
//| Order Send |
//+------------------------------------------------------------------+
void OpenTrade(string symbol, ENUM_ORDER_TYPE orderType, double volume, int deviation, double stopLossPoints, double takeProfitPoints, string comment, ulong magicNumber)
{
double getpoints = SymbolInfoDouble(symbol, SYMBOL_POINT);
double getask = SymbolInfoDouble(symbol, SYMBOL_ASK);
double getbid = SymbolInfoDouble(symbol, SYMBOL_BID);
double minLevel = GetMinTradeLevel(symbol);
double tp = 0.0, sl = 0.0, price = 0.0;
// Determine if it's a Buy or Sell trade
if (orderType == ORDER_TYPE_BUY)
{
price = getask;
tp = (takeProfitPoints != 0.0) ? (getask + takeProfitPoints * getpoints) + (minLevel * getpoints) : 0.0;
sl = (stopLossPoints != 0.0) ? (getask - stopLossPoints * getpoints) - (minLevel * getpoints) : 0.0;
}
if (orderType == ORDER_TYPE_SELL)
{
price = getbid;
tp = (takeProfitPoints != 0.0) ? (getbid - takeProfitPoints * getpoints) - (minLevel * getpoints) : 0.0;
sl = (stopLossPoints != 0.0) ? (getbid + stopLossPoints * getpoints) + (minLevel * getpoints) : 0.0;
}
//--- prepare a request
MqlTradeRequest request = {};
ZeroMemory(request);
request.action = TRADE_ACTION_DEAL; // Operation Type
request.symbol = symbol; // Symbol
request.volume = volume; // Volume
request.type = orderType; // Type of Order
request.deviation = deviation; // Deviation
request.comment = comment; // Comment
request.magic = magicNumber; // Magic Number
request.type_filling = SetTypeFillingBySymbol(symbol); // Filling Type
request.price = price;
request.tp = tp;
request.sl = sl;
MqlTradeResult result = {};
ZeroMemory(result);
// bool ok = OrderSend(request, result);
bool ok = OrderSend(request, result);
Print("Function > ", __FUNCTION__);
}
//---
//---
//---
//--- SetTypeFillingBySymbol
ENUM_ORDER_TYPE_FILLING SetTypeFillingBySymbol(const string symbol)
{
// Get possible filling policy types by symbol
uint filling = (uint)SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE);
if ((filling & SYMBOL_FILLING_FOK) == SYMBOL_FILLING_FOK)
{
return ORDER_FILLING_FOK;
}
else if ((filling & SYMBOL_FILLING_IOC) == SYMBOL_FILLING_IOC)
{
return ORDER_FILLING_IOC;
}
else
{
return ORDER_FILLING_RETURN;
}
}
//---
//---
//---
//--- GetMinTradeLevel
double GetMinTradeLevel(string symbol)
{
double minLevel = -1.0;
double freezeLevel = -1.0;
double stopsLevel = -1.0;
freezeLevel = (double)SymbolInfoInteger(symbol, SYMBOL_TRADE_FREEZE_LEVEL);
stopsLevel = (double)SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL);
minLevel = MathMax(freezeLevel, stopsLevel);
if (freezeLevel == -1 || stopsLevel == -1 || minLevel == -1)
{
Print("Freeze level or Stops level not available for the symbol (-1) ");
return 0;
}
if (minLevel <= 100.0 && minLevel >= 0.0)
minLevel += 1.0;
else if (minLevel >= 100.0)
minLevel = 100.0;
return minLevel;
}
//---
//---
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB