Orders Execution
0
Views
0
Downloads
0
Favorites
Profitability Reports
GBP/USD
Oct 2024 - Jan 2025
83.00 %
Total Trades
232
Won Trades
119
Lost trades
113
Win Rate
0.51 %
Expected payoff
-2.37
Gross Profit
2622.00
Gross Loss
-3171.48
Total Net Profit
-549.48
-100%
-50%
0%
50%
100%
HlopMaster_2.6
#property copyright "FORTRADER.RU, Þðèé, ftyuriy@gmail.com, modified by Evgeniy Trofimov"
#property link "http://FORTRADER.RU, Price"
//+------------------------------------------------------------------+
//Ïàðàìåòðû äëÿ EURUSD M30 (íà÷àëüíûé äåïîçèò 500000 ðóá) ñ÷¸ò - Classic
extern int pips=250;
extern int profitpips=250;
extern double Lots=0.04; // - ôèêñèðîâàííûé ëîò
extern double RISK=0.02; // - Money Managment (ðèñê ïðè Lots=0.00)
extern double MinMargin=1000.00; // - ìèíèìàëüíûé óðîâåíü ìàðæè â ïðîöåíòàõ
extern double MaximumLoss=5000; // - ìàêñèìàëüíûé óáûòîê â âàëþòå äåïîçèòà
extern double MaximumProfit=200; // - ìàêñèìàëüíàÿ ïðèáûëü
extern double LimitLot=0.64; // - êðèòè÷åñêèé îáú¸ì îòêðûòûõ ñäåëîê
extern double LimitCountOrders= 0;// - êðèòè÷åñêîå êîëè÷åñòâî îòêðûòûõ ñäåëîê
extern int LimitDeltaTick=0; // - ìîäåëèðîâàíèå êîíòðîëüíûõ òî÷åê
//+------------------------------------------------------------------+
static datetime LastTime;
static double LastAsk;
static int Slippage=30;
static double round;
//+------------------------------------------------------------------+
int init() {
round = MathAbs(MathLog(MarketInfo(Symbol(), MODE_LOTSTEP))/MathLog(10.0))+0.5; //êîýôôèöèåíò îêðóãëåíèÿ ëîòà
return(0);
}
//+------------------------------------------------------------------+
int SL=0;
int TP=0;
int err;
int start() {
if(MathAbs(Ask-LastAsk)>LimitDeltaTick) {
LastAsk=Ask;
CheckGameOver();
}
if(LastTime==Time[0]) return(0);
LastTime=Time[0];
if(!OrdersExist()) {
err=OpenNewOrders();
}else{
TrailStopOrders();
}
if(CountPos(0)==0 && CountPos(1)==0 && ChStopPosLimitSumm()<2){
_DeleteOrder();
}
if(ChStopPosLimitSumm()<1){
if(ProcentMargin()<MinMargin || TotalLots()+GetMaxLot()*2>LimitLot){
_DeleteOrder();
CloseAllPozitions();
} else {
DopOrder(GetMaxLot()*2);
}
}
err=CloseManager();
return(0);
}//start()
//+------------------------------------------------------------------+
double op,sl,tp;
int OpenNewOrders(){
int err;
op=Ask-pips*Point;if(SL>0){sl=Ask;}else{sl=0;}if(TP>0){tp=op-TP*Point;}else{tp=0;}
err=OrderSend(Symbol(),OP_SELLSTOP,GetLots(),NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"",0,0,Red);
if(err<0){
Print("OrderSend()- Îøèáêà OP_SELLSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);
LastTime=Time[1];
}
op=Bid+pips*Point;if(SL>0){sl=Bid;}else{sl=0;}if(TP>0){tp=op+TP*Point;}else{tp=0;}
err=OrderSend(Symbol(),OP_BUYSTOP,GetLots(),NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"",0,0,Red);
if(err<0){
Print("OrderSend()- Îøèáêà OP_BUYSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1);
LastTime=Time[1];
}
return(err);
}//OpenNewOrders()
//+------------------------------------------------------------------+
int TrailStopOrders() {
int i;bool err;
for(i=1; i<=OrdersTotal(); i++) {
if(OrderSelect(i-1,SELECT_BY_POS)==true) {
if( OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && (OrderOpenPrice()-Bid)>pips*Point) {
err=OrderModify(OrderTicket(),Bid+pips*Point,OrderStopLoss(),OrderTakeProfit(),0,Green);
if(err==false){
LastTime=Time[1];
return(-1);
}
}//if(OrderType()==OP_BUYSTOP
}//if(OrderSelect(i-1,SEL
if(OrderSelect(i-1,SELECT_BY_POS)==true) {
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && (Ask-OrderOpenPrice())>pips*Point) {
err=OrderModify(OrderTicket(),Ask-pips*Point,OrderStopLoss(),OrderTakeProfit(),0,Green);
if(err==false){
LastTime=Time[1];
return(-1);
}
}//if(OrderType()==OP_SELLSTOP
}//if(OrderSelect(i-1,
}// for( i=1; i<=O
return(0);
}//TrailStopOrders()
//+------------------------------------------------------------------+
int CountPos(int type) {
int i,b,s;
for( i=1; i<=OrdersTotal(); i++) {
if(OrderSelect(i-1,SELECT_BY_POS)==true) {
if(OrderType()==OP_BUY && OrderSymbol()==Symbol()){b=b+1;}
if(OrderType()==OP_SELL && OrderSymbol()==Symbol()){s=s+1;}
}
}
if(type==0){return(s);}
if(type==1){return(b);}
}//CountPos()
//+------------------------------------------------------------------+
int ChStopPosLimitSumm() {
int i,z;
for( i=1; i<=OrdersTotal(); i++) {
if(OrderSelect(i-1,SELECT_BY_POS)==true) {
if(OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP ){z=z+1;}
}
}
return(z);
}//ChStopPosLimitSumm()
//+------------------------------------------------------------------+
int _DeleteOrder() {
//Óäàëåíèå âñåõ îòëîæåííûõ îðäåðîâ
for(int i=1; i<=OrdersTotal(); i++) {
if(OrderSelect(i-1,SELECT_BY_POS)==true) {
if(OrderType()>3 && OrderSymbol()==Symbol()) {
OrderDelete(OrderTicket());
}//if
}//if
}//Next i
return(0);
}//_DeleteOrder()
//+------------------------------------------------------------------+
int CloseManager() {
//Çàêðûòèå âñåõ ïîçèöèé è îòëîæåííûõ îðäåðîâ,
//åñëè â ñäåëêå ñ ìàêñèìàëüíûì ëîòîì âåëè÷èíà
//ïðîôèòíûõ ïóíêòîâ äîñòèãëà óêàçàííîé ãðàíèöû
int err;
double maxlot=GetMaxLot();
for(int i=1; i<=OrdersTotal(); i++) {
if(OrderSelect(i-1,SELECT_BY_POS)) {
if(OrderSymbol()==Symbol()) {
if(OrderLots()==maxlot) {
if(OrderType()==OP_SELL && ((OrderOpenPrice()-Ask)>profitpips*Point)) {
_DeleteOrder();
CloseAllPozitions();
}//if
if(OrderType()==OP_BUY && ((Bid-OrderOpenPrice())>profitpips*Point)) {
_DeleteOrder();
CloseAllPozitions();
}//if
}//if(OrderLots()==maxlot)
}//if(OrderSymbol()==Symbol())
}//if
}//Next i
return(err);
}//CloseManager()
//+------------------------------------------------------------------+
double GetMaxLot() {
//Ôóíêöèÿ âîçâðàùàåò ðàçìåð ìàêñèìàëüíîãî ëîòà,
//íàéäåííîãî ñðåäè îòêðûòûõ ïîçèöèé
int i; double maxlot;
for(i=1; i<=OrdersTotal(); i++) {
if(OrderSelect(i-1,SELECT_BY_POS)) {
if(OrderType()<2 && OrderSymbol()==Symbol()) {
if(maxlot<OrderLots()) {
maxlot=OrderLots();
}
}
}
}
return(maxlot);
}//GetMaxLot()
//+------------------------------------------------------------------+
int GetLastTypePos() {
//Ôóíêöèÿ âîçâðàùàåò òèï ïîñëåäíåé îòêðûòîé ïîçèöèè
int i; datetime dt; int type;
for( i=1; i<=OrdersTotal(); i++) {
if(OrderSelect(i-1,SELECT_BY_POS)==true) {
if(OrderType()<2 && OrderSymbol()==Symbol()) {
if(dt<OrderOpenTime()){
dt=OrderOpenTime();
type=OrderType();
}
}
}//
}//Next i
return(type);
}//GetLastTypePos()
//+------------------------------------------------------------------+
int DopOrder(double Lots) {
//Ôóíêöèÿ âûñòàâëÿåò îòëîæåííûé îðäåð, íà ïðîäàæó,
//åñëè ïîñëåäíÿÿ îòêðûòàÿ ñäåëêà - ïîêóïàåò
//è íàîáîðîò
int type=GetLastTypePos();
if(type==OP_SELL){
op=Bid+pips*Point;
if(SL>0){sl=Bid;} else {sl=0;}
if(TP>0){tp=op+TP*Point;} else {tp=0;}
err=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"",0,0,Red);
if(err<0){
LastTime=Time[1];
Print("OrderSend()- Îøèáêà OP_BUYSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());
return(-1);
}
} else if(type==OP_BUY) {
op=Ask-pips*Point;
if(SL>0){sl=Ask;} else {sl=0;}
if(TP>0){tp=op-TP*Point;} else {tp=0;}
err=OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits),NormalizeDouble(tp,Digits),"",0,0,Red);
if(err<0){
LastTime=Time[1];
Print("OrderSend()- Îøèáêà OP_SELLSTOP. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());
return(-1);
}
}
return(0);
}//DopOrder()
//+------------------------------------------------------------------+
int CloseAllPozitions() {
double PriceClose;
int total = OrdersTotal();
for (int i = total-1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol()==Symbol()) {
if(OrderType()==OP_BUY) {
PriceClose=Bid;
} else if(OrderType()==OP_SELL) {
PriceClose=Ask;
}
if(!OrderClose(OrderTicket(),OrderLots(),PriceClose,Slippage)) {
Print("Ñòàâêà ",OrderTicket()," íå çàêðûâàåòñÿ ïî ïðè÷èíå îøèáêè ¹ ",GetLastError());
LastTime=Time[1];
}
} // Åñëè ñâîé
} // Next i
return(0);
}//CloseAllPozitions()
//+------------------------------------------------------------------+
bool OrdersExist() {
//Ôóíêöèÿ âîçâðàùàåò true, åñëè êîëè÷åñòâî îðäåðîâ íà òåêóùåì èíñòðóìåíòå > 0
int total = OrdersTotal();
for (int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
return(true);
}
}
return(false);
}//OrdersExist()
//+------------------------------------------------------------------+
int WorkOrdersCount() {
//Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî îòêðûòûõ ïîçèöèé íà òåêóùåì èíñòðóìåíòå
int j=0;
int total = OrdersTotal();
for (int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol()) {
if(OrderType()<2) j++;
}
}
return(j);
}//WorkOrdersCount()
//+------------------------------------------------------------------+
double TotalLots(){
//Ôóíêöèÿ âîçâðàùàåò îòêðûòûé îáúåì âñåõ ñäåëîê ïî òåêóùåìó èíñòðóìåíòó
double j;
int total = OrdersTotal();
for (int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol()) {
if(OrderType()<2) {
j=j+OrderLots();
}
}
}
return(j);
}//TotalLots()
//+------------------------------------------------------------------+
double ProfitTotal() {
//Ôóíêöèÿ âîçâðàùàåò ïðèáûëü ïî òåêóùåìó èíñòðóìåíòó
double j=0.0;
int total = OrdersTotal();
for (int i = 0; i < total; i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol()) {
if(OrderType()<2) j=j+OrderProfit();
}
}
return(j);
}//ProfitTotal()
//+------------------------------------------------------------------+
int CheckGameOver() {
//Ôóíêöèÿ "Game Over" èëè "Ñëàâà áîãó" çàêðûâàåò âñå ñäåëêè, åñëè...
//...èìååòñÿ ïðèáûëü
if(WorkOrdersCount()>LimitCountOrders) {
if(ProfitTotal()>MaximumProfit) {
_DeleteOrder();
CloseAllPozitions();
}
}
//...îáùèé óáûòîê ïî âñåì ñäåëêàì âûðîñ âûøå íàçíà÷åííîé íîðìû ìàêñèìàëüíîãî óáûòêà
if(ProfitTotal()<-MaximumLoss) {
_DeleteOrder();
CloseAllPozitions();
}
return(0);
}//CheckGameOver()
//+------------------------------------------------------------------+
double GetLots() {
int limitPipsLoss=10000; // - êîëè÷åñòâî ïóíêòîâ ìàêñèìàëüíîé ïðîñàäêè
double lot, result;
double MINLOTS, MAXLOTS, LOTVAL;
MINLOTS = MarketInfo(Symbol(), MODE_MINLOT);
MAXLOTS = AccountFreeMargin()*0.50/MarketInfo(Symbol(),MODE_MARGINREQUIRED); // 50% îò ìàðæè
if(MAXLOTS>MarketInfo(Symbol(), MODE_MAXLOT)) MAXLOTS = MarketInfo(Symbol(), MODE_MAXLOT);
LOTVAL = MarketInfo(Symbol(), MODE_TICKVALUE);
if(Lots == 0)
lot = NormalizeDouble(AccountFreeMargin() * RISK / (limitPipsLoss * LOTVAL), round);
else {
lot = Lots;
return(lot);
}
if(lot < MINLOTS) {
lot=MINLOTS;
Print("Íåäîñòàòî÷íî ñðåäñòâ íà ñ÷¸òå.");
} else if(lot > MAXLOTS) {
lot = MAXLOTS;
}
return(lot);
}//GetLots()
//+------------------------------------------------------------------+
double ProcentMargin() {
double P = AccountEquity()*100/MarketInfo(Symbol(), MODE_MARGINREQUIRED);
//Print("Óðîâåíü ìàðæè: ", P, " %");
return(P);
}//ProcentMargin()
//+------------------------------------------------------------------+
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
---