Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
manager_EquityControl_BlueDream_V1_GS_2011_01_26
//+------------------------------------------------------------------+
// manager_EquityControl_BlueDream
//+------------------------------------------------------------------+
#property copyright "Copyright © Sergey Gulyaev. Maykop."
#property show_inputs
#define FIRST_NAME "manager_EquityControl_BlueDream" //èìÿ óïðàâëÿþùåãî ìîäóëÿ
#define VER "V1" //âåðñèÿ
#define RELIZE "GS_2011_01_26" //ðåëèç
#define AUTOR "© valenok2003@mail.ru"
#define URL "http://fxgeneral.com/forum/index.php?showforum=51"
extern bool ONLY_ALERT = false;
extern string rem_1 = "-ïî àáñîëþòíîìó çíà÷åíèþ ýêâèòè-";
extern double Set_Limit_Equity_Max = 0;
extern double Set_Limit_Equity_Min = 0;
extern string rem_2 = "-ïî ïðèðîñòó ýêâèòè â âàëþòå äåïî-";
extern double Set_Profit_Delta_Equity = 0;
extern double Set_Loss_Delta_Equity = 0;
extern string rem_3 = "-ïî ïðèðîñòó ýêâèòè â ïðîöåíòàõ-";
extern double Set_Profit_Delta_Equity_Percent = 0;
extern double Set_Loss_Delta_Equity_Percent = 0;
extern string rem_5 = "-èçìåíÿòü ìèíèìóì äèíàìè÷åñêè-";
extern bool DYNAMIC = true;
extern string rem_6 = "-ñèãíàë BlueDream-";
extern bool Set_STOP_TRADE_IF_CLOSE = true;
extern string rem_7 = "-äîïóñòèìûå çíà÷åíèÿ (0,1,2,3)-";
extern int Pozition = 2;
extern int Size = 9;
extern color Color_Line_Start = Gold;
extern color Color_Line_Profit = Blue;
extern color Color_Line_Loss = OrangeRed;
color Color_Txt_Set_Loss;
int Old_Num_Orders,
Cnt_Tick,
Cnt_Tick_Advert;
double Limit_Equity_Max,
Limit_Equity_Min,
Start_Equity,
Cur_Equity,
Start_Limit_Equity_Min,
Delta_Start_and_Min_Equity,
Cost_Point,
Level_Line_Start,
Level_Line_Profit,
Level_Line_Loss,
Delta_LineProfit_LineStart,
Delta_LineLoss_LineStart;
bool STOP_REASON_USER_SET,
STOP_TRADE_IF_CLOSE,
ALERT_STIC,
FLAG_CLOSE_ALL,
END_WORK,
TRIGER = true;
string GV_Name_Signal_Stop_Trade,
Txt_Set_Profit,
Txt_Set_Loss,
Name_Obj_Advert,
Txt_Limit_Equity_Cur,
Txt_Limit_Equity_Max,
Txt_Limit_Equity_Min;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Limit_Equity_Max = 0;
Limit_Equity_Min = 0;
Start_Equity = AccountEquity();
Cur_Equity = 0;
Delta_Start_and_Min_Equity = 0;
Start_Limit_Equity_Min = 0;
Cnt_Tick = 0;
Cost_Point = 0;
Level_Line_Start = 0;
Level_Line_Profit = 0;
Level_Line_Loss = 0;
Delta_LineProfit_LineStart = 0;
Delta_LineLoss_LineStart = 0;
Cnt_Tick_Advert = 0;
Txt_Set_Profit = "";
Txt_Set_Loss = "";
Txt_Limit_Equity_Max = "";
Txt_Limit_Equity_Cur = "";
Txt_Limit_Equity_Min = "";
Name_Obj_Advert = "Advert";
STOP_REASON_USER_SET = false;
ALERT_STIC = true;
END_WORK = false;
FLAG_CLOSE_ALL = false;
STOP_TRADE_IF_CLOSE = Set_STOP_TRADE_IF_CLOSE;
//--------------------------------------------------------------------
//- âû÷èñëåíèå óðîâíåé -----------------------------------------------
if(Set_Limit_Equity_Max != 0) Limit_Equity_Max = Set_Limit_Equity_Max;
if(Set_Limit_Equity_Min != 0) Limit_Equity_Min = Set_Limit_Equity_Min;
if(Set_Profit_Delta_Equity !=0) Limit_Equity_Max = AccountEquity() + Set_Profit_Delta_Equity;
if(Set_Loss_Delta_Equity !=0) Limit_Equity_Min = AccountEquity() - Set_Loss_Delta_Equity;
if(Set_Profit_Delta_Equity_Percent !=0) Limit_Equity_Max = AccountEquity() + (AccountEquity()/100)*Set_Profit_Delta_Equity_Percent;
if(Set_Loss_Delta_Equity_Percent !=0) Limit_Equity_Min = AccountEquity() - (AccountEquity()/100)*Set_Loss_Delta_Equity_Percent;
Delta_Start_and_Min_Equity = Start_Equity - Limit_Equity_Min;
//--------------------------------------------------------------------
//--- ïðîâåðêa óñòàíîâîê ïîëüçîâàòåëÿ --------------------------------
string Txt_Check_User_Set = check_user_set();
if(Txt_Check_User_Set != "")
{ Alert(Txt_Check_User_Set);
STOP_REASON_USER_SET = true;
}
//--------------------------------------------------------------------
//--- ñîçäà¸ì èìåíà ãëîáàëüíûõ ïåðåìåííûõ äëÿ ïåðåäà÷è ñèãíàëà -------
if(!ONLY_ALERT)
{
bool SET_VAR_STOP_TRADE = true;
for(int i = 1; i <= 100; i++) // èùåì ïåðâûå ñâîáîäíûå èìåíà è çàíèìàåì èõ
{ if(SET_VAR_STOP_TRADE && !GlobalVariableCheck(Symbol() + "_" + "Stop_Trade" + "_" + i))
{ GV_Name_Signal_Stop_Trade = Symbol() + "_" + "Stop_Trade" + "_" + i;
GlobalVariableSet(GV_Name_Signal_Stop_Trade,0.0);
SET_VAR_STOP_TRADE = false;
int ST = i;
}
}
}
//--------------------------------------------------------------------
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
clea_all();
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//--------------------------------------------------------------------
//-- îñòàíîâêà ïî ïðè÷èíå íåïðàâèëüíî ââåä¸ííûõ ïîëüçîâàòåëåì äàííûõ -
if(STOP_REASON_USER_SET) return(0);
//--------------------------------------------------------------------
//-- ïðîâåðêà ñóììû îòêðûòûõ ëîòîâ -----------------------------------
if((Old_Num_Orders != check_open_orders() || point_coast_get() == 0) && !END_WORK)
{ Cnt_Tick = 0;
del_only_obj();
Old_Num_Orders = check_open_orders();
Delta_Start_and_Min_Equity = Start_Equity - Limit_Equity_Min;
ObjectCreate ("No_Orders", OBJ_LABEL, 0, 0, 0);
ObjectSet ("No_Orders", OBJPROP_CORNER, 2);
ObjectSet ("No_Orders", OBJPROP_XDISTANCE, 5);
ObjectSet ("No_Orders", OBJPROP_YDISTANCE, 5);
ObjectSetText("No_Orders", "Ñòîèìîñòü ïóíêòà = 0! Èçìåíèòå áàëàíñ îðäåðîâ", 10, "Arial", Yellow);
return(0);
}
else ObjectDelete ("No_Orders");
//--------------------------------------------------------------------
//--- åñëè óðîâåíü îòðàáîòàë è âñå îðäåðà çàêðûëèñü ------------------
if(END_WORK)
{ del_only_obj();
if(STOP_TRADE_IF_CLOSE && ALERT_STIC)
{ if(!ONLY_ALERT)
{ GlobalVariableSet(GV_Name_Signal_Stop_Trade,1);
Alert("mm_Equity_Control: ôëàã çàïðåùåíèÿ òîðãîâëè äëÿ BlueDream óñòàíîâëåí!");
}
ALERT_STIC = false;
}
return(0);
}
//--------------------------------------------------------------------
//---- äèíàìè÷åñêîå èçìåíåíèå íèæíåãî ïðåäåëà ýêâèòè -----------------
Cur_Equity = AccountEquity();
if(DYNAMIC)
if(Cur_Equity - Limit_Equity_Min > Delta_Start_and_Min_Equity)
Limit_Equity_Min = Cur_Equity - Delta_Start_and_Min_Equity;
//--------------------------------------------------------------------
//---- âû÷èñëÿåì óðîâíè ëèíèé ----------------------------------------
Cost_Point = point_coast_get();
//----
//--------------------------------------------------------------------
//--- ðèñóåì ëèíèè ---------------------------------------------------
switch(Cnt_Tick)
{ //íà ïåðâîì òèêå
case 0:
Cnt_Tick++;
Level_Line_Start = Bid;
drow_line("Line_Start",Level_Line_Start,Color_Line_Start);
Start_Equity = AccountEquity();
//----
Delta_LineProfit_LineStart = MathRound((Limit_Equity_Max - Start_Equity)/(Cost_Point));
Level_Line_Profit = Level_Line_Start + Delta_LineProfit_LineStart*Point;
drow_line("Line_Profit",Level_Line_Profit,Color_Line_Profit);
//----
Delta_LineLoss_LineStart = MathRound((Start_Equity - Limit_Equity_Min)/(Cost_Point));
Level_Line_Loss = Level_Line_Start - Delta_LineLoss_LineStart*Point;
//----
drow_line("_Start_Line_Loss",Level_Line_Loss,Gray);
drow_line("Line_Loss",Level_Line_Loss,Color_Line_Loss);
Start_Limit_Equity_Min = Limit_Equity_Min;
break;
default:
Delta_LineLoss_LineStart = MathRound((Start_Equity - Limit_Equity_Min)/(Cost_Point));
Level_Line_Loss = Level_Line_Start - Delta_LineLoss_LineStart*Point;
//----
drow_line("Line_Loss",Level_Line_Loss,Color_Line_Loss);
//--------------------------------------------------------------------
//- ïîäãîòîâêà òåêñòà äëÿ âûâîäà -------------------------------------
if(Limit_Equity_Max == 0) Txt_Limit_Equity_Max = "Limit_Equity_Max = Íå óñòàíîâëåí!";
else
{ Txt_Limit_Equity_Max = "Equity_Max = " + DoubleToStr(Limit_Equity_Max,2);
double Max_Equity_Percent_Start = (Limit_Equity_Max - Start_Equity)/(Start_Equity/100);
double Max_Equity_Percent_Cur = (Limit_Equity_Max - Cur_Equity)/(Cur_Equity/100);
Txt_Set_Profit = "TP=" + DoubleToStr(Max_Equity_Percent_Start,1) + "% îò Start_Equity, " +
"TP=" + DoubleToStr(Max_Equity_Percent_Cur,1) + "% îò Cur_Equity";
}
//---------------------------
if(Limit_Equity_Min == 0) Txt_Limit_Equity_Min = "Limit_Equity_Min = Íå óñòàíîâëåí!";
else
{
Txt_Limit_Equity_Min = "Equity_Min = " + DoubleToStr(Start_Limit_Equity_Min,2);
Txt_Limit_Equity_Cur = "Tral_Equity_Min = " + DoubleToStr(Limit_Equity_Min,2);
double Min_Equity_Percent_Start = MathAbs((Start_Equity - Limit_Equity_Min)/(Start_Equity/100));
double Min_Equity_Percent_Cur = (Cur_Equity - Limit_Equity_Min)/(Cur_Equity/100);
Color_Txt_Set_Loss = Red;
Txt_Set_Loss = "SL=" + DoubleToStr(Min_Equity_Percent_Start,1) + "% îò Start_Equity, " +
"SL=" + DoubleToStr(Min_Equity_Percent_Cur,1) + "% îò Cur_Equity";
if(Limit_Equity_Min >= Start_Equity)
{ Color_Txt_Set_Loss = LimeGreen;
Txt_Set_Loss = "SL ïðåâûñèë Start_Equity íà "+ DoubleToStr(Min_Equity_Percent_Start,1) + "% " +
"SL=" + DoubleToStr(Min_Equity_Percent_Cur,1) + "% îò Cur_Equity";
}
}
//---------------------------
break;
}
//--------------------------------------------------------------------
//--- âûâîäèì èíôîðìàöèþ â îáúåêòû -----------------------------------
out_info();
set_advert();
//--------------------------------------------------------------------
//----- îòðàáàòûâàåì çàêðûòèå ----------------------------------------
if(Cur_Equity <= Limit_Equity_Min && Limit_Equity_Min !=0){if(ONLY_ALERT)Alert("Ýêâèòè äîñòèãëî óñòàíîâëåííîãî ìèíèìóìà!"); FLAG_CLOSE_ALL = true;}
if(Cur_Equity >= Limit_Equity_Max && Limit_Equity_Max !=0){if(ONLY_ALERT)Alert("Ýêâèòè äîñòèãëî óñòàíîâëåííîãî ìàêñèìóìà!");FLAG_CLOSE_ALL = true;}
if(FLAG_CLOSE_ALL)
{ if(ONLY_ALERT) END_WORK = true;
else
{ Close_All();
if(!check_open_orders())
{ end_work();
END_WORK = true;
}
}
}
//--------------------------------------------------------------------
//----
return(0);
}
//+------------------------------------------------------------------+
// ÔÓÍÊÖÈÈ
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| Close_All.mq4 |
//+------------------------------------------------------------------+
#property copyright "expforex"
#property link "http://expforex.at.ua"
#include <stdlib.mqh>
double Price[2];
int giSlippage;
int Close_All()
{
int iOrders=OrdersTotal()-1, i;
//----
for(i=iOrders; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)
&& OrderType()<=OP_SELL
&& OrderSymbol()==Symbol()
&& GetMarketInfo()
&& !OrderClose(OrderTicket(),OrderLots(),Price[1-OrderType()],giSlippage))
{
Print(OrderError());
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| Function..: GetMarketInfo |
//+------------------------------------------------------------------+
bool GetMarketInfo()
{
RefreshRates();
Price[0]=MarketInfo(OrderSymbol(),MODE_ASK);
Price[1]=MarketInfo(OrderSymbol(),MODE_BID);
double dPoint=MarketInfo(OrderSymbol(),MODE_POINT);
if(dPoint==0) return(false);
giSlippage=(Price[0]-Price[1])/dPoint;
return(Price[0]>0.0 && Price[1]>0.0);
}
//+------------------------------------------------------------------+
//| Function..: OrderError |
//+------------------------------------------------------------------+
string OrderError()
{
int iError=GetLastError();
return(StringConcatenate("Order:",OrderTicket()," GetLastError()=",iError," ",ErrorDescription(iError)));
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
void end_work()
{
color _Notice_Color;
string _Txt_Notice;
if(Start_Equity < AccountEquity())
{ _Notice_Color = DodgerBlue;
_Txt_Notice = "Çàêðûòî ñ ïðèáûëüþ, ïðè ýêâèòè = " + DoubleToStr(AccountEquity(),2);
PlaySound("payment.wav");
}
if(Start_Equity == AccountEquity())
{ _Notice_Color = White;
_Txt_Notice = "Çàêðûòî ïî íîëÿì, ïðè ýêâèòè = " + DoubleToStr(AccountEquity(),2);
PlaySound("ERROR.WAV");
}
if(Start_Equity > AccountEquity())
{ _Notice_Color = Red;
_Txt_Notice = "Çàêðûòî ñ óáûòêîì, ïðè ýêâèòè = " + DoubleToStr(AccountEquity(),2);
PlaySound("ERROR.WAV");
}
//-----
del_only_obj();
//-----
ObjectCreate("Close", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Close", _Txt_Notice, 14, "Arial", _Notice_Color);
ObjectSet("Close", OBJPROP_CORNER, Pozition);
ObjectSet("Close", OBJPROP_XDISTANCE, 5);
ObjectSet("Close", OBJPROP_YDISTANCE, 85);
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| âûâîäèì èíôî
//+------------------------------------------------------------------+
void out_info()
{
if(Limit_Equity_Max != 0 || Limit_Equity_Min != 0)
{
if(ONLY_ALERT)
{
ObjectCreate("Only_Alert", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Only_Alert", "Òîëüêî îïîâåùåíèå!", Size, "Arial", Red);
ObjectSet("Only_Alert", OBJPROP_CORNER, Pozition);
ObjectSet("Only_Alert", OBJPROP_XDISTANCE, 50);
ObjectSet("Only_Alert", OBJPROP_YDISTANCE, Size*19);
}
if(DYNAMIC)
{
if(TRIGER) TRIGER = false;
else TRIGER = true;
if(TRIGER)
{
ObjectCreate("Dynamic", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Dynamic", "ÒÐÀË ÂÊËÞ×ÅÍ!", Size, "Arial", Red);
ObjectSet("Dynamic", OBJPROP_CORNER, Pozition);
ObjectSet("Dynamic", OBJPROP_XDISTANCE, 5);
ObjectSet("Dynamic", OBJPROP_YDISTANCE, Size*17);
}
else ObjectDelete("Dynamic");
}
ObjectCreate("Start_Equity", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Start_Equity", "Start_Equity = " + DoubleToStr(Start_Equity,2), Size, "Arial", Yellow);
ObjectSet("Start_Equity", OBJPROP_CORNER, Pozition);
ObjectSet("Start_Equity", OBJPROP_XDISTANCE, 5);
ObjectSet("Start_Equity", OBJPROP_YDISTANCE, Size*15);
ObjectCreate("Cur_Equity", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Cur_Equity", "Cur_Equity = " + DoubleToStr(Cur_Equity,2), Size, "Arial", LimeGreen);
ObjectSet("Cur_Equity", OBJPROP_CORNER, Pozition);
ObjectSet("Cur_Equity", OBJPROP_XDISTANCE, 5);
ObjectSet("Cur_Equity", OBJPROP_YDISTANCE, Size*13);
ObjectDelete("Limit_Equity_Max");
ObjectCreate("Limit_Equity_Max", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Limit_Equity_Max", Txt_Limit_Equity_Max, Size, "Arial", DodgerBlue);
ObjectSet("Limit_Equity_Max", OBJPROP_CORNER, Pozition);
ObjectSet("Limit_Equity_Max", OBJPROP_XDISTANCE, 5);
ObjectSet("Limit_Equity_Max", OBJPROP_YDISTANCE, Size*11);
ObjectCreate("Limit_Equity_Min", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Limit_Equity_Min", Txt_Limit_Equity_Min, Size, "Arial", Red);
ObjectSet("Limit_Equity_Min", OBJPROP_CORNER, Pozition);
ObjectSet("Limit_Equity_Min", OBJPROP_XDISTANCE, 5);
ObjectSet("Limit_Equity_Min", OBJPROP_YDISTANCE, Size*9);
ObjectCreate("Limit_Equity_Cur", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Limit_Equity_Cur", Txt_Limit_Equity_Cur, Size, "Arial", Red);
ObjectSet("Limit_Equity_Cur", OBJPROP_CORNER, Pozition);
ObjectSet("Limit_Equity_Cur", OBJPROP_XDISTANCE, 5);
ObjectSet("Limit_Equity_Cur", OBJPROP_YDISTANCE, Size*7);
ObjectCreate("Set_Profit", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Set_Profit", Txt_Set_Profit, Size, "Arial", DodgerBlue);
ObjectSet("Set_Profit", OBJPROP_CORNER, Pozition);
ObjectSet("Set_Profit", OBJPROP_XDISTANCE, 5);
ObjectSet("Set_Profit", OBJPROP_YDISTANCE, Size*5);
ObjectCreate("Set_Loss", OBJ_LABEL, 0, 0, 0);
ObjectSetText("Set_Loss", Txt_Set_Loss, Size, "Arial", Color_Txt_Set_Loss);
ObjectSet("Set_Loss", OBJPROP_CORNER, Pozition);
ObjectSet("Set_Loss", OBJPROP_XDISTANCE, 5);
ObjectSet("Set_Loss", OBJPROP_YDISTANCE, Size*3);
}
return;
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| set_advert
//+------------------------------------------------------------------+
#define ADVERT0 "Ýòà ïðîãðàììà ÿâëÿåòñÿ îäíèì èç ìîäóëåé"
#define ADVERT1 "êîíñòðóêòîðà ñîâåòíèêîâ BlueDream"
#define ADVERT2 "èñïîëüçóÿ ãîòîâûå ìîäóëè"
#define ADVERT3 "âû ìîæåòå ñàìè ñîáðàòü ñîâåòíèêà"
#define ADVERT4 "äëÿ ýòîãî âàì íå íóæíî çíàòü ïðîãðàììèðîâàíèå"
#define ADVERT5 "ïîëíûé íàáîð äåòàëåé"
#define ADVERT6 "èùèòå ïîèñêîì â yandex"
#define ADVERT7 "ñîâåòíèê êîíñòðóêòîð BlueDream"
void set_advert()
{
switch(Cnt_Tick_Advert)
{
case 0:
Cnt_Tick_Advert++;
out_string_advert(ADVERT0, LimeGreen);
break;
case 5:
Cnt_Tick_Advert++;
out_string_advert(ADVERT1, LimeGreen);
break;
case 10:
Cnt_Tick_Advert++;
out_string_advert(ADVERT2, LimeGreen);
break;
case 15:
Cnt_Tick_Advert++;
out_string_advert(ADVERT3, LimeGreen);
break;
case 20:
Cnt_Tick_Advert++;
out_string_advert(ADVERT4, LimeGreen);
break;
case 25:
Cnt_Tick_Advert++;
out_string_advert(ADVERT5, LimeGreen);
break;
case 30:
Cnt_Tick_Advert++;
out_string_advert(ADVERT6, LimeGreen);
break;
case 35:
Cnt_Tick_Advert++;
out_string_advert(ADVERT7, LimeGreen);
break;
case 40:
Cnt_Tick_Advert=0;
break;
default:
Cnt_Tick_Advert++;
break;
}
return;
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| âûâîä ñòðîêè ðåêëàìû
//+------------------------------------------------------------------+
void out_string_advert(string _Txt, color _Color_Txt)
{
ObjectDelete (Name_Obj_Advert);
ObjectCreate (Name_Obj_Advert, OBJ_LABEL, 0, 0, 0);
ObjectSet (Name_Obj_Advert, OBJPROP_CORNER, 2);
ObjectSet (Name_Obj_Advert, OBJPROP_XDISTANCE, 5);
ObjectSet (Name_Obj_Advert, OBJPROP_YDISTANCE, 5);
ObjectSetText(Name_Obj_Advert, _Txt, 10, "Arial", _Color_Txt);
return;
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| ïðîâåðêà íàëè÷èÿ îòêðûòûõ îðäåðîâ
//+------------------------------------------------------------------+
int check_open_orders()
{
int _Just_Orders = 0;
int _Cnt = 0;
_Just_Orders=OrdersTotal()-1;
for(int _i=_Just_Orders; _i>=0; _i--)
{
if(OrderSelect(_i,SELECT_BY_POS,MODE_TRADES) && OrderType()<=OP_SELL && OrderSymbol()==Symbol())
_Cnt++;
}
return(_Cnt);
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| ðèñóåò ãîðèçîíòàëüíóþ ëèíèþ
//+------------------------------------------------------------------+
void drow_line(string _Name, double _Price, color _Color)
{
ObjectDelete(_Name);
ObjectCreate(_Name,OBJ_HLINE,0,0,_Price);
ObjectSet(_Name,OBJPROP_COLOR,_Color);
return;
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| ïðîâåðêà óñòàíîâîê ïîëüçîâàòåëÿ
//+------------------------------------------------------------------+
string check_user_set()
{ bool _STOP_REASON_1 = false,
_STOP_REASON_2 = false,
_STOP_REASON_3 = false,
_STOP_REASON_4 = false,
_STOP_REASON_5 = false;
string _Txt_Reason_1 = "Íåîáõîäèìî óñòàíîâèòü õîòÿ áû îäíî çíà÷åíèå!",
_Txt_Reason_2 = "Âåðõíèé ïðåäåë íå ìîæåò áûòü ìåíüøå òåêóùåãî çíà÷åíèÿ ýêâèòè!",
_Txt_Reason_3 = "Íèæíèé ïðåäåë íå ìîæåò áûòü áîëüøå òåêóùåãî çíà÷åíèÿ ýêâèòè!",
_Txt_Reason_4 = "Close_All_if_Profit_or_Loss: îòðèöàòåëüíûå çíà÷åíèÿ íå äîïóñòèìû!",
_Txt_Reason_5 = "Îïöèè ïðèáûëè è óáûòêà ìîæíî óñòàíàâëèâàòü íå â ïàðå," +
"\níî äîëæíî áûòü åäèíñòâåííîå çíà÷åíèå ïî ïðèáûëè è åäèíñòâåííîå ïî óáûòêó!";
//---------------------------
if(Set_Limit_Equity_Max == 0 && Set_Limit_Equity_Min == 0
&& Set_Profit_Delta_Equity == 0 && Set_Loss_Delta_Equity == 0
&& Set_Profit_Delta_Equity_Percent == 0 && Set_Loss_Delta_Equity_Percent == 0)
_STOP_REASON_1 = true;
//---------------------------
if(Set_Limit_Equity_Max < AccountEquity() && Set_Limit_Equity_Max != 0)
_STOP_REASON_2 = true;
//---------------------------
if(Set_Limit_Equity_Min > AccountEquity())
_STOP_REASON_3 = true;
//---------------------------
if(Set_Limit_Equity_Max < 0 || Set_Limit_Equity_Min < 0
|| Set_Profit_Delta_Equity < 0 || Set_Loss_Delta_Equity < 0
|| Set_Profit_Delta_Equity_Percent < 0 || Set_Loss_Delta_Equity_Percent < 0)
_STOP_REASON_4 = true;
//---------------------------
if(((Set_Limit_Equity_Max !=0 && Set_Profit_Delta_Equity !=0)
||(Set_Limit_Equity_Max !=0 && Set_Profit_Delta_Equity_Percent !=0)
||(Set_Profit_Delta_Equity !=0 && Set_Profit_Delta_Equity_Percent !=0))
||
((Set_Limit_Equity_Min !=0 && Set_Loss_Delta_Equity !=0)
||(Set_Limit_Equity_Min !=0 && Set_Loss_Delta_Equity_Percent !=0)
||(Set_Loss_Delta_Equity !=0 && Set_Loss_Delta_Equity_Percent !=0
)))
_STOP_REASON_5 = true;
//---------------------------
string _Txt_Alert_Stop_Reason = "";
if(_STOP_REASON_1) _Txt_Alert_Stop_Reason = _Txt_Reason_1 + "\n";
if(_STOP_REASON_2) _Txt_Alert_Stop_Reason = _Txt_Alert_Stop_Reason + _Txt_Reason_2 + "\n";
if(_STOP_REASON_3) _Txt_Alert_Stop_Reason = _Txt_Alert_Stop_Reason + _Txt_Reason_3 + "\n";
if(_STOP_REASON_4) _Txt_Alert_Stop_Reason = _Txt_Alert_Stop_Reason + _Txt_Reason_4 + "\n";
if(_STOP_REASON_5) _Txt_Alert_Stop_Reason = _Txt_Alert_Stop_Reason + _Txt_Reason_5;
//---------------------------
return(_Txt_Alert_Stop_Reason);
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| óäàëÿåì âñå ñëåäû ðàáîòû ìîäóëÿ
//+------------------------------------------------------------------+
void clea_all()
{ ObjectDelete("Close");
ObjectDelete("Only_Alert");
ObjectDelete("Dynamic");
ObjectDelete("Start_Equity");
ObjectDelete("Cur_Equity");
ObjectDelete("Limit_Equity_Max");
ObjectDelete("Set_Profit");
ObjectDelete("Limit_Equity_Min");
ObjectDelete("Set_Loss");
ObjectDelete("_Start_Line_Loss");
ObjectDelete("Obj_Advert");
ObjectDelete ("No_Orders");
ObjectDelete ("Limit_Equity_Cur");
//---------------------------
ObjectDelete("Line_Start");
ObjectDelete("Line_Profit");
ObjectDelete("Line_Loss");
//---------------------------
ObjectDelete(Name_Obj_Advert);
GlobalVariableDel(GV_Name_Signal_Stop_Trade);
return;
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| óäàëÿåì âñå ñëåäû ðàáîòû ìîäóëÿ
//+------------------------------------------------------------------+
void del_only_obj()
{ ObjectDelete("Only_Alert");
ObjectDelete("Dynamic");
ObjectDelete("Start_Equity");
ObjectDelete("Cur_Equity");
ObjectDelete("Limit_Equity_Max");
ObjectDelete("Set_Profit");
ObjectDelete("Limit_Equity_Min");
ObjectDelete("Set_Loss");
ObjectDelete("_Start_Line_Loss");
ObjectDelete("Advert");
ObjectDelete ("No_Orders");
ObjectDelete ("Limit_Equity_Cur");
//----
ObjectDelete("Line_Start");
ObjectDelete("Line_Profit");
ObjectDelete("Line_Loss");
return;
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+------------------------------------------------------------------+
//| ïðîâåðêà ñòîèìîñòè ïóíêòà
//+------------------------------------------------------------------+
double point_coast_get()
{
int _Just_Orders = 0;
double _Summ_Lots = 0;
double _LotVal = MarketInfo(Symbol(),MODE_TICKVALUE);//ñòîèìîñòü 1 ïóíêòà äëÿ 1 ëîòà
_Just_Orders=OrdersTotal()-1;
for(int _i=_Just_Orders; _i>=0; _i--)
{
if(OrderSelect(_i,SELECT_BY_POS,MODE_TRADES) && OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) _Summ_Lots += OrderLots();
if(OrderType()==OP_SELL) _Summ_Lots -= OrderLots();
}
}
double _Poin_Coast = _Summ_Lots*_LotVal;
return(_Poin_Coast);
}
//+------------------------------------------------------------------+
//+-------
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
---