Orders Execution
Indicators Used
0
Views
0
Downloads
0
Favorites
Profitability Reports
GBP/USD
Oct 2024 - Jan 2025
83.00 %
Total Trades
2517
Won Trades
0
Lost trades
0
Win Rate
0.00 %
Expected payoff
-0.37
Gross Profit
4400.16
Gross Loss
-5331.75
Total Net Profit
-931.59
-100%
-50%
0%
50%
100%
NZD/USD
Oct 2024 - Jan 2025
15.00 %
Total Trades
490
Won Trades
317
Lost trades
173
Win Rate
0.65 %
Expected payoff
-15.07
Gross Profit
1323.75
Gross Loss
-8707.43
Total Net Profit
-7383.68
-100%
-50%
0%
50%
100%
Blessing 2 v3.3 update
//+------------------------------------------------------------------+
//| Blessing 3.3 |
//| Copyright © 2007-2008, MQLCoder.com |
//| support@mqlcoder.com |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007-2008, FiFtHeLeMeNt."
#property link "http://www.mqlcoder.com"
extern bool UseMM = 1; // Money Management - 1 = true & 0 = false.
extern double Risk = 3.2; // Percent of account balance to risk per trade.
extern double lot = 0.2; // Starting lots if Money Management is off
extern bool Micro = true; // Does your account have the ability to trade micro lots
extern int MC = 2; // Market condition 0=uptrend 1=downtrend 2=range
extern bool MCbyMA = true; // Defines market condition by EMA , if price is above EMA,
// it will take it as an uptrend and goes only long , vice versa for below the EMA
extern int MA_Period = 100; // Period of EMA
extern double Multiplier = 1.4; // Multiplier on each level
extern double LotInc = 0; // Lot Increment on each level
extern int TimeGrid = 2400; // Time Grid in seconds , to avoid opening of lots of levels in fast market
extern int GridSet1 = 25; // Set 1 Grid Size
extern int TP_Set1 = 50; // Set 1 Take Profit
extern int GridSet2 = 50; // Level 2 Grid Size
extern int TP_Set2 = 100; // Level 2 Take Profit
extern int GridSet3 = 100; // Level 3 Grid Size
extern int TP_Set3 = 200; // Level 3 Take Profit
extern int d = 5; // Used to offset entry to round numbers , for example if you set d=5,
// it will place its sell order on 1.5795 instead of 1.5780
extern int Set1Count = 4; // Level 1 max levels
extern int Set2Count = 4; // Level 2 max levels
extern int MaxLevel = 99; // Level 2 max levels (stops placing orders when reaches maxlvl2)
extern int BELevel = 99; // Close All level , when reaches this level, doesn't wait for TP to be hit
// Internal Parameters
bool ca = false;
string EA_name = "Blessing";
int magic = 0;
string TradeComment;
string Filename;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (Symbol() == "AUDCADm" || Symbol() == "AUDCAD") magic = 101101;
if (Symbol() == "AUDJPYm" || Symbol() == "AUDJPY") magic = 101102;
if (Symbol() == "AUDNZDm" || Symbol() == "AUDNZD") magic = 101103;
if (Symbol() == "AUDUSDm" || Symbol() == "AUDUSD") magic = 101104;
if (Symbol() == "CHFJPYm" || Symbol() == "CHFJPY") magic = 101105;
if (Symbol() == "EURAUDm" || Symbol() == "EURAUD") magic = 101106;
if (Symbol() == "EURCADm" || Symbol() == "EURCAD") magic = 101107;
if (Symbol() == "EURCHFm" || Symbol() == "EURCHF") magic = 101108;
if (Symbol() == "EURGBPm" || Symbol() == "EURGBP") magic = 101109;
if (Symbol() == "EURJPYm" || Symbol() == "EURJPY") magic = 101110;
if (Symbol() == "EURUSDm" || Symbol() == "EURUSD") magic = 101111;
if (Symbol() == "GBPCHFm" || Symbol() == "GBPCHF") magic = 101112;
if (Symbol() == "GBPJPYm" || Symbol() == "GBPJPY") magic = 101113;
if (Symbol() == "GBPUSDm" || Symbol() == "GBPUSD") magic = 101114;
if (Symbol() == "NZDJPYm" || Symbol() == "NZDJPY") magic = 101115;
if (Symbol() == "NZDUSDm" || Symbol() == "NZDUSD") magic = 101116;
if (Symbol() == "USDCHFm" || Symbol() == "USDCHF") magic = 101117;
if (Symbol() == "USDJPYm" || Symbol() == "USDJPY") magic = 101118;
if (Symbol() == "USDCADm" || Symbol() == "USDCAD") magic = 101119;
if (magic == 0) magic = 701999;
TradeComment = StringConcatenate(Symbol()," ",EA_name);
Filename = StringConcatenate(EA_name+"_",Symbol(),"_",Period(),"_M",".txt");
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int y;
int cb=0; // Count buy
int cs=0; // Count sell
int cbl=0; // Count buy limit
int csl=0; // Count sell limit
int cbs=0; // Count buy limit
int css=0; // Count sell limit
double m,lot2;
double lp; // last buy price
double ll; //last lot
double ltp; //last tp
double lopt; // last open time
int g2;
double tp2;
double entry;
double pr=0; // profit;
double sumlot,sumlot2;
int lticket;
double mp,mp2; // median price
if (MCbyMA ) {
MC=-1;
if (Bid<iMA(Symbol(),0,MA_Period,0,MODE_EMA,PRICE_CLOSE,0)) MC=1;
if (Bid>iMA(Symbol(),0,MA_Period,0,MODE_EMA,PRICE_CLOSE,0)) MC=0;
//+------------------------------------------------------------------+
//| Money Management and Lot size coding |
//+------------------------------------------------------------------+
if(UseMM)
{
lot=NormalizeDouble(AccountBalance()*Risk/1000000,2);
}
}
//+------------------------------------------------------------------+
//| End Money Management Section |
//+------------------------------------------------------------------+
for (y = 0; y < OrdersTotal(); y++)
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()==OP_BUY)) {
cb++;
pr=pr+OrderProfit();
}
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()==OP_SELL)) {
cs++;
pr=pr+OrderProfit();
}
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()==OP_BUYLIMIT)) cbl++;
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()==OP_SELLLIMIT)) csl++;
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()==OP_BUYSTOP)) cbs++;
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()==OP_SELLSTOP)) css++;
}
if (cs==0 && cb==0 && cbs==0 && cbl==0 && css==0 && csl==0) ca=false;
if (((cb>=BELevel || cs>=BELevel) && pr>0) || ca) {
ca=true;
for (y = 0; y < OrdersTotal(); y++)
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()==OP_BUY || OrderType()==OP_SELL)) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),1);
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()==OP_BUYLIMIT || OrderType()==OP_SELLLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)) OrderDelete(OrderTicket());
}
return;
}
g2=GridSet1;
tp2=TP_Set1;
if (cb>=Set1Count || cs>=Set1Count) {
g2=GridSet2;
tp2=TP_Set2;
}
if (cb>=Set2Count+Set1Count || cs>=Set2Count+Set1Count) {
g2=GridSet3;
tp2=TP_Set3;
}
if ((cb==0) && (cs==0)) {
for (y = 0; y < OrdersTotal(); y++)
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderLots()>lot)) OrderDelete(OrderTicket());
}
if (MC==0) {
if (cbs==0) {
m=MathMod(Ask/Point,g2);
if ((g2-m+d)>MarketInfo(Symbol(),MODE_STOPLEVEL)) {
OrderSend(Symbol(),OP_BUYSTOP,lot,Ask*2-Bid+(g2-m+d)*Point,0,0,Ask*2-Bid+(g2-m+d+tp2)*Point,TradeComment,magic);
Print("s2");
return;
}
}
if (cbl==0) {
m=MathMod(Ask/Point,g2);
if ((m+d)>MarketInfo(Symbol(),MODE_STOPLEVEL)) {
OrderSend(Symbol(),OP_BUYLIMIT,lot,Ask*2-Bid-(m+d)*Point,0,0,Ask*2-Bid-(m+d-tp2)*Point,TradeComment,magic);
Print("s1");
return;
}
}
}
if (MC==1) {
if (csl==0) {
m=MathMod(Bid/Point,g2);
if ((g2-m-d)>MarketInfo(Symbol(),MODE_STOPLEVEL)) {
OrderSend(Symbol(),OP_SELLLIMIT,lot,Bid+(g2-m-d)*Point,0,0,Bid+(g2-m-d-tp2)*Point,TradeComment,magic);
Print("s2");
return;
}
}
if (css==0) {
m=MathMod(Bid/Point,g2);
if ((m+d)>MarketInfo(Symbol(),MODE_STOPLEVEL)) {
OrderSend(Symbol(),OP_SELLSTOP,lot,Bid-(m+d)*Point,0,0,Bid-(m+d+tp2)*Point,TradeComment,magic);
Print("s1");
return;
}
}
}
if (MC==2) {
if (css==0) {
m=MathMod(Bid/Point,g2);
if ((m+d)>MarketInfo(Symbol(),MODE_STOPLEVEL)) {
OrderSend(Symbol(),OP_SELLSTOP,lot,Bid-(m+d)*Point,0,0,Bid-(m+d+tp2)*Point,TradeComment,magic);
Print("s1");
return;
}
}
if (cbs==0) {
m=MathMod(Ask/Point,g2);
if ((g2-m+d)>MarketInfo(Symbol(),MODE_STOPLEVEL)) {
OrderSend(Symbol(),OP_BUYSTOP,lot,Ask*2-Bid+(g2-m+d)*Point,0,0,Ask*2-Bid+(g2-m+d+tp2)*Point,TradeComment,magic);
Print("s2");
return;
}
}
}
}
if (cb>0 || cs>0) {
for (y = 0; y < OrdersTotal(); y++)
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if ((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()) && (OrderType()!=OP_SELL) && (OrderType()!=OP_BUY) && OrderLots()==lot) OrderDelete(OrderTicket());
}
}
if (cb>0) {
sumlot=0;
mp=0;
for (y = 0; y < OrdersTotal(); y++)
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY) || (OrderSymbol()!=Symbol())) { continue; }
lp=OrderOpenPrice();
ll=OrderLots();
ltp=OrderTakeProfit();
lopt=OrderOpenTime();
lticket=OrderTicket();
sumlot=sumlot+ll;
mp=mp+ll*lp;
}
mp=mp/sumlot;
if ((TimeCurrent()-TimeGrid>lopt) && (cb<MaxLevel)) {
if (lp>Ask) entry=NormalizeDouble(lp-(MathRound((lp-Ask)/Point/g2)+1)*g2*Point,Digits); else entry=NormalizeDouble(lp-g2*Point,Digits);
if (Micro) lot2=NormalizeDouble(ll*Multiplier+LotInc,2); else lot2=NormalizeDouble(ll*Multiplier+LotInc,1);
if (cbl==0) {
OrderSend(Symbol(),OP_BUYLIMIT,lot2,entry,0,0,entry+tp2*Point,TradeComment,magic);
Print("s3");
return;
}
if (cbl==1) {
for (y = 0; y < OrdersTotal(); y++)
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUYLIMIT && OrderMagicNumber()==magic && (OrderSymbol()==Symbol()) && entry-OrderOpenPrice()>g2/2*Point) {
OrderModify(OrderTicket(),entry,OrderStopLoss(),entry+tp2*Point,0);
Print("mo1");
}
}
}
}
for (y = 0; y < OrdersTotal(); y++) // Sync TPs
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if ((OrderMagicNumber() != magic) || (OrderType()!=OP_BUY) || (MathAbs(OrderTakeProfit()-ltp)<Point) || (OrderSymbol()!=Symbol())) { continue; }
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),ltp,0,Red);
Print("m1");
return;
}
}
if (cs>0) {
sumlot=0;
mp=0;
for (y = 0; y < OrdersTotal(); y++)
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL) || (OrderSymbol()!=Symbol())) { continue; }
lp=OrderOpenPrice();
ll=OrderLots();
ltp=OrderTakeProfit();
lopt=OrderOpenTime();
lticket=OrderTicket();
sumlot=sumlot+ll;
mp=mp+ll*lp;
}
mp=mp/sumlot;
if ((TimeCurrent()-TimeGrid>lopt) && (cs<MaxLevel)) {
if (Bid>lp) entry=NormalizeDouble(lp+(MathRound((-lp+Bid)/Point/g2)+1)*g2*Point,Digits); else entry=NormalizeDouble(lp+g2*Point,Digits);
if (Micro) lot2=NormalizeDouble(ll*Multiplier+LotInc,2); else lot2=NormalizeDouble(ll*Multiplier+LotInc,1);
if (csl==0) {
OrderSend(Symbol(),OP_SELLLIMIT,lot2,entry,0,0,entry-tp2*Point,TradeComment,magic);
Print("s4");
return;
}
if (csl==1) {
for (y = 0; y < OrdersTotal(); y++)
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_SELLLIMIT && OrderMagicNumber()==magic && (OrderSymbol()==Symbol()) && OrderOpenPrice()-entry>g2/2*Point) {
OrderModify(OrderTicket(),entry,OrderStopLoss(),entry-tp2*Point,0);
Print("mo2");
}
}
}
}
for (y = 0; y < OrdersTotal(); y++) // Sync TPs
{
OrderSelect (y, SELECT_BY_POS, MODE_TRADES);
if ((OrderMagicNumber() != magic) || (OrderType()!=OP_SELL) || (MathAbs(OrderTakeProfit()-ltp)<Point) || (OrderSymbol()!=Symbol())) { continue; }
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),ltp,0,Red);
Print("m2");
return;
}
}
return(0);
}
//+------------------------------------------------------------------+
//| expert end function |
//+------------------------------------------------------------------+
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
---