Price Data Components
Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Profitability Reports
AUD/USD
Oct 2024 - Jan 2025
104.00 %
Total Trades
45
Won Trades
0
Lost trades
0
Win Rate
0.00 %
Expected payoff
2.00
Gross Profit
2357.10
Gross Loss
-2267.10
Total Net Profit
90.00
-100%
-50%
0%
50%
100%
NZD/USD
Oct 2024 - Jan 2025
60.00 %
Total Trades
47
Won Trades
21
Lost trades
26
Win Rate
0.45 %
Expected payoff
-26.94
Gross Profit
1917.00
Gross Loss
-3183.30
Total Net Profit
-1266.30
-100%
-50%
0%
50%
100%
Executer_strong
//+------------------------------------------------------------------+
//| Executer_strong.mq4 |
//| Copyright © 2006, Alex Sidd (Executer) |
//| mailto:work_st@mail.ru |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Íåêîòîðûå "îáùåïîëåçíûå" ôóíêöèè êîäà, òðåéëèíã ñòîï, íàïðèìåð, |
//| áûëè ëþáåçíî ïîçàèìñòâîâàíû èç äðóãèõ ýêñïåðòîâ. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Alex Sidd (Executer)"
#property link "mailto:work_st@mail.ru"
//----
#define MAGIC 612457
//----
extern double lStopLoss = 40;
extern double sStopLoss =70;
extern double lTakeProfit = 130;
extern double sTakeProfit = 150;
extern double lTrailingStop = 60;
extern double sTrailingStop = 60;
extern double Lots = 0.90;
extern int a = 3;
extern double DecreaseFactor = 100;
extern double MaximumRisk = 0.025;
extern double MaximumLots = 100;
extern double percent = 0.1;
//----
int IsLastBuy = 0;
color clOpenBuy = Blue;
color clCloseBuy = Aqua;
color clOpenSell = Red;
color clCloseSell = Violet;
color clModiBuy = Blue;
color clModiSell = Red;
string Name_Expert = "Executer_Strong";
int Slippage = 0;
bool UseSound = True;
string NameFileSound = "alert.wav";
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool IsDayStrong()
{
double i = 0;
i = (High[1] - Low[1]);
if(Close[1] > (High[1] - (i*percent)) && Open[1] < (Low[1] + (i*percent)))
return(true);
else
return(false);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool IsDayLow()
{
double i = 0;
i = (High[1] - Low[1]);
if(Close[1] < (Low[1] + (i*percent)) && Open[1] > (High[1] - (i*percent)))
return(true);
else
return(false);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double GetSizeLot()
{
double Lot = Lots;/*
int cycle;
int prof = 0;
int orders = HistoryTotal(); // history orders total
int losses = 0; // number of losses orders without a break
int vinn = 0;
int i = orders;
//---- select lot size
Lot = NormalizeDouble(AccountFreeMargin()*MaximumRisk / 100, 1);
if(AccountFreeMargin() <= 10000 && AccountFreeMargin() > 5000) DecreaseFactor = NormalizeDouble(AccountFreeMargin()/100,1);
if(AccountFreeMargin() <= 5000 && AccountFreeMargin() > 3000) DecreaseFactor = NormalizeDouble(AccountFreeMargin()/200,1);
if(AccountFreeMargin() <= 14) DecreaseFactor = 14;
if(AccountFreeMargin() > 10000) DecreaseFactor = 60;
if(DecreaseFactor > 0&&orders>DecreaseFactor)
{
for(cycle = 1; cycle < DecreaseFactor; cycle++)
{
i--;
if(OrderSelect(i, SELECT_BY_TICKET, MODE_HISTORY) == false)
{
Print("Error in history!");
break;
}
if(OrderCloseTime()>0)
{
prof = prof + OrderProfit();
if(OrderProfit() <= 0 ) losses++;
else vinn++;
}
}
if(prof <= 0 ) Lot = 0.1;//Lot - (0.1*losses); //Lot = 0.1;//&& losses > vinn
// if(prof <=0 && vinn>losses) Lot = Lot - (0.1*losses);
if(prof > 0 && losses > vinn)
{
Lot = Lot + (0.1*NormalizeDouble(vinn/4,0.1));
}
if(prof > 0 && losses <= vinn )
{
Lot = Lot + (0.1*NormalizeDouble(vinn/2,0.1));
}
}
if(AccountFreeMargin()<300||Lot < 0.1) Lot = 0.1;
if(Lot*1275>=AccountFreeMargin()) Lot = NormalizeDouble(AccountFreeMargin()*MaximumRisk / 100, 1);
if(MaximumLots != 0 && Lot > MaximumLots) Lot = MaximumLots;
if(DecreaseFactor > orders) Lot = Lots;*/
return(Lot);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void deinit()
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
if(Bars < 100)
{
Print("bars less than 100");
return(0);
}
if(lStopLoss < 3)
{
Print("StopLoss less than 3");
return(0);
}
if(lTakeProfit < 3)
{
Print("TakeProfit less than 3");
return(0);
}
if(sStopLoss < 3)
{
Print("StopLoss less than 3");
return(0);
}
if(sTakeProfit < 3)
{
Print("TakeProfit less than 3");
return(0);
}
if(AccountFreeMargin() < (1000*Lots))
{
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if(!ExistPositions())
{
if(IsDayStrong() == true)
{
OpenBuy();
return(0);
}
if(IsDayLow() == true)
{
OpenSell();
return(0);
}
}
TrailingPositionsBuy(lTrailingStop);
TrailingPositionsSell(sTrailingStop);
return (0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool ExistPositions()
{
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
{
return(True);
}
}
}
return(false);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void TrailingPositionsBuy(int trailingStop)
{
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
{
if(OrderType() == OP_BUY)
{
if(TimeHour(Time[0]) - TimeHour(OrderOpenTime()) == 4)
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void TrailingPositionsSell(int trailingStop)
{
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
{
if(OrderType() == OP_SELL)
{
if(TimeHour(Time[0]) - TimeHour(OrderOpenTime()) == 4)
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);
}
}
}
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ModifyStopLoss(double ldStopLoss)
{
bool fm;
fm = OrderModify(OrderTicket(), OrderOpenPrice(), ldStopLoss, OrderTakeProfit(),
0, CLR_NONE);
if(fm && UseSound)
PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseBuy()
{
bool fc;
fc = OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, clCloseBuy);
if(fc && UseSound)
PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseSell()
{
bool fc;
fc = OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, clCloseSell);
if(fc && UseSound)
PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OpenBuy()
{
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossBuy();
ldTake = GetTakeProfitBuy();
lsComm = GetCommentForOrder();
OrderSend(Symbol(), OP_BUY,ldLot, High[1] + 0.0005, Slippage, ldStop, ldTake,
lsComm, MAGIC, 0, clOpenBuy);
if(UseSound)
PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void OpenSell()
{
double ldLot, ldStop, ldTake;
string lsComm;
ldLot = GetSizeLot();
ldStop = GetStopLossSell();
ldTake = GetTakeProfitSell();
lsComm = GetCommentForOrder();
OrderSend(Symbol(), OP_SELL, ldLot, Low[1] - 0.0005, Slippage, ldStop, ldTake,
lsComm, MAGIC, 0,clOpenSell);
if(UseSound)
PlaySound(NameFileSound);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
string GetCommentForOrder()
{
return(Name_Expert);
}
//double GetSizeLot() { return(Lots); }
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double GetStopLossBuy()
{
return(High[1] - ((High[1] - Low[1]) / 2) - 0.0005);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double GetStopLossSell()
{
return(High[1] - ((High[1] - Low[1]) / 2) + 0.0005);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double GetTakeProfitBuy()
{
return(Ask + lTakeProfit*Point);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double GetTakeProfitSell()
{
return(Bid - sTakeProfit*Point);
}
//+------------------------------------------------------------------+
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
---