Initial commit: MQL5 Scripts Collection (MetaTrader 5)
This commit is contained in:
@@ -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!
|
||||
|
||||
---
|
||||

|
||||
|
||||
## 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 |
Reference in New Issue
Block a user