Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
Salvation_2time-percentf
//+------------------------------------------------------------------+
//| Salvation.mq4 |
//| ÏÎ ÇÀÊÀÇÓ ôÓÐÑÎÂÀ À.Í.|
//| fan_2005@list.ru |
//| 20.04.10 |
//+------------------------------------------------------------------+
#property copyright "MrExpertForex"
#property link "ÏÎ ÇÀÊÀÇÓ ôÓÐÑÎÂÀ À.Í."
//+------------------------------------------------------------------+
extern string s15 = "Âðåìÿ ðàáîòû";
extern int HourStart = 0;
extern int MinuteStart = 0;
extern int HourEnd = 23;
extern int MinuteEnd = 59;
extern string s14 = "Çàêðûòèå ïî ïðîöåíòó";
extern double CloseProfitPercent = 1;
extern string s16 = "Èíô-èÿ ïî ñäåëêàì";
extern int LowPercent = 33;
extern int MedPercent = 66;
extern int MaxPercent = 100;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÎÁÙÈÕ ÍÀÑÒÐÎÅÊ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.0 = "ÁËÎÊ ÄËß ÎÁÙÈÕ ÍÀÑÒÐÎÅÊ";
//~~~~~~~~
extern int ÌÀÃÈÊ. = 200410;// ìàãè÷åñêèé íîìåð îðäåðîâ
//Ìîæåò èñïîëüçîâàòüñÿ êàê îïðåäåëÿåìûé ïîëüçîâàòåëåì èäåíòèôèêàòîð.
//äëÿ êàæäîãî ãðàôèêà çàäàâàéòå óíèêàëüíûé
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß 1-ÎÉ ËÈÍÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.1 = "ÁËÎÊ ÄËß 1-ÎÉ ËÈÍÈÈ";
//~~~~~~~~
extern string ÈÌß.ËÈÍÈÈ.1 = "1";// èìÿ ëèíèè, åñëè ðàâíî ïóñòàòå çíà÷èò íå èñïîëüçóåì
extern int ÍÀÏÐÀÂËÅÍÈÅ.1 = 1;// â êàêóþ ñòîðîíó âûñòàâëÿòü îðäåðà
// 1 ââåðõ, -1 âíèçå
extern int ÒÈÏ.1 = 3;// òèïû:
//2 - BUYLIMIT
//3 - SELLLIMIT
//4 - BUYSTOP
//5 - SELLSTOP
extern int ÊÎËÈ×ÅÑÒÂÎ.1 = 5;
extern int ÎÒÑÒÓÏ.1 = 20;//â ïóíêòàõ
extern int ØÀÃ.1 = 100;//â ïóíêòàõ
extern int ÑÒÎÏ.ËÎÑÑ.1 = 0;//â ïóíêòàõ
extern int ÒÅÉÊ.ÏÐÎÔÈÒ.1 = 200;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß 2-ÎÉ ËÈÍÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.2 = "ÁËÎÊ ÄËß 2-ÎÉ ËÈÍÈÈ";
//~~~~~~~~
extern string ÈÌß.ËÈÍÈÈ.2 = "2";// èìÿ ëèíèè, åñëè ðàâíî ïóñòàòå çíà÷èò íå èñïîëüçóåì
extern int ÍÀÏÐÀÂËÅÍÈÅ.2 = -1;// â êàêóþ ñòîðîíó âûñòàâëÿòü îðäåðà
// 1 ââåðõ, -1 âíèçå
extern int ÒÈÏ.2 = 2;// òèïû:
//2 - BUYLIMIT
//3 - BUYSTOP
//4 - SELLLIMIT
//5 - SELLSTOP
extern int ÊÎËÈ×ÅÑÒÂÎ.2 = 5;
extern int ÎÒÑÒÓÏ.2 = 200;//â ïóíêòàõ
extern int ØÀÃ.2 = 100;//â ïóíêòàõ
extern int ÑÒÎÏ.ËÎÑÑ.2 = 0;//â ïóíêòàõ
extern int ÒÅÉÊ.ÏÐÎÔÈÒ.2 = 200;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß 3-ÎÉ ËÈÍÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.3 = "ÁËÎÊ ÄËß 3-ÎÉ ËÈÍÈÈ";
//~~~~~~~~
extern string ÈÌß.ËÈÍÈÈ.3 = "";// èìÿ ëèíèè, åñëè ðàâíî ïóñòàòå çíà÷èò íå èñïîëüçóåì
extern int ÍÀÏÐÀÂËÅÍÈÅ.3 = 1;// â êàêóþ ñòîðîíó âûñòàâëÿòü îðäåðà
// 1 ââåðõ, -1 âíèçå
extern int ÒÈÏ.3 = 3;// òèïû:
//2 - BUYLIMIT
//3 - BUYSTOP
//4 - SELLLIMIT
//5 - SELLSTOP
extern int ÊÎËÈ×ÅÑÒÂÎ.3 = 10;
extern int ÎÒÑÒÓÏ.3 = 50;//â ïóíêòàõ
extern int ØÀÃ.3 = 120;//â ïóíêòàõ
extern int ÑÒÎÏ.ËÎÑÑ.3 = 0;//â ïóíêòàõ
extern int ÒÅÉÊ.ÏÐÎÔÈÒ.3 = 0;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß 4-ÎÉ ËÈÍÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.4 = "ÁËÎÊ ÄËß 4-ÎÉ ËÈÍÈÈ";
//~~~~~~~~
extern string ÈÌß.ËÈÍÈÈ.4 = "";// èìÿ ëèíèè, åñëè ðàâíî ïóñòàòå çíà÷èò íå èñïîëüçóåì
extern int ÍÀÏÐÀÂËÅÍÈÅ.4 = 1;// â êàêóþ ñòîðîíó âûñòàâëÿòü îðäåðà
// 1 ââåðõ, -1 âíèçå
extern int ÒÈÏ.4 = 4;// òèïû:
//2 - BUYLIMIT
//3 - BUYSTOP
//4 - SELLLIMIT
//5 - SELLSTOP
extern int ÊÎËÈ×ÅÑÒÂÎ.4 = 10;
extern int ÎÒÑÒÓÏ.4 = 50;//â ïóíêòàõ
extern int ØÀÃ.4 = 120;//â ïóíêòàõ
extern int ÑÒÎÏ.ËÎÑÑ.4 = 0;//â ïóíêòàõ
extern int ÒÅÉÊ.ÏÐÎÔÈÒ.4 = 0;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒÊÐÛÒÕ ÎÐÄÅÐÎÂ ÍÀ BUY
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.5 = "ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒÊÐÛÒÕ ÎÐÄÅÐÎÂ ÍÀ BUY";
//~~~~~~~~
extern bool ÒÐÀË.BUY = false;//TRUE - âêëþ÷èòü, FALSE - âûêëþ÷èòü
extern int ÒÐÀË.BUY.ÑÒÎÏ. = 28;//â ïóíêòàõ
extern int ÒÐÀË.BUY.ØÀÃ. = 1;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒÊÐÛÒÕ ÎÐÄÅÐÎÂ ÍÀ SELL
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.6 = "ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒÊÐÛÒÕ ÎÐÄÅÐÎÂ ÍÀ SELL";
//~~~~~~~~
extern bool ÒÐÀË.SELL = false;//TRUE - âêëþ÷èòü, FALSE - âûêëþ÷èòü
extern int ÒÐÀË.SELL.ÑÒÎÏ. = 28;//â ïóíêòàõ
extern int ÒÐÀË.SELL.ØÀÃ. = 1;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒËÎÆÍÈÊÎÂ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.7 = "ÁËÎÊ ÄËß ÒÐÀËÀ ÎÒËÎÆÍÈÊÎÂ";
//~~~~~~~~
extern bool ÒÐÀË.ÎÒËÎÆÍÈÊÈ. = TRUE;//TRUE - âêëþ÷èòü, FALSE - âûêëþ÷èòü
extern int ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ. = 29;//â ïóíêòàõ
extern int ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ. = 1;//â ïóíêòàõ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÎÐÄÅÐÎÂ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.8 = "ÁËÎÊ ÄËß ÎÐÄÅÐÎÂ";
//~~~~~~~~
//extern double ÎÁÚÅÌ. = 0.01;// ðàçìåð ëîòà
extern int ÑËÈÏÏÅÄÆ. = 0;//(íå âàæíûé) Ìàêñèìàëüíî äîïóñòèìîå îòêëîíåíèå öåíû äëÿ ðûíî÷íûõ îðäåðîâ (îðäåðîâ íà ïîêóïêó èëè ïðîäàæó).
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 1-ÎÉ Ô-ÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.9 = "ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 1-ÎÉ Ô-ÈÈ";
//~~~~~~~~
extern double MARGIN_CALL_PERCENT_ = 30;// Óðîâåíü â %
extern int MARGIN_CALL_COLOR_ = Blue;// öâåò ëèíèè
extern int MARGIN_CALL_STYLE_ = 0;// ñòèëü ëèíèè
extern int MARGIN_CALL_WIDTH_ = 3;// øèðèíà ëèíèè
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 2-ÎÉ Ô-ÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.10 = "ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 2-ÎÉ Ô-ÈÈ";
//~~~~~~~~
extern double VOLUME_LOT_PERCENT_ = 0.01;// ÎÒÊÐÛÂÀÅÌÛÉ ËÎÒ Â % ÎÒ ÑÂÎÁÎÄÍÛÕ ÑÐÅÄÑÒÂ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 3-ÅÉ Ô-ÈÈ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
extern string ÁËÎÊ.11 = "ÁËÎÊ ÄËß ÄÎÏÎËÍÈÒÅËÜÍÎÉ 3-ÅÉ Ô-ÈÈ";
//~~~~~~~~
extern string SOUND_ = "";//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//===========================================
int init()
//===========================================
{
//<<<<<<<<<<<<<<
//******************************************
// ÄÎÏÎËÍÈÒÅËÜÍÀß 3ßß ÔÓÍÊÖÈß
//******************************************1
ALERT_OPEN_AN_CLOSE(SOUND_);
//******************************************1
//>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
int start()
//===========================================
{
//<<<<<<<<<<<<<<
int Magic = ÌÀÃÈÊ.;
int Slippage = ÑËÈÏÏÅÄÆ.;
datetime DTA = D'1999.01.01';
double ProfitMax,ProfitMin,ProfitPM,ProfitLM,ProfitP,ProfitL;
int OPL,OPP;
int iii,O,OB,OS,OBS,OBL,OSS,OSL,Cmd,NS,NT,pl,TimeMode,TimeStart,TimeEnd,TimeCur;
double X,Bal,p,Lot,PriceOpen,PriceClose,PriceModify,PriceModifyTP,SL,TP,Profit_T_Min,Profit,Profit_H,Dist,DDist_BL,DDist_BS,DDist_SL,DDist_SS;
double OPMin,OPMed,OPMax,OSMin,OSMed,OSMax;
TimeStart = HourStart * 60 + MinuteStart;
TimeEnd = HourEnd * 60 + MinuteEnd;
TimeCur = Hour() * 60 + Minute();
TimeMode = 0;
p = Point;
if (Digits == 5 || Digits == 3)
p = Point * 10;
if (TimeStart < TimeEnd)
if (TimeCur >= TimeStart && TimeCur < TimeEnd)
TimeMode = 1;
if (TimeStart > TimeEnd)
if (TimeCur >= TimeStart || TimeCur < TimeEnd)
TimeMode = 1;
if (TimeStart < TimeEnd)
if (TimeCur < TimeStart || TimeCur > TimeEnd)
TimeMode = 0;
if (TimeStart > TimeEnd)
if (TimeCur < TimeStart && TimeCur > TimeEnd)
TimeMode = 0;
if (TimeStart == TimeEnd) TimeMode = 1;
for ( iii=OrdersHistoryTotal()-1; iii>=0; iii--)
if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
if (OrderMagicNumber() == Magic)
if (OrderSymbol() == Symbol())
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if (OrderClosePrice() < OrderStopLoss() - Slippage * p || OrderClosePrice() > OrderStopLoss() + Slippage * p)
if (OrderClosePrice() < OrderTakeProfit() - Slippage * p || OrderClosePrice() > OrderTakeProfit() + Slippage * p)
{
DTA = OrderCloseTime();
iii = -1;
}
}
if (TimeDay(DTA) == Day())
if (TimeHour(DTA) * 60 + TimeMinute(DTA) > TimeStart)
TimeMode = 0;
/* if (TimeStart < TimeEnd)
if (TimeHour(DTA) * 60 + TimeMinute(DTA) > TimeStart && TimeHour(DTA) * 60 + TimeMinute(DTA) < TimeEnd)
TimeMode = 0;
if (TimeStart > TimeEnd)
if ((TimeHour(DTA) * 60 + TimeMinute(DTA) > TimeStart && TimeHour(DTA) * 60 + TimeMinute(DTA) < 23*60 + 59) || (TimeHour(DTA) * 60 + TimeMinute(DTA) > 0 && TimeHour(DTA) * 60 + TimeMinute(DTA) < TimeEnd))
TimeMode = 0;
*/
if (TimeMode == 0)
{
for (iii=OrdersTotal()-1; iii>=0; iii--)
if (OrderSelect(iii,SELECT_BY_POS,MODE_TRADES))
if (OrderMagicNumber() == Magic)
if (OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP)
OrderDelete(OrderTicket(),CLR_NONE);
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if (OrderType() == OP_BUY) PriceClose = Bid;
if (OrderType() == OP_SELL) PriceClose = Ask;
OrderClose(OrderTicket(),OrderLots(),PriceClose,Slippage,CLR_NONE);
}
}
}
ProfitMin = 0;
for ( iii=0; iii<OrdersHistoryTotal(); iii++)
if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
if (OrderMagicNumber() == Magic)
if (OrderSymbol() == Symbol())
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if (OrderProfit() > 0)
{
if (OrderProfit() > ProfitMax) ProfitMax = OrderProfit();
ProfitP += OrderProfit();
OPP += 1;
}
if (OrderProfit() < 0)
{
if (OrderProfit() < ProfitMin) ProfitMin = OrderProfit();
ProfitL += OrderProfit();
OPL += OrderProfit();
}
}
if (OPP > 0) ProfitPM = ProfitP / OPP;
if (OPL > 0) ProfitLM = ProfitL / OPL;
for ( iii=0; iii<OrdersHistoryTotal(); iii++)
if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
if (OrderMagicNumber() == Magic)
if (OrderSymbol() == Symbol())
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if (OrderProfit() > 0)
{
if (OrderProfit() > 0 && OrderProfit() <= ProfitMax * LowPercent * 0.01)
OPMin += 1;
if (OrderProfit() > ProfitMax * LowPercent * 0.01 && OrderProfit() <= ProfitMax * MedPercent * 0.01)
OPMed += 1;
if (OrderProfit() > ProfitMax * MedPercent * 0.01 && OrderProfit() <= ProfitMax * MaxPercent * 0.01)
OPMax += 1;
}
if (OrderProfit() < 0)
{
if (OrderProfit() < 0 && OrderProfit() >= ProfitMin * LowPercent * 0.01)
OSMin += 1;
if (OrderProfit() < ProfitMin * LowPercent * 0.01 && OrderProfit() >= ProfitMin * MedPercent * 0.01)
OSMed += 1;
if (OrderProfit() < ProfitMin * MedPercent * 0.01 && OrderProfit() >= ProfitMin * MaxPercent * 0.01)
OSMax += 1;
}
}
ObjectCreate("1", OBJ_LABEL, 0, 0, 0);
ObjectSetText("1", "Âðåìÿ ðàáîòû ñ "+DoubleToStr(HourStart,0)+":"+DoubleToStr(MinuteStart,0)+" äî "+DoubleToStr(HourEnd,0)+":"+DoubleToStr(MinuteEnd,0), 9, "System", White);
ObjectSet("1", OBJPROP_CORNER, 0);
ObjectSet("1", OBJPROP_XDISTANCE, 50);
ObjectSet("1", OBJPROP_YDISTANCE, 50);
ObjectSetText("2", "Ïðîôèò = "+DoubleToStr(Profit,1)+" %", 9, "System", White);
ObjectSet("2", OBJPROP_CORNER, 0);
ObjectSet("2", OBJPROP_XDISTANCE, 50);
ObjectSet("2", OBJPROP_YDISTANCE, 90);
ObjectCreate("2", OBJ_LABEL, 0, 0, 0);
ObjectCreate("4", OBJ_LABEL, 0, 0, 0);
ObjectSetText("4","Equity = " + DoubleToStr(AccountEquity(),2) + " Balance = " + DoubleToStr(AccountBalance(),2), 9, "System", White);
ObjectSet("4", OBJPROP_CORNER, 0);
ObjectSet("4", OBJPROP_XDISTANCE, 50);
ObjectSet("4", OBJPROP_YDISTANCE, 110);
ObjectCreate("5", OBJ_LABEL, 0, 0, 0);
ObjectSetText("5","Èíô-èÿ ïî óáûòî÷íûì: Ìàêñèìàëüíàÿ = " + DoubleToStr(ProfitMin,2), 9, "System", White);
ObjectSet("5", OBJPROP_CORNER, 0);
ObjectSet("5", OBJPROP_XDISTANCE, 50);
ObjectSet("5", OBJPROP_YDISTANCE, 130);
ObjectCreate("6", OBJ_LABEL, 0, 0, 0);
ObjectSetText("6","Ìèí: " + DoubleToStr(OSMin,0) + " Ñðåä: " + DoubleToStr(OSMed,0) + " Ìàêñ: " + DoubleToStr(OSMax,0), 9, "System", White);
ObjectSet("6", OBJPROP_CORNER, 0);
ObjectSet("6", OBJPROP_XDISTANCE, 50);
ObjectSet("6", OBJPROP_YDISTANCE, 150);
ObjectCreate("7", OBJ_LABEL, 0, 0, 0);
ObjectSetText("7","Èíô-èÿ ïî ïðèáûëüíûì: Ìàêñèìàëüíàÿ = " + DoubleToStr(ProfitMax,2), 9, "System", White);
ObjectSet("7", OBJPROP_CORNER, 0);
ObjectSet("7", OBJPROP_XDISTANCE, 50);
ObjectSet("7", OBJPROP_YDISTANCE, 170);
ObjectCreate("8", OBJ_LABEL, 0, 0, 0);
ObjectSetText("8","Ìèí: " + DoubleToStr(OPMin,0) + " Ñðåä: " + DoubleToStr(OPMed,0) + " Ìàêñ: " + DoubleToStr(OPMax,0), 9, "System", White);
ObjectSet("8", OBJPROP_CORNER, 0);
ObjectSet("8", OBJPROP_XDISTANCE, 50);
ObjectSet("8", OBJPROP_YDISTANCE, 190);
if (TimeMode == 1)
{
//==============
Profit_H = 0;
Profit = 0;
/*
for ( iii=OrdersHistoryTotal()-1; iii>=0; iii--)
if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
if (OrderMagicNumber() == Magic)
if (OrderSymbol() == Symbol())
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if (OrderClosePrice() < OrderStopLoss() - Slippage * p || OrderClosePrice() > OrderStopLoss() + Slippage * p)
if (OrderClosePrice() < OrderTakeProfit() - Slippage * p || OrderClosePrice() > OrderTakeProfit() + Slippage * p)
{
DTA = OrderCloseTime();
iii = -1;
}
}
*/
Profit_H = 0;
for ( iii=0; iii<OrdersHistoryTotal(); iii++)
if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
if (OrderMagicNumber() == Magic)
if (OrderSymbol() == Symbol())
if (OrderOpenTime() >= DTA)
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
Profit_H += OrderProfit();
}
Bal = 0;
Bal = (AccountBalance() - Profit_H) + (AccountBalance() - Profit_H) * CloseProfitPercent * 0.01;
Profit = (AccountEquity() / AccountBalance() - Profit_H) * 100 - 100;
ObjectCreate("3", OBJ_LABEL, 0, 0, 0);
ObjectSetText("3","Óðîâåíü çàêðûòèÿ = " + DoubleToStr(Bal,2), 9, "System", White);
ObjectSet("3", OBJPROP_CORNER, 0);
ObjectSet("3", OBJPROP_XDISTANCE, 50);
ObjectSet("3", OBJPROP_YDISTANCE, 70);
if (OrdersTotal() > 0)
if (CloseProfitPercent > 0 && AccountEquity() >= Bal)
{
for (iii=OrdersTotal()-1; iii>=0; iii--)
if (OrderSelect(iii,SELECT_BY_POS,MODE_TRADES))
if (OrderMagicNumber() == Magic)
if (OrderSymbol() == Symbol())
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if (OrderType() == OP_BUY) PriceClose = Bid;
if (OrderType() == OP_SELL) PriceClose = Ask;
OrderClose(OrderTicket(),OrderLots(),PriceClose,Slippage,CLR_NONE);
if (OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP || OrderType() == OP_SELLLIMIT || OrderType() == OP_SELLSTOP)
OrderDelete(OrderTicket(),CLR_NONE);
}
}
//================
Profit_H = 0;
DTA = Year() * Day();
for ( iii=0; iii<OrdersHistoryTotal(); iii++)
if (OrderSelect(iii,SELECT_BY_POS,MODE_HISTORY))
if (OrderMagicNumber() == Magic)
if (OrderSymbol() == Symbol())
if (OrderOpenTime() >= DTA)
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
Profit_H += OrderProfit();
}
//if (AccountBalance() - Profit_H < AccountBalance() * CloseProfitPercent * 0.01)
ÏÐÀÊÒÈÊÀ();
}
//>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
int deinit()
//===========================================
{
//<<<<<<<<<<<<<<
//>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//==========================================================================================================
void CONTROL_AT_MARGIN_CALL(string symbol, double level_the_equity, color color_1, int style_1, int width_1)
//==========================================================================================================
{
//<<<<<<<<<<<<<<
if(symbol == "")
symbol = Symbol();
//---
double Equity_static = AccountEquity();
double Equity = AccountEquity();
//---
bool Create = false;
bool Modify = false;
bool Delete = false;
//---
double Lots = 0;
double Delta = 0;
//---
double Profit_buy = 0;
double Profit_sell = 0;
//---
double Value_point_minlot = MarketInfo(symbol, MODE_TICKVALUE) / (1.0 / MarketInfo(symbol, MODE_MINLOT));
//---
if(OrdersTotal()>0)
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==symbol)
{
if(OrderType()==OP_BUY)
{
Lots += OrderLots();
//---
Profit_buy += OrderProfit();
}
//---
if(OrderType()==OP_SELL)
{
Lots -= OrderLots();
//---
Profit_sell += OrderProfit();
}
}
}
}
}
//---
if(ObjectFind("MARGIN CALL FOR "+symbol) == -1)
if(Lots != 0)
Create = true;
//---
if(ObjectFind("MARGIN CALL FOR "+symbol) > -1)
if(Lots != 0)
Modify = true;
//---
if(Lots == 0)
Delete = true;
//************
// OPERATIONS
//************1
if(Create)
{
Equity_static -= Profit_buy;
Equity_static -= Profit_sell;
//---
Delta = (Equity - (Equity_static/100)*level_the_equity) / (Value_point_minlot*(MathAbs(Lots)/MarketInfo(symbol, MODE_MINLOT)));
//---
if(Lots > 0)
{
if(!ObjectCreate("MARGIN CALL FOR "+symbol, OBJ_HLINE, 0, Time[0], MarketInfo(symbol, MODE_BID) - Delta*MarketInfo(symbol, MODE_POINT)))
Print(" !!!ÎØÈÁÊÀ: ÍÅ ÓÄÀËÎÑÜ ÑÎÇÄÀÒÜ ÎÁÚÅÊ ÄËß MARGIN CALL!!! ÎØÈÁÊÀ #",GetLastError());
}
//---
if(Lots < 0)
{
if(!ObjectCreate("MARGIN CALL FOR "+symbol, OBJ_HLINE, 0, Time[0], MarketInfo(symbol, MODE_ASK) + Delta*MarketInfo(symbol, MODE_POINT)))
Print(" !!!ÎØÈÁÊÀ: ÍÅ ÓÄÀËÎÑÜ ÑÎÇÄÀÒÜ ÎÁÚÅÊ ÄËß MARGIN CALL!!! ÎØÈÁÊÀ #",GetLastError());
}
//---
ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_COLOR, color_1);
ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_STYLE, style_1);
ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_WIDTH, width_1);
}
//---
if(Modify)
{
Equity_static -= Profit_buy;
Equity_static -= Profit_sell;
//---
Delta = (Equity - (Equity_static/100)*level_the_equity) / (Value_point_minlot*(MathAbs(Lots)/MarketInfo(symbol, MODE_MINLOT)));
//---
Delta = NormalizeDouble(Delta, 0);
//---
if(Lots > 0)
{
if(!ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_PRICE1, MarketInfo(symbol, MODE_BID) - Delta*MarketInfo(symbol, MODE_POINT)))
Print(" !!!ÎØÈÁÊÀ: ÍÅ ÓÄÀËÎÑÜ ÌÎÄÈÔÈÖÈÐÎÂÀÒÜ ÎÁÚÅÊ ÄËß MARGIN CALL!!! ÎØÈÁÊÀ #",GetLastError());
}
//---
if(Lots < 0)
{
if(!ObjectSet("MARGIN CALL FOR "+symbol, OBJPROP_PRICE1, MarketInfo(symbol, MODE_ASK) + Delta*MarketInfo(symbol, MODE_POINT)))
Print(" !!!ÎØÈÁÊÀ: ÍÅ ÓÄÀËÎÑÜ ÌÎÄÈÔÈÖÈÐÎÂÀÒÜ ÎÁÚÅÊ ÄËß MARGIN CALL!!! ÎØÈÁÊÀ #",GetLastError());
}
}
//---
if(Delete)
{
if(ObjectFind("MARGIN CALL FOR "+symbol) > -1)
ObjectDelete("MARGIN CALL FOR "+symbol);
}
//************1
//>>>>>>>>>>>>>>
}
//==========================================================================================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//=====================================================================
double LOT_PERCENT_AT_EQUITY(string symbol, double percent_for_open_)
//=====================================================================
{
//<<<<<<<<<<<<<<
if(symbol == "")
symbol = Symbol();
//---
double Rezult;
//---
int Normalize = 0;
//---
if(MarketInfo(symbol, MODE_MINLOT) * 10 >= 1)
Normalize = 1;
//---
if(MarketInfo(symbol, MODE_MINLOT) * 100 >= 1 && MarketInfo(symbol, MODE_MINLOT) * 100 < 10)
Normalize = 2;
//---
Rezult = NormalizeDouble( ((AccountFreeMargin()/100.0) * percent_for_open_) / (MarketInfo(symbol, MODE_MARGINREQUIRED) / (1.0/MarketInfo(symbol, MODE_MINLOT))), Normalize);
//---
Rezult *= MarketInfo(symbol, MODE_MINLOT);
//---
if(Rezult < MarketInfo(symbol, MODE_MINLOT))
{
Rezult = MarketInfo(symbol, MODE_MINLOT);
//---
Print(" !!! ËÎÒ(%!!!) ÂÛÁÐÀÍ < ×ÅÌ ÌÈÍÈÌÀÜÍÎ ÄÎÏÓÑÒÈÌÛÉ, ÏÎÝÒÎÌÓ ÎÍ ÁÓÄÅÒ = ÌÈÍÈÌÀÜÍÎ ÄÎÏÓÑÒÈÌÎÌÓ");
}
//---
if(Rezult > MarketInfo(symbol, MODE_MAXLOT))
{
Rezult = MarketInfo(symbol, MODE_MAXLOT);
//---
Print(" !!! ËÎÒ(%!!!) ÂÛÁÐÀÍ > ×ÅÌ ÌÀÊÑÈÌÀËÜÍÎ ÄÎÏÓÑÒÈÌÛÉ, ÏÎÝÒÎÌÓ ÎÍ ÁÓÄÅÒ = ÌÀÊÑÈÌÀËÜÍÎ ÄÎÏÓÑÒÈÌÎÌÓ");
}
//---
return(Rezult);
//>>>>>>>>>>>>>>
}
//========================================================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
void ALERT_OPEN_AN_CLOSE(string sound = "alert.wav")
//===========================================
{
//<<<<<<<<<<<<<<
int Type_execution = 0;
//---
static int Orderstotal;
//---
static bool Many_call;
//---
if(!Many_call)
{
Many_call = true;
//---
Orderstotal = OrdersTotal();
//---
//Alert("ÇÂÎÍÎ×ÅÊ ÀÊÒÈÂÈÐÎÂÀÍ È ÃÎÒΠÎÏÎÂÅÙÀÒÜ!");
//---
return;
}
//---
if(Orderstotal < OrdersTotal())
{
if(OrderSelect(OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES))
{
if(OrderType() == OP_BUY)
{
Type_execution = 1;
//---
Orderstotal = OrdersTotal();
}
//---
if(OrderType() == OP_SELL)
{
Type_execution = 2;
//---
Orderstotal = OrdersTotal();
}
}
}
//---
if(Orderstotal > OrdersTotal())
{
if(OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY))
{
if(OrderClosePrice() == OrderTakeProfit())
{
if(OrderType() == OP_BUY)
{
Type_execution = 3;
//---
Orderstotal = OrdersTotal();
}
//---
if(OrderType() == OP_SELL)
{
Type_execution = 4;
//---
Orderstotal = OrdersTotal();
}
}
}
}
//---
if(Type_execution == 1)
PlaySound(sound);
//Alert("ÏÐÎÈÇÎØËÎ ÎÒÊÐÛÒÈÅ ===BUY===");
//---
if(Type_execution == 2)
PlaySound(sound);
//Alert("ÏÐÎÈÇÎØËÎ ÎÒÊÐÛÒÈÅ ===SELL===");
//---
if(Type_execution == 3)
PlaySound(sound);
//Alert("ÏÐÎÈÇÎØËÎ ÇÀÊÐÛÒÈÅ ÏÎ ÒÅÉÊ ÏÐÎÔÈÒÓ ===BUY===");
//---
if(Type_execution == 4)
PlaySound(sound);
//Alert("ÏÐÎÈÇÎØËÎ ÇÀÊÐÛÒÈÅ ÏÎ ÒÅÉÊ ÏÐÎÔÈÒÓ ===SELL===");
//---
if(Type_execution == 0)
Orderstotal = OrdersTotal();
//>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
bool ÏÐÀÊÒÈÊÀ()
//===========================================
{
//<<<<<<<<<<<<<<
//******************************************
// ÄÎÏÎËÍÈÒÅËÜÍÀß 3ßß ÔÓÍÊÖÈß
//******************************************1
ALERT_OPEN_AN_CLOSE();
//******************************************1
//******************************************
// ÒÐÀËÞ ËÈÍÈÈ ÄËß ÎÒËÎÆÍÈÊÎÂ
//******************************************1
if(ÒÐÀË.ÎÒËÎÆÍÈÊÈ.)
{
ÒÐÀË_ËÈÍÈÈ(ÈÌß.ËÈÍÈÈ.1, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.);
ÒÐÀË_ËÈÍÈÈ(ÈÌß.ËÈÍÈÈ.2, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.);
ÒÐÀË_ËÈÍÈÈ(ÈÌß.ËÈÍÈÈ.3, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.);
ÒÐÀË_ËÈÍÈÈ(ÈÌß.ËÈÍÈÈ.4, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ.);
}
//******************************************1
//******************************************
// ÄÓÌÀÞ È ÄÅËÀÞ Â ÇÀÂÈÑÈÌÎÑÒÈ ÎÒ ÑÈÒÓÀÖÈÈ
//******************************************1
ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(ÈÌß.ËÈÍÈÈ.1, ÌÀÃÈÊ., ÍÀÏÐÀÂËÅÍÈÅ.1, ÒÈÏ.1, ÊÎËÈ×ÅÑÒÂÎ.1, ÎÒÑÒÓÏ.1, ØÀÃ.1, ÑÒÎÏ.ËÎÑÑ.1, ÒÅÉÊ.ÏÐÎÔÈÒ.1);
ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(ÈÌß.ËÈÍÈÈ.2, ÌÀÃÈÊ., ÍÀÏÐÀÂËÅÍÈÅ.2, ÒÈÏ.2, ÊÎËÈ×ÅÑÒÂÎ.2, ÎÒÑÒÓÏ.2, ØÀÃ.2, ÑÒÎÏ.ËÎÑÑ.2, ÒÅÉÊ.ÏÐÎÔÈÒ.2);
ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(ÈÌß.ËÈÍÈÈ.3, ÌÀÃÈÊ., ÍÀÏÐÀÂËÅÍÈÅ.3, ÒÈÏ.3, ÊÎËÈ×ÅÑÒÂÎ.3, ÎÒÑÒÓÏ.3, ØÀÃ.3, ÑÒÎÏ.ËÎÑÑ.3, ÒÅÉÊ.ÏÐÎÔÈÒ.3);
ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(ÈÌß.ËÈÍÈÈ.4, ÌÀÃÈÊ., ÍÀÏÐÀÂËÅÍÈÅ.4, ÒÈÏ.4, ÊÎËÈ×ÅÑÒÂÎ.4, ÎÒÑÒÓÏ.4, ØÀÃ.4, ÑÒÎÏ.ËÎÑÑ.4, ÒÅÉÊ.ÏÐÎÔÈÒ.4);
//******************************************1
//******************************************
// ÒÐÀËÞ ÂÑÅ ×ÒÎ ÌÎÆÍÎ ÒÐÀËÈÒÜ
//******************************************1
if(ÒÐÀË.BUY)
TRAL_BUY(ÒÐÀË.BUY.ÑÒÎÏ., ÒÐÀË.BUY.ØÀÃ., ÌÀÃÈÊ.);
//---
if(ÒÐÀË.SELL)
TRAL_SELL(ÒÐÀË.SELL.ÑÒÎÏ., ÒÐÀË.SELL.ØÀÃ., ÌÀÃÈÊ.);
//---
//if(ÒÐÀË.ÎÒËÎÆÍÈÊÈ.)
//{
//TRAL_L_BUY(OP_BUYLIMIT, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ., ÌÀÃÈÊ.);
//TRAL_L_BUY(OP_BUYSTOP, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ., ÌÀÃÈÊ.);
//---
//TRAL_L_SELL(OP_SELLLIMIT, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ., ÌÀÃÈÊ.);
//TRAL_L_SELL(OP_SELLSTOP, ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ÑÒÎÏ., ÒÐÀË.ÎÒËÎÆÍÈÊÈ.ØÀÃ., ÌÀÃÈÊ.);
//}
//******************************************1
//******************************************
// ÄÎÏÎËÍÈÒÅËÜÍÀß 1Àß ÔÓÍÊÖÈß
//******************************************1
CONTROL_AT_MARGIN_CALL(Symbol(), MARGIN_CALL_PERCENT_, MARGIN_CALL_COLOR_, MARGIN_CALL_STYLE_, MARGIN_CALL_WIDTH_);
//******************************************1
//>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//===========================================
bool ÄÅÉÑÒÂÈÅ_ÑÈÃÍÀËÜÍÎÃÎ_ÎÁÚÅÊÒÀ(string èìÿ)
//===========================================
{
//<<<<<<<<<<<<<<
if(ObjectFind(èìÿ) >= 0)
{
if(ObjectGet(èìÿ, OBJPROP_TIME1) == Time [0])
{
ObjectSet(èìÿ, OBJPROP_TIME1, Time [1]);
//---
return(TRUE);
}
}
//---
return(FALSE);
//>>>>>>>>>>>>>>
}
//===========================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//==========================================================================================================================
bool ÂÛÑÒÀÂËÅÍÈÅ_ÎÒËÎÆÍÈÊÎÂ(string èìÿ_ëèíèè,int ìàãèê,int êóäà,int òèï,int êîëè÷åñòâî,double îòñòóï,double øàã,double ñòîï,double òåéê)
//==========================================================================================================================
{
//<<<<<<<<<<<<<<
//*********************************
// ÏÐÎÂÅÐßÞ ÏÐÈÑÓÒÑÒÂÓÅÒ ËÈÍÈß
//*********************************1
if(èìÿ_ëèíèè == "")
return(TRUE);
//---
if(ObjectFind(èìÿ_ëèíèè) < 0)
{
Print(" ËÈÍÈß ÄËß ÂÛÑÒÀÂËÅÍß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+" = ÎÒÑÓÒÑÒÂÓÅÒ!");
//---
return(FALSE);
}
//*********************************1
//*********************************
// ÏÐÎÂÅÐßÞ ÒÈÏ ÂÛÑÒÀÂËßÅÌÎÃÎ ÎÐÄÅÐÀ
//*********************************1
if(òèï == OP_BUY || òèï == OP_SELL)
{
Print(" !!! ÒÈÏ ÂÛÑÒÀÂËßÅÌÎÃÎ ÎÐÄÅÐÀ ÍÅÊÎÐÐÅÊÒÅÍ");
//---
return(FALSE);
}
//*********************************1
//*********************************
// ÏÎËÓ×ÀÞ ÈÍÔÎÐÌÀÖÈÞ Î ËÈÍÈÈ
//*********************************1
double Àêòèâíàÿ_öåíà = NormalizeDouble(ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1), Digits);
double Öåíà_ëèíèè = Àêòèâíàÿ_öåíà;
//*********************************1
//******************************************
// ÑÀÌÎ ÂÛÑÒÀÂËÅÍÈÅ
//******************************************1
double Ñòîï;
double Òåéê;
//---
double Íà÷àëî;
//---
if(êóäà >= 0)
Íà÷àëî = Àêòèâíàÿ_öåíà + îòñòóï*Point;
else
Íà÷àëî = Àêòèâíàÿ_öåíà - îòñòóï*Point;
//---
for(int b1=0;b1<êîëè÷åñòâî;b1++)
{
if(êóäà >= 0)
{
Àêòèâíàÿ_öåíà = NormalizeDouble(Íà÷àëî + b1*øàã*Point, Digits);
//---
//if(Öåíà_ëèíèè < Bid)
//{
//if(Àêòèâíàÿ_öåíà >= Bid)
//break;
//}
}
else
{
Àêòèâíàÿ_öåíà = NormalizeDouble(Íà÷àëî - b1*øàã*Point, Digits);
//---
//if(Öåíà_ëèíèè > Bid)
//{
//if(Àêòèâíàÿ_öåíà <= Bid)
//break;
//}
}
//---
if(òèï == OP_BUYSTOP || òèï == OP_SELLLIMIT)
{
if(Àêòèâíàÿ_öåíà < Bid)
break;
}
//---
if(òèï == OP_SELLSTOP || òèï == OP_BUYLIMIT)
{
if(Àêòèâíàÿ_öåíà >= Bid)
break;
}
//---
if(òèï == OP_BUYLIMIT || òèï == OP_BUYSTOP)
{
Ñòîï = NormalizeDouble(Àêòèâíàÿ_öåíà - ñòîï*Point, Digits);
Òåéê = NormalizeDouble(Àêòèâíàÿ_öåíà + òåéê*Point, Digits);
}
//---
if(òèï == OP_SELLLIMIT || òèï == OP_SELLSTOP)
{
Ñòîï = NormalizeDouble(Àêòèâíàÿ_öåíà + ñòîï*Point, Digits);
Òåéê = NormalizeDouble(Àêòèâíàÿ_öåíà - òåéê*Point, Digits);
}
//---
if(ñòîï == 0)
Ñòîï = 0;
//---
if(òåéê == 0)
Òåéê = 0;
//****************************
// ÏÐÎÂÅÐßÞ
//****************************2
double Öåíà_1;
//---
bool Ïðèñóòñòâèå_äóáëÿæà = false;
//---
bool Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1 = false;
//---
int Ñâîé_îðäåð_1 = 0;
//---
if(OrdersTotal() > 0)
{
for(int b2=0;b2<OrdersTotal();b2++)
{
if(OrderSelect(b2, SELECT_BY_POS, MODE_TRADES))
{
if( OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê && OrderType()==òèï )
{
if(NormalizeDouble(OrderOpenPrice(), Digits) == Àêòèâíàÿ_öåíà)
{
Ïðèñóòñòâèå_äóáëÿæà = true;
}
//---
if(OrderComment() == ("("+èìÿ_ëèíèè+")(#"+b1+")"))
{
Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1 = true;
//---
Ñâîé_îðäåð_1 = b2;
//---
break;
}
}
}
}
}
//****************************2
//****************************
// ÇÀÍßÒÎ
//****************************2
if(!Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1)
if(Ïðèñóòñòâèå_äóáëÿæà)
continue;
//****************************2
int Ticket;
bool Ticket_1;
//****************************
// ÏÐÈÑÓÒÑÒÂÈÅ
//****************************2
if(Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1)
{
if(OrderSelect(Ñâîé_îðäåð_1, SELECT_BY_POS, MODE_TRADES))
{
if(NormalizeDouble(OrderOpenPrice(), Digits) != Àêòèâíàÿ_öåíà)
{
//if(Ñòîï == 0)
//Ñòîï = OrderStopLoss();
//---
//if(Òåéê == 0)
//Òåéê = OrderTakeProfit();
//---
Ticket_1 = OrderModify(OrderTicket(), Àêòèâíàÿ_öåíà, Ñòîï, Òåéê, 0);
//---
if(!Ticket_1)
{
Print("Àêòèâíàÿ_öåíà= "+Àêòèâíàÿ_öåíà+"; Ñòîï="+Ñòîï+"; Òåéê="+Òåéê );
//---
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ "+òèï+" #"+b1+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//****************************2
//****************************
// ÏÎËÍÎÅ ÎÒÑÓÒÑÒÂÈÅ
//****************************2
if(!Ïðèñóòñòâèå_ñâîåãî_îðäåðà_1)
if(!Ïðèñóòñòâèå_äóáëÿæà)
{
Ticket = OrderSend(Symbol(), òèï, LOT_PERCENT_AT_EQUITY(Symbol(), VOLUME_LOT_PERCENT_),
Àêòèâíàÿ_öåíà, ÑËÈÏÏÅÄÆ.,
Ñòîï,
Òåéê,
"("+èìÿ_ëèíèè+")(#"+b1+")",
ìàãèê);
//---
//Print("OPEN= "+"("+èìÿ_ëèíèè+")(#"+b1+")");
//---
if(Ticket < 0)
{
Print(b1, "!!!!! ÎØÈÁÊÀ ÂÛÑÒÀÂËÅÍÈß "+òèï+"; ÎØÈÁÊÀ = ", ERROR(GetLastError()));
//---
return(FALSE);
}
}
//****************************2
}
//---
return(TRUE);
//******************************************1
//>>>>>>>>>>>>>>
}
//==========================================================================================================================
//000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//*********************
// ÒÐÀË ËÈÍÈÈ
//*********************1
//====================================================================
bool ÒÐÀË_ËÈÍÈÈ(string èìÿ_ëèíèè,double ñòîï,double øàã)
//====================================================================
{
//*********************************
// ÏÐÎÂÅÐßÞ ÏÐÈÑÓÒÑÒÂÓÅÒ ËÈÍÈß
//*********************************1
if(èìÿ_ëèíèè == "")
return(TRUE);
//---
if(ObjectFind(èìÿ_ëèíèè) < 0)
{
Print(" ËÈÍÈß, ÊÎÒÎÐÀß ÄÎËÆÍÀ ÒÐÀËÈÒÑß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+" = ÎÒÑÓÒÑÒÂÓÅÒ!");
//---
return(FALSE);
}
//*********************************1
//************************************
// ËÎÂËß ÎØÈÁÎÊ
//************************************1
if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
{
Print(" !!!!!ÑÒÎÏ ÄËß ËÈÍÈÈ, ÊÎÒÎÐÀß ÄÎËÆÍÀ ÒÐÀËÈÒÑß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+", ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
Print(" !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ ËÈÍÈÞ Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+"!!!!!");
//---
return(FALSE);
}
//************************************1
//************************************
// ÍÎÐÌÈÐÓÞ
//************************************1
ñòîï = NormalizeDouble(ñòîï*Point, Digits);
øàã = NormalizeDouble(øàã*Point, Digits);
//************************************1
//*****************************
// ÏÅÐÅÌÅÙÀÞ ÏÐÈ ÍÅÎÁÕÎÄÈÌÎÑÒÈ
//*****************************1
double Price;
//*****************
// ÍÈÆÅ ÖÅÍÛ
//*****************2
if(ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) < Bid)
{
if( (Bid - ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1)) > ñòîï )
{
if( (ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) + øàã) < (Bid - ñòîï) )
{
Price = Bid - ñòîï;
//---
if(ObjectSet(èìÿ_ëèíèè, OBJPROP_PRICE1, Price))
{
return(TRUE);
}
else
{
Print(" !!!ËÈÍÈß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+", ÍÅÇÀÒÐÀËÈËÀÑÜ!!!");
Print(" ÂÎÇÌÎÆÍÀß ÎØÈÁÊÀ = "+MarketInfo(Symbol(),MODE_STOPLEVEL));
//---
return(FALSE);
}
}
}
}
//*****************2
//*****************
// ÂÛØÅ ÖÅÍÛ
//*****************2
if(ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) > Bid)
{
if( (ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) - Bid) > ñòîï )
{
if( (ObjectGet(èìÿ_ëèíèè, OBJPROP_PRICE1) - øàã) > (Bid + ñòîï) )
{
Price = Bid + ñòîï;
//---
if(ObjectSet(èìÿ_ëèíèè, OBJPROP_PRICE1, Price))
{
return(TRUE);
}
else
{
Print(" !!!ËÈÍÈß, Ñ ÈÌÅÍÅÌ = "+èìÿ_ëèíèè+", ÍÅÇÀÒÐÀËÈËÀÑÜ!!!");
Print(" ÂÎÇÌÎÆÍÀß ÎØÈÁÊÀ = "+MarketInfo(Symbol(),MODE_STOPLEVEL));
//---
return(FALSE);
}
}
}
}
//*****************2
//*****************************1
}
//=========================================================
//*******************1
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//*******************
// ÒÐÀË BUY
//*******************1
//==========================================================
void TRAL_BUY(double ñòîï,double øàã,int ìàãèê,color öâåò = Blue)
//==========================================================
{
//************************************
// ËÎÂËß ÎØÈÁÎÊ
//************************************2
if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
{
Print(" !!!!!ÑÒÎÏ ÄËß ÒÐÀËÀ ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
Print(" !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ BUY!!!!!");
}
//************************************2
//************************************
// ÍÎÐÌÈÐÓÞ
//************************************2
ñòîï = NormalizeDouble(ñòîï*Point, Digits);
øàã = NormalizeDouble(øàã*Point, Digits);
//************************************2
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê)//ÑÐÀÂÍÅÍÈÅ
{
if(OrderType()==OP_BUY)
{
if( (Bid - OrderOpenPrice()) > ñòîï )
{
if( ((OrderStopLoss() + øàã) < (Bid - ñòîï))||(OrderStopLoss() == 0) )
{
double Stop;
bool Ticket;
//---
Stop = Bid - ñòîï;
//---
Ticket = OrderModify(OrderTicket(), OrderOpenPrice(), Stop, OrderTakeProfit(), 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUY #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
}
}
}
}
//=========================================================
//*******************1
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//*******************
// ÒÐÀË SELL
//*******************1
//=========================================================
void TRAL_SELL(double ñòîï,double øàã,int ìàãèê,color öâåò = Red)
//=========================================================
{
//************************************
// ËÎÂËß ÎØÈÁÎÊ
//************************************2
if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
{
Print(" !!!!!ÑÒÎÏ ÄËß ÒÐÀËÀ ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
Print(" !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ SELL!!!!!");
}
//************************************2
//************************************
// ÍÎÐÌÈÐÓÞ
//************************************2
ñòîï = NormalizeDouble(ñòîï*Point, Digits);
øàã = NormalizeDouble(øàã*Point, Digits);
//************************************2
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê)//ÑÐÀÂÍÅÍÈÅ
{
if(OrderType()==OP_SELL)
{
if( (OrderOpenPrice() - Ask) > ñòîï )
{
if( ((OrderStopLoss() - øàã) > (Ask + ñòîï))||(OrderStopLoss() == 0) )
{
double Stop;
bool Ticket;
//---
Stop = Ask + ñòîï;
//---
Ticket = OrderModify(OrderTicket(), OrderOpenPrice(), Stop, OrderTakeProfit(), 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELL #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
}
}
}
}
//=========================================================
//*******************1
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//*********************
// ÒÐÀË BUY ÎÒËÎÆÍÈÊÎÂ
//*********************1
//====================================================================
void TRAL_L_BUY(int òèï,double ñòîï,double øàã,int ìàãèê,color öâåò = Blue)
//====================================================================
{
//************************************
// ËÎÂËß ÎØÈÁÎÊ
//************************************2
if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
{
Print(" !!!!!ÑÒÎÏ ÄËß ÒÐÀËÀ ÎÒËÎÆÍÈÊÎÂ BUY ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
Print(" !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ ÎÒËÎÆÍÈÊÎÂ BUY!!!!!");
//---
return(FALSE);
}
//************************************2
//************************************
// ÍÎÐÌÈÐÓÞ
//************************************2
ñòîï = NormalizeDouble(ñòîï*Point, Digits);
øàã = NormalizeDouble(øàã*Point, Digits);
//************************************2
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê)
{
double Price;
double Stop;
double Take;
//---
bool Ticket;
//*****************
// ÒÐÀË BUYLIMIT
//*****************1
if(OrderType()==òèï)
if(OrderType()==OP_BUYLIMIT)
{
//*****************
// ÍÈÆÅ ÖÅÍÛ
//*****************2
if(OrderOpenPrice() < Bid)
{
if( (Bid - OrderOpenPrice()) > ñòîï )
{
if( (OrderOpenPrice() + øàã) < (Bid - ñòîï) )
{
Price = Bid - ñòîï;
//---
Stop = Price - (OrderOpenPrice() - OrderStopLoss());
Take = Price + (OrderTakeProfit() - OrderOpenPrice());
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUYLIMIT #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//*****************2
//*****************
// ÂÛØÅ ÖÅÍÛ
//*****************2
if(OrderOpenPrice() > Bid)
{
if( (OrderOpenPrice() - Bid) > ñòîï )
{
if( (OrderOpenPrice() - øàã) > (Bid + ñòîï) )
{
Price = Bid + ñòîï;
//---
Stop = Price - (OrderOpenPrice() - OrderStopLoss());
Take = Price + (OrderTakeProfit() - OrderOpenPrice());
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUYLIMIT #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//*****************2
}
//*****************1
//*****************
// ÒÐÀË BUYSTOP
//*****************1
if(OrderType()==òèï)
if(OrderType()==OP_BUYSTOP)
{
//*****************
// ÂÛØÅ ÖÅÍÛ
//*****************2
if(OrderOpenPrice() > Bid)
{
if( (OrderOpenPrice() - Bid) > ñòîï )
{
if( (OrderOpenPrice() - øàã) > (Bid + ñòîï) )
{
Price = Bid + ñòîï;
//---
Stop = Price - (OrderOpenPrice() - OrderStopLoss());
//---
Take = Price + (OrderTakeProfit() - OrderOpenPrice());
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUYSTOP #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//*****************2
//*****************
// ÍÈÆÅ ÖÅÍÛ
//*****************2
if(OrderOpenPrice() < Bid)
{
if( (Bid - OrderOpenPrice()) > ñòîï )
{
if( (OrderOpenPrice() + øàã) < (Bid - ñòîï) )
{
Price = Bid - ñòîï;
//---
Stop = Price - (OrderOpenPrice() - OrderStopLoss());
Take = Price + (OrderTakeProfit() - OrderOpenPrice());
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ BUYSTOP #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//*****************2
}
//*****************1
}
}
}
}
//=========================================================
//*******************1
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//*******************
// ÒÐÀË SELL ÎÒËÎÆÍÈÊÎÂ
//*******************1
//====================================================================
void TRAL_L_SELL(int òèï,double ñòîï,double øàã,int ìàãèê,color öâåò = Red)
//====================================================================
{
//************************************
// ËÎÂËß ÎØÈÁÎÊ
//************************************2
if(ñòîï < MarketInfo(Symbol(),MODE_STOPLEVEL))
{
Print(" !!!!!ÑÒÎÏ ÄËß ÒÐÀËÀ ÎÒËÎÆÍÈÊÎÂ SELL ÌÀËÅÍÜÊÈÉ(ÌÈÍÈÌÓÌ ÄÎËÆÍÎ ÁÛÒÜ = "+MarketInfo(Symbol(),MODE_STOPLEVEL)+")!!!!!");
Print(" !!!!!ÍÅ ÌÎÃÓ ÒÐÀËÈÒÜ ÎÒËÎÆÍÈÊÎÂ SELL!!!!!");
}
//************************************2
//************************************
// ÍÎÐÌÈÐÓÞ
//************************************2
ñòîï = NormalizeDouble(ñòîï*Point, Digits);
øàã = NormalizeDouble(øàã*Point, Digits);
//************************************2
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==ìàãèê)
{
double Price;
double Stop;
double Take;
//---
bool Ticket;
//*****************
// ÒÐÀË SELLLIMIT
//*****************1
if(OrderType()==òèï)
if(OrderType()==OP_SELLLIMIT)
{
//*****************
// ÂÛØÅ ÖÅÍÛ
//*****************2
if(OrderOpenPrice() > Ask)
{
if( (OrderOpenPrice() - Ask) > ñòîï )
{
if( (OrderOpenPrice() - øàã) > (Ask + ñòîï) )
{
Price = Ask + ñòîï;
//---
Stop = Price + (OrderStopLoss() - OrderOpenPrice());
Take = Price - (OrderOpenPrice() - OrderTakeProfit());
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELLLIMIT #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//*****************2
//*****************
// ÍÈÆÅ ÖÅÍÛ
//*****************2
if(OrderOpenPrice() < Ask)
{
if( (Ask - OrderOpenPrice()) > ñòîï )
{
if( (OrderOpenPrice() + øàã) < (Ask - ñòîï) )
{
Price = Ask - ñòîï;
//---
Stop = Price + (OrderStopLoss() - OrderOpenPrice());
Take = Price - (OrderOpenPrice() - OrderTakeProfit());
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELLLIMIT #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//*****************2
}
//*****************1
//*****************
// ÒÐÀË SELLSTOP
//*****************1
if(OrderType()==òèï)
if(OrderType()==OP_SELLSTOP)
{
//*****************
// ÍÈÆÅ ÖÅÍÛ
//*****************2
if(OrderOpenPrice() < Ask)
{
if( (Ask - OrderOpenPrice()) > ñòîï )
{
if( (OrderOpenPrice() + øàã) < (Ask - ñòîï) )
{
Price = Ask - ñòîï;
//---
Stop = Price + (OrderStopLoss() - OrderOpenPrice());
Take = Price - (OrderOpenPrice() - OrderTakeProfit());
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELLSTOP #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//*****************2
//*****************
// ÂÛØÅ ÖÅÍÛ
//*****************2
if(OrderOpenPrice() > Ask)
{
if( (OrderOpenPrice() - Ask) > ñòîï )
{
if( (OrderOpenPrice() - øàã) > (Ask + ñòîï) )
{
Price = Ask + ñòîï;
//---
//---
Stop = Price + (OrderStopLoss() - OrderOpenPrice());
Take = Price - (OrderOpenPrice() - OrderTakeProfit());
//---
if(OrderStopLoss() == 0)
Stop = OrderStopLoss();
//---
if(OrderTakeProfit() == 0)
Take = OrderTakeProfit();
//---
Ticket = OrderModify(OrderTicket(), Price, Stop, Take, 0, öâåò);
//---
if(!Ticket)
{
Print(" !!!ÍÅ ÓÄÀËÎÑÜ ÇÀÒÐÀËÈÒÜ SELLSTOP #"+i+"!!!");
Print(" !!!ÎØÈÁÊÀ = "+ERROR(GetLastError())+"!!!");
}
}
}
}
//*****************2
}
//*****************1
}
}
}
}
//====================================================================
//*******************1
//00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
//**************************
// ÏÎËÓ×ÅÍÈÅ ÒÅÊÑÒÀ ÎØÈÁÊÈ
//**************************1
//==============================================================
string ERROR(int error_code)
//==============================================================
{
string error_string;
//----
switch(error_code)
{
//---- Êîäû îøèáîê, âîçâðàùàåìûå òîðãîâûì ñåðâåðîì:
case 0: error_string="Íåò îøèáîê"; break;
case 1: error_string="Íåò îøèáêè, íî ðåçóëüòàò íåèçâåñòåí"; break;
case 2: error_string="Îáùàÿ îøèáêà"; break;
case 3: error_string="Íåïðàâèëüíûå ïàðàìåòðû"; break;
case 4: error_string="Òîðãîâûé ñåðâåð çàíÿò"; break;
case 5: error_string="Ñòàðàÿ âåðñèÿ êëèåíòñêîãî òåðìèíàëà"; break;
case 6: error_string="Íåò ñâÿçè ñ òîðãîâûì ñåðâåðîì"; break;
case 7: error_string="Íåäîñòàòî÷íî ïðàâ"; break;
case 8: error_string="Ñëèøêîì ÷àñòûå çàïðîñû"; break;
case 9: error_string="Íåäîïóñòèìàÿ îïåðàöèÿ íàðóøàþùàÿ ôóíêöèîíèðîâàíèå ñåðâåðà"; break;
case 64: error_string="Ñ÷åò çàáëîêèðîâàí"; break;
case 65: error_string="Íåïðàâèëüíûé íîìåð ñ÷åòà"; break;
case 128: error_string="Èñòåê ñðîê îæèäàíèÿ ñîâåðøåíèÿ ñäåëêè"; break;
case 129: error_string="Íåïðàâèëüíàÿ öåíà"; break;
case 130: error_string="Íåïðàâèëüíûå ñòîïû"; break;
case 131: error_string="Íåïðàâèëüíûé îáúåì"; break;
case 132: error_string="Ðûíîê çàêðûò"; break;
case 133: error_string="Òîðãîâëÿ çàïðåùåíà"; break;
case 134: error_string="Íåäîñòàòî÷íî äåíåã äëÿ ñîâåðøåíèÿ îïåðàöèè"; break;
case 135: error_string="Öåíà èçìåíèëàñü"; break;
case 136: error_string="Íåò öåí"; break;
case 137: error_string="Áðîêåð çàíÿò"; break;
case 138: error_string="Íîâûå öåíû"; break;
case 139: error_string="Îðäåð çàáëîêèðîâàí è óæå îáðàáàòûâàåòñÿ"; break;
case 140: error_string="Ðàçðåøåíà òîëüêî ïîêóïêà"; break;
case 141: error_string="Ñëèøêîì ìíîãî çàïðîñîâ"; break;
case 145: error_string="Ìîäèôèêàöèÿ çàïðåùåíà, òàê êàê îðäåð ñëèøêîì áëèçîê ê ðûíêó"; break;
case 146: error_string="Ïîäñèñòåìà òîðãîâëè çàíÿòà"; break;
case 147: error_string="Èñïîëüçîâàíèå äàòû èñòå÷åíèÿ îðäåðà çàïðåùåíî áðîêåðîì"; break;
case 148: error_string="Êîëè÷åñòâî îòêðûòûõ è îòëîæåííûõ îðäåðîâ äîñòèãëî ïðåäåëà, óñòàíîâëåííîãî áðîêåðîì.";break;
//---- Êîäû îøèáîê âûïîëíåíèÿ MQL4-ïðîãðàììû:
case 4000: error_string="Íåò îøèáêè"; break;
case 4001: error_string="Íåïðàâèëüíûé óêàçàòåëü ôóíêöèè"; break;
case 4002: error_string="Èíäåêñ ìàññèâà - âíå äèàïàçîíà"; break;
case 4003: error_string="Íåò ïàìÿòè äëÿ ñòåêà ôóíêöèé"; break;
case 4004: error_string="Ïåðåïîëíåíèå ñòåêà ïîñëå ðåêóðñèâíîãî âûçîâà"; break;
case 4005: error_string="Íà ñòåêå íåò ïàìÿòè äëÿ ïåðåäà÷è ïàðàìåòðîâ"; break;
case 4006: error_string="Íåò ïàìÿòè äëÿ ñòðîêîâîãî ïàðàìåòðà"; break;
case 4007: error_string="Íåò ïàìÿòè äëÿ âðåìåííîé ñòðîêè"; break;
case 4008: error_string="Íåèíèöèàëèçèðîâàííàÿ ñòðîêà"; break;
case 4009: error_string="Íåèíèöèàëèçèðîâàííàÿ ñòðîêà â ìàññèâå"; break;
case 4010: error_string="Íåò ïàìÿòè äëÿ ñòðîêîâîãî ìàññèâà"; break;
case 4011: error_string="Ñëèøêîì äëèííàÿ ñòðîêà"; break;
case 4012: error_string="Îñòàòîê îò äåëåíèÿ íà íîëü"; break;
case 4013: error_string="Äåëåíèå íà íîëü"; break;
case 4014: error_string="Íåèçâåñòíàÿ êîìàíäà"; break;
case 4015: error_string="Íåïðàâèëüíûé ïåðåõîä"; break;
case 4016: error_string="Íåèíèöèàëèçèðîâàííûé ìàññèâ"; break;
case 4017: error_string="Âûçîâû DLL íå ðàçðåøåíû"; break;
case 4018: error_string="Íåâîçìîæíî çàãðóçèòü áèáëèîòåêó"; break;
case 4019: error_string="Íåâîçìîæíî âûçâàòü ôóíêöèþ"; break;
case 4020: error_string="Âûçîâû âíåøíèõ áèáëèîòå÷íûõ ôóíêöèé íå ðàçðåøåíû"; break;
case 4021: error_string="Íåäîñòàòî÷íî ïàìÿòè äëÿ ñòðîêè, âîçâðàùàåìîé èç ôóíêöèè"; break;
case 4022: error_string="Ñèñòåìà çàíÿòà"; break;
case 4050: error_string="Íåïðàâèëüíîå êîëè÷åñòâî ïàðàìåòðîâ ôóíêöèè"; break;
case 4051: error_string="Íåäîïóñòèìîå çíà÷åíèå ïàðàìåòðà ôóíêöèè"; break;
case 4052: error_string="Âíóòðåííÿÿ îøèáêà ñòðîêîâîé ôóíêöèè"; break;
case 4053: error_string="Îøèáêà ìàññèâà"; break;
case 4054: error_string="Íåïðàâèëüíîå èñïîëüçîâàíèå ìàññèâà-òàéìñåðèè"; break;
case 4055: error_string="Îøèáêà ïîëüçîâàòåëüñêîãî èíäèêàòîðà"; break;
case 4056: error_string="Ìàññèâû íåñîâìåñòèìû"; break;
case 4057: error_string="Îøèáêà îáðàáîòêè ãëîáàëüíûåõ ïåðåìåííûõ"; break;
case 4058: error_string="Ãëîáàëüíàÿ ïåðåìåííàÿ íå îáíàðóæåíà"; break;
case 4059: error_string="Ôóíêöèÿ íå ðàçðåøåíà â òåñòîâîì ðåæèìå"; break;
case 4060: error_string="Ôóíêöèÿ íå ðàçðåøåíà"; break;
case 4061: error_string="Îøèáêà îòïðàâêè ïî÷òû"; break;
case 4062: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà string"; break;
case 4063: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà integer"; break;
case 4064: error_string="Îæèäàåòñÿ ïàðàìåòð òèïà double"; break;
case 4065: error_string=" êà÷åñòâå ïàðàìåòðà îæèäàåòñÿ ìàññèâ"; break;
case 4066: error_string="Çàïðîøåííûå èñòîðè÷åñêèå äàííûå â ñîñòîÿíèè îáíîâëåíèÿ"; break;
/*ì*/ case 4067: error_string="Îøèáêà ïðè âûïîëíåíèè òîðãîâîé îïåðàöèè"; break;
case 4099: error_string="Êîíåö ôàéëà"; break;
case 4100: error_string="Îøèáêà ïðè ðàáîòå ñ ôàéëîì"; break;
case 4101: error_string="Íåïðàâèëüíîå èìÿ ôàéëà"; break;
case 4102: error_string="Ñëèøêîì ìíîãî îòêðûòûõ ôàéëîâ"; break;
case 4103: error_string="Íåâîçìîæíî îòêðûòü ôàéë"; break;
case 4104: error_string="Íåñîâìåñòèìûé ðåæèì äîñòóïà ê ôàéëó"; break;
case 4105: error_string="Íè îäèí îðäåð íå âûáðàí"; break;
case 4106: error_string="Íåèçâåñòíûé ñèìâîë"; break;
case 4107: error_string="Íåïðàâèëüíûé ïàðàìåòð öåíû äëÿ òîðãîâîé ôóíêöèè"; break;
case 4108: error_string="Íåâåðíûé íîìåð òèêåòà"; break;
case 4109: error_string="Òîðãîâëÿ íå ðàçðåøåíà. Íåîáõîäèìî âêëþ÷èòü îïöèþ Ðàçðåøèòü ñîâåòíèêó òîðãîâàòü â ñâîéñòâàõ ýêñïåðòà."; break;
case 4110: error_string="Äëèííûå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà."; break;
case 4111: error_string="Êîðîòêèå ïîçèöèè íå ðàçðåøåíû. Íåîáõîäèìî ïðîâåðèòü ñâîéñòâà ýêñïåðòà."; break;
case 4200: error_string="Îáúåêò óæå ñóùåñòâóåò"; break;
case 4201: error_string="Çàïðîøåíî íåèçâåñòíîå ñâîéñòâî îáúåêòà"; break;
case 4202: error_string="Îáúåêò íå ñóùåñòâóåò"; break;
case 4203: error_string="Íåèçâåñòíûé òèï îáúåêòà"; break;
case 4204: error_string="Íåò èìåíè îáúåêòà"; break;
case 4205: error_string="Îøèáêà êîîðäèíàò îáúåêòà"; break;
case 4206: error_string="Íå íàéäåíî óêàçàííîå ïîäîêíî"; break;
default: error_string="Îøèáêà ïðè ðàáîòå ñ îáúåêòîì";
}
//----
return(error_string);
}
//==============================================================
//**************************1
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
---