Orders Execution
0
Views
0
Downloads
0
Favorites
Profitability Reports
GBP/USD
Oct 2024 - Jan 2025
41.00 %
Total Trades
8016
Won Trades
0
Lost trades
0
Win Rate
0.00 %
Expected payoff
-1.03
Gross Profit
5848.10
Gross Loss
-14100.44
Total Net Profit
-8252.34
-100%
-50%
0%
50%
100%
NZD/USD
Oct 2024 - Jan 2025
24.00 %
Total Trades
2259
Won Trades
1245
Lost trades
1014
Win Rate
0.55 %
Expected payoff
-2.91
Gross Profit
2111.60
Gross Loss
-8675.82
Total Net Profit
-6564.22
-100%
-50%
0%
50%
100%
Blessing Martingale_v5-sloptimized
//+------------------------------------------------------------------+
//| Blessing Martingale_v5-sloptimized.mq4 |
//| timbo |
//| |
//+------------------------------------------------------------------+
#property copyright "timbo sloptimized"
#property link ""
//---- input parameters
extern double levels = 8;
extern double Multiplier=2;
extern int PS=20;
extern int TP=30;
extern int Level1TP=40;
extern bool UseStopLoss=true;
extern int SL=1000;
extern bool MM=true;
extern int LotsDigit=2;
extern double nonMMlot=0.01;
extern int EF=1000000;
extern double MaxLot=100;
extern double MinLot=0.01;
extern int magiclong=800111;
extern int magicshort=800222;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cmd = 2; double Lot; double price; int slippage=5; double stoploss; double takeprofit; color colour;
int BuyTicket = 0; int SellTicket = 0;
if (MM==true) Lot = NormalizeDouble((AccountEquity()/EF),LotsDigit); else Lot = nonMMlot;
if (Lot > MaxLot) Lot = MaxLot;
if (Lot < MinLot) Lot = MinLot;
BuyTicket = FixTakeProfit(magiclong,0);
if(BuyTicket == 0)
{
CleanAllPendings(magiclong,2);
cmd = 0; price = Ask; colour = Green; takeprofit = Ask +PS*Point;
if(UseStopLoss == true) stoploss = Ask - levels*SL*Point;
OpenOrder(cmd, Lot, price, slippage, stoploss,Ask + Level1TP*Point, magiclong, colour);
SetPendingOrders(2,Lot,price,slippage,stoploss,TP,magiclong,levels);
return(0);
}
SellTicket = FixTakeProfit(magicshort,1);
if(SellTicket == 0)
{
CleanAllPendings(magicshort,3);
cmd = 1; price = Bid; colour = Red; takeprofit = Bid - PS*Point;
if(UseStopLoss == true) stoploss = Bid + levels*SL*Point;
OpenOrder(cmd, Lot, price, slippage, stoploss, Bid - Level1TP*Point, magicshort, colour);
SetPendingOrders(3,Lot,price,slippage,stoploss,(-TP),magicshort,levels);
return(0);
}
//----
return(0);
}
//+------------------------------------------------------------------+
int OpenOrder(int cmd, double Lot, double price, int slippage, double stoploss, double takeprofit, int magic, color colour)
{
RefreshRates();
while(IsTradeAllowed() == false) Sleep(10000);
int ticket = OrderSend(Symbol(), cmd, Lot, price, slippage, stoploss, takeprofit, NULL, magic, 0, colour);
if(ticket < 0)
{
Print(price," == ",stoploss);
//Alert("!!! Error opening order !!! ", GetLastError());
ticket = 0;
}
return(ticket);
}
//+-------------------------------------------------------
int FixTakeProfit(int magic, int cmd)
{
int ticket = 0; int i;
datetime time = 0;
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType() == cmd)
{
if(OrderOpenTime() > time) { time = OrderOpenTime();ticket = OrderTicket(); }
}
}
if(ticket != 0)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
double takeprofit = OrderTakeProfit();
for(i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType() == cmd)
{
if(OrderTakeProfit() != takeprofit)
{
while(IsTradeAllowed() == false) Sleep(10000);
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),takeprofit,0,Yellow);
}
}
}
}
return(ticket);
}
//+------------------------------------------------------
void CleanAllPendings(int magic,int cmd)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType() == cmd)
{
int ticket = OrderTicket();
while(IsTradeAllowed() == false) Sleep(10000);
OrderDelete(ticket,CLR_NONE);
}
}
}
//+-----------------------------------------------------
void SetPendingOrders(int cmd,double Lot,double price,int slippage,double stoploss,int PS,int magic, int levels)
{
for(int i=0;i<levels-1;i++)
{
while(IsTradeAllowed() == false) Sleep(10000);
OpenOrder(cmd,Lot*MathPow(Multiplier,i),price-(i+1)*PS*Point,slippage,stoploss,price-i*PS*Point,magic,CLR_NONE);
}
return(0);
}
//+-----------------------------------------------------
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---