Orders Execution
Miscellaneous
0
Views
0
Downloads
0
Favorites
ex_Signal_V2_GS_2011_04_22
//+------------------------------------------------------------------+
//| ex_Signal_V2 |
//+------------------------------------------------------------------+
#property copyright "Copyright © valenok2003@mail.ru"
#property link "http://bluedream.ucoz.ru"
#define NAME_EXPERT "ex_Signal"
#define VER "V2"
#define RELIZE "GS_2011_04_22"
#define AUTOR "© valenok2003@mail.ru"
#define URL "http://bluedream.ucoz.ru"
#define ADVERT "BlueDream - êîíñòðóêòîð ñîâåòíèêîâ!"
#define ADVERT2 "Ñîâåòíèêè íà çàêàç"
#define MAX_NUM_ORDER 200
#define MAX_NUM_STRING 100
#define MAX_NUM_SYMBOL 50
extern bool Alert_Close_ON = true;
extern bool Alert_Open_ON = true;
extern bool Sound_ON = true;
extern bool REPORT = true; //ðàçðåøèòü âûâîä òåêóùåé èíôîðìàöèè
extern bool ADD_IN_LOG = false; //äîáàâëåíèå èíôû â ëîã ôàéë
extern int _TimeShowInfo = 2;
int
i, n,
Cnt_Orders,
Start_Min_Dist,
Arr_Tickets[MAX_NUM_ORDER][2],
Last_Position_Static_Txt;
bool
STOP_TRADE;
string
Name_Sound_Profit = "payment.wav",
Name_Sound_Loss = "ERROR.WAV",
Name_Sound_Open = "expert.wav",
Name_Sound_Set = "ok.wav",
Name_Sound_Close = "ok.wav",
Arr_Order_Symbol[MAX_NUM_SYMBOL],
Txt_Output;
datetime
StartTimerInf,
Time_Last_Check;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Txt_Output = "";
Last_Position_Static_Txt = 0;
Arr_Tickets[MAX_NUM_ORDER][2] = {0,0,,0,0};
Arr_Order_Symbol[MAX_NUM_SYMBOL] = {"",,""};
Cnt_Orders = 0;
STOP_TRADE = false;
Time_Last_Check = TimeCurrent();
Start_Min_Dist = MarketInfo(Symbol(),MODE_STOPLEVEL);
if(Alert_Close_ON) Sound_ON = false;
if(OrdersTotal() > MAX_NUM_ORDER-1)
{ Alert("Êîëè÷åñòâî îðäåðîâ ïðåâûøàåò ìàêñèìàëüíî äîïóñòèìîå çíà÷åíèå - " + MAX_NUM_ORDER);
STOP_TRADE = true;
return(0);
}
if(OrdersTotal()!=0)
{ for(i = OrdersTotal()-1; i >= 0; i--)
{ OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
Arr_Tickets[i,1] = OrderTicket();
Arr_Tickets[i,2] = OrderType();
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll(0,OBJ_LABEL);
Comment("");
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if(STOP_TRADE)return(0);
output_static_string_info("DELALL", Black);
color
Color_Txt = DodgerBlue,
Color_Txt_Attention = Yellow,
Color_Txt_Alarm = Orange;
//---------------------------
if(!IsDemo()) output_static_string_info("ÐÅÀËÜÍÛÉ ÑרÒ!", Color_Txt_Attention);
else output_static_string_info("Äåìî ñ÷¸ò!", Color_Txt);
//---------------------------
color Color_Txt_Min_Dist = Color_Txt;
if(Start_Min_Dist != MarketInfo(Symbol(),MODE_STOPLEVEL))
{ Color_Txt_Min_Dist = Color_Txt_Attention;
if(Sound_ON)PlaySound("alert2.wav");
Alert("Ìèíèìàëüíàÿ äèñòàíöèÿ èçìåíåíà!");
Start_Min_Dist = MarketInfo(Symbol(),MODE_STOPLEVEL);
}
output_static_string_info("Ìèíèìàëüíàÿ äèñòàíöèÿ " +Symbol()+" = "+DoubleToStr(MarketInfo(Symbol(),MODE_STOPLEVEL),0), Color_Txt_Min_Dist);
//------- ÏÐÎÂÅÐÊÀ ÍÀ ÍÀËÈ×ÈÅ ÎÐÄÅÐΠ--------
int CntSymbol = 0;
for(i = 0; i < MAX_NUM_SYMBOL; i++) Arr_Order_Symbol[i] = ""; //î÷èñòêà áóôåðà ñèìâîëîâ
if(OrdersTotal()!=0)
{ output_static_string_info("Âñåãî îðäåðîâ "+OrdersTotal(), Color_Txt_Attention);
for(i = OrdersTotal()-1; i >= 0; i--)
{ OrderSelect(i, SELECT_BY_POS, MODE_TRADES); //âûáèðàåì îðäåð
bool ADD_SYMBOL = true;
for(int n = 0; n<MAX_NUM_SYMBOL&&Arr_Order_Symbol[n]!=""; n++) //ñðàâíèâàåì ñèìâîë îðäåðà ñî âñåìè ñèìâîëàìè ìàññèâà
{ if(Arr_Order_Symbol[n] == OrderSymbol()) //åñëè óæå åñòü â ìàññèâå - óõîäèì íà ñëåäóþùèé îðäåð
{ ADD_SYMBOL = false;
break;
}
}
if(ADD_SYMBOL) //åñëè ñèìâîëà íå îêàçàëîñü â ìàññèâå - çàïèñûâàåì â ìàññèâ ïî ñ÷¸ò÷èêó
{ Arr_Order_Symbol[CntSymbol] = OrderSymbol();
CntSymbol++; //óâåëè÷èâàåì ñ÷¸ò÷èê
}
}
bool STOP = false;
n = 0;
while(!STOP)
{ Txt_Output = "";
for(i = 0; i < 4; i++)
{ if(i+n >= CntSymbol)
{ STOP = true;
break;
}
Txt_Output = Txt_Output +"|"+ Arr_Order_Symbol[i+n]+"|";
}
int Tmp = output_static_string_info(Txt_Output, Color_Txt_Alarm);
n += 4;
}
}
else Tmp = output_static_string_info("Îðäåðîâ íåò!", Color_Txt);
if(Last_Position_Static_Txt < Tmp) Last_Position_Static_Txt = Tmp;
//------ ÏÐÎÂÅÐÊÀ ÍÀ ÇÀÊÐÛÒÈÅ ------
for(i = 0; i<MAX_NUM_ORDER && Arr_Tickets[i,1]!=0; i++)
{ OrderSelect(Arr_Tickets[i,1], SELECT_BY_TICKET);
if(OrderCloseTime() > 0)
{ if(OrderType() <= OP_SELL)
{
if(OrderProfit() < 0)
{ Txt_Output = "Çàêðûò "+ Txt_Order_Type(OrderType())+", ñèìâîë "+OrderSymbol()+" c ÓÁÛÒÊÎÌ!";
output_mov_string_info(Txt_Output, Red, Last_Position_Static_Txt);
if(Sound_ON) PlaySound(Name_Sound_Loss);
if(Alert_Close_ON) Alert(Txt_Output);
}
if(OrderProfit() > 0)
{ Txt_Output = "Çàêðûò "+ Txt_Order_Type(OrderType())+", ñèìâîë "+OrderSymbol()+" c ÏÐÈÁÛËÜÞ!";
output_mov_string_info(Txt_Output, LimeGreen, Last_Position_Static_Txt);
if(Sound_ON) PlaySound(Name_Sound_Profit);
if(Alert_Close_ON) Alert(Txt_Output);
}
if(OrderProfit() == 0)
{ Txt_Output = "Çàêðûò "+ Txt_Order_Type(OrderType())+", ñèìâîë "+OrderSymbol()+"!";
output_mov_string_info(Txt_Output, Color_Txt_Alarm, Last_Position_Static_Txt);
if(Sound_ON) PlaySound(Name_Sound_Close);
if(Alert_Close_ON) Alert(Txt_Output);
}
}
else
output_mov_string_info("Óäàë¸í "+ Txt_Order_Type(OrderType())+", ñèìâîë "+OrderSymbol(), Color_Txt_Alarm, Last_Position_Static_Txt);
}
}
//------ ÏÐÎÂÅÐÊÀ ÑÐÀÁÎÒÀÂØÈÕ ÎÐÄÅÐÎÂ ----
for(i = 0; i < MAX_NUM_ORDER; i++)
{ OrderSelect(Arr_Tickets[i,1], SELECT_BY_TICKET);
if(Arr_Tickets[i,2] > OP_SELL)
{ if(OrderCloseTime() <= 0 && OrderType() != Arr_Tickets[i,2])
{ Txt_Output = "Ñðàáîòàë "+ Txt_Order_Type(Arr_Tickets[i,2])+", ñèìâîë "+OrderSymbol();
output_mov_string_info(Txt_Output, Color_Txt_Attention, Last_Position_Static_Txt);
if(Sound_ON) PlaySound(Name_Sound_Open);
if(Alert_Open_ON) Alert(Txt_Output);
}
}
}
//------ ÏÐÎÂÅÐÊÀ ÂÍÎÂÜ ÎÒÊÐÛÒÛÕ ÎÐÄÅÐÎÂ ------
bool SET_TIMER = false;
for(i = OrdersTotal()-1; i >= 0; i--)
{ OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderOpenTime() > Time_Last_Check)
{ if(OrderType() > OP_SELL)
{ Txt_Output = "Óñòàíîâëåí "+ Txt_Order_Type(OrderType())+", ñèìâîë "+OrderSymbol();
output_mov_string_info(Txt_Output, Color_Txt, Last_Position_Static_Txt);
SET_TIMER = true;
if(Sound_ON) PlaySound(Name_Sound_Set);
if(Alert_Open_ON) Alert(Txt_Output);
}
else
{ Txt_Output = "Îòêðûò "+ Txt_Order_Type(OrderType())+", ñèìâîë "+OrderSymbol();
output_mov_string_info(Txt_Output, Color_Txt_Attention, Last_Position_Static_Txt);
SET_TIMER = true;
if(Sound_ON) PlaySound(Name_Sound_Open);
if(Alert_Open_ON) Alert(Txt_Output);
}
}
}
if(SET_TIMER) Time_Last_Check = TimeCurrent();
//------ ÎÁÍÎÂËßÅÌ ÌÀÑÑÈ ÎÐÄÅÐΠ------
for(i = 0; i<MAX_NUM_ORDER; i++) Arr_Tickets[i,1]=0; //ïîñëå âñåõ ïðîâåðîê îáíîâëÿåì ìàññèâ îðäåðîâ
if(OrdersTotal()!=0)
{ for(i = OrdersTotal()-1; i >= 0; i--)
{ OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
Arr_Tickets[i,1] = OrderTicket();
Arr_Tickets[i,2] = OrderType();
}
}
//---------------------------
output_mov_string_info("NULL", Black, Last_Position_Static_Txt);
output_ADVERT();
return(0);
}
//+-------------------------------------------------------------------
// ÔÓÍÊÖÈÈ
//+-------------------------------------------------------------------
//+-------
//+-------
//+------------------------------------------------------------------+
//| âûâîä ÑÒÀÒÈ×ÅÑÊÈÕ ñòðîê èíôîðìàöèè 2011_04_07
//| âîçâðàùàåò íîìåð ïîñëåäíåé çàíÿòîé ïîçèöèè
//+------------------------------------------------------------------+
int
_Cnt_Static_Str = 0;
//-------------
int output_static_string_info(string _Txt, color _Color_Txt)
{ int
_i,_x,
_Len_Str,
_TimeShowInfo = 15,
_Dist = 15,
_PozStr,
_ShiftPoz = 15; //ñìåùåíèå îò âåðõà îêíà
string
_Name_Obj;
//-------------
// if(!REPORT)return;
if(_Txt == "DELALL" || _Cnt_Static_Str > MAX_NUM_STRING-1) //íóæíî äîáàâèòü óäàëåíèå ïî òàéìåðó
{ for(_i = 0; _i < _Cnt_Static_Str; _i++)
{ _Name_Obj = NAME_EXPERT + "_Static_" + _i;
_Len_Str = StringLen(ObjectDescription(_Name_Obj));
ObjectDelete(_Name_Obj);
_Name_Obj = "A_" + _Name_Obj + "_";
for(_x = 0; _x < _Len_Str;_x++) ObjectDelete(_Name_Obj + _x);
}
_Cnt_Static_Str = 0;
return(0);
}
_Name_Obj = NAME_EXPERT + "_Static_" + _Cnt_Static_Str;
_PozStr = _Dist*_Cnt_Static_Str;
ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
ObjectSet (_Name_Obj, OBJPROP_CORNER, 0);
ObjectSet (_Name_Obj, OBJPROP_XDISTANCE, 5);
ObjectSet (_Name_Obj, OBJPROP_YDISTANCE, _PozStr+_ShiftPoz);
ObjectSetText(_Name_Obj, _Txt, 10, "Lucida Console", _Color_Txt);
//------ ðèñóåì ïîäëîæêó
_Len_Str = StringLen(ObjectDescription(_Name_Obj));
_Name_Obj = "A_" + _Name_Obj + "_";
for(_x=0;_x<_Len_Str;_x++)
{ ObjectCreate (_Name_Obj+_x, OBJ_LABEL, 0, 0, 0);
ObjectSet (_Name_Obj+_x, OBJPROP_CORNER, 0);
ObjectSet (_Name_Obj+_x, OBJPROP_XDISTANCE, 4+_x*8);
ObjectSet (_Name_Obj+_x, OBJPROP_YDISTANCE, _PozStr+_ShiftPoz);
ObjectSetText(_Name_Obj+_x, CharToStr(110),10,"Wingdings",Black);
}
_Cnt_Static_Str++;
return(_PozStr+_ShiftPoz);
}
//+-------------------------------------------------------------------
//+-------
//+-------
//+------------------------------------------------------------------+
//| âûâîä áåãóùåé ñòðîêè èíôîðìàöèè 2011_04_08
//+------------------------------------------------------------------+
int
_Cnt_Mov_Str = 0;
void output_mov_string_info(string _Txt, color _Color_Txt, int _Start_Position)
{ int
_i,_x,
_Len_Str,
// _TimeShowInfo = 5,
_Dist = 15,
_ShiftPoz = _Start_Position+15;
string
_Name_Obj;
bool _HIDE_IDENTICAL_LINES = false; //åñëè ôëàã true, òî ñêðûâàåò äóáëèðóþùèåñÿ ñòðîêè
//-------------
//äîáàâëåíèå èíôû â ëîã ôàéë
if(ADD_IN_LOG && _Txt != "NULL" && _Txt != "" && _Txt != "DELALL") Print(NAME_EXPERT + " :" + _Txt);
//-------------
if(!REPORT)return;
if(_Txt == "DELALL" || _Cnt_Mov_Str > MAX_NUM_STRING-1)
{ for(_i = 0; _i < _Cnt_Mov_Str; _i++)
{ _Name_Obj = NAME_EXPERT + "_Mov_" + _i;
_Len_Str = StringLen(ObjectDescription(_Name_Obj));
ObjectDelete(_Name_Obj);
_Name_Obj = "A_" + _Name_Obj + "_";
for(_x = 0; _x < _Len_Str;_x++) ObjectDelete(_Name_Obj + _x);
}
_Cnt_Mov_Str = 0;
return;
}
if(_Txt != "NULL")
{ if(_HIDE_IDENTICAL_LINES) _Cnt_Mov_Str--;
_Name_Obj = NAME_EXPERT + "_Mov_" + _Cnt_Mov_Str;
int _PozStr = _Dist*_Cnt_Mov_Str;
ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
ObjectSet (_Name_Obj, OBJPROP_CORNER, 0);
ObjectSet (_Name_Obj, OBJPROP_XDISTANCE, 5);
ObjectSet (_Name_Obj, OBJPROP_YDISTANCE, _PozStr+_ShiftPoz);
ObjectSetText(_Name_Obj, _Txt, 10, "Lucida Console", _Color_Txt);
//------ ðèñóåì ïîäëîæêó
_Len_Str = StringLen(ObjectDescription(_Name_Obj));
_Name_Obj = "A_" + _Name_Obj + "_";
for(_x=0;_x<_Len_Str;_x++)
{ ObjectCreate (_Name_Obj+_x, OBJ_LABEL, 0, 0, 0);
ObjectSet (_Name_Obj+_x, OBJPROP_CORNER, 0);
ObjectSet (_Name_Obj+_x, OBJPROP_XDISTANCE, 4+_x*8);
ObjectSet (_Name_Obj+_x, OBJPROP_YDISTANCE, _PozStr+_ShiftPoz);
ObjectSetText(_Name_Obj+_x, CharToStr(110),10,"Wingdings",Black);
}
_Cnt_Mov_Str++;
StartTimerInf = TimeCurrent();
}
else //ïåðåâîäèì ñòðîêè (äëÿ ïåðåâîäà ñòðîê íà êàæäîì òèêå äîëæíà çàïóñêàòüñÿ ôóíêöèÿ ñ ïàðàìåòðîì NULL)
{ if(TimeCurrent() > StartTimerInf + _TimeShowInfo)
{ StartTimerInf = TimeCurrent(); // îáíóëÿåì òàéìåð
if(_Cnt_Mov_Str > 0)
{ for(_i = 0; _i < _Cnt_Mov_Str; _i++)
{ //óäàëÿåì òåêóùóþ ñòðîêó
_Name_Obj = NAME_EXPERT + "_Mov_" + _i;
_Len_Str = StringLen(ObjectDescription(_Name_Obj));
ObjectDelete(_Name_Obj);
_Name_Obj = "A_" + _Name_Obj + "_";
for(_x = 0; _x < _Len_Str;_x++) ObjectDelete(_Name_Obj + _x);
//ïîëó÷àåì èíôîðìàöèþ î ñëåäóþùåé ñòðîêå
_i++;
_Name_Obj = NAME_EXPERT + "_Mov_" + _i;
_Color_Txt = ObjectGet(_Name_Obj, OBJPROP_COLOR);
_Txt = ObjectDescription(_Name_Obj);
_Len_Str = StringLen(_Txt);
_i--;
_PozStr = _Dist*_i;
_Name_Obj = NAME_EXPERT + "_Mov_" + _i;
ObjectCreate (_Name_Obj, OBJ_LABEL, 0, 0, 0);
ObjectSet (_Name_Obj, OBJPROP_CORNER, 0);
ObjectSet (_Name_Obj, OBJPROP_XDISTANCE, 5);
ObjectSet (_Name_Obj, OBJPROP_YDISTANCE, _PozStr+_ShiftPoz);
ObjectSetText(_Name_Obj, _Txt, 10, "Lucida Console", _Color_Txt);
//------ ðèñóåì ïîäëîæêó
_Name_Obj = "A_" + _Name_Obj + "_";
for(_x=0;_x<_Len_Str;_x++)
{ ObjectCreate (_Name_Obj+_x, OBJ_LABEL, 0, 0, 0);
ObjectSet (_Name_Obj+_x, OBJPROP_CORNER, 0);
ObjectSet (_Name_Obj+_x, OBJPROP_XDISTANCE, 4+_x*8);
ObjectSet (_Name_Obj+_x, OBJPROP_YDISTANCE, _PozStr+_ShiftPoz);
ObjectSetText(_Name_Obj+_x, CharToStr(110),10,"Wingdings",Black);
}
}
_Cnt_Mov_Str--;
}
}
}
return;
}
//+------------------------------------------------------------------+
//+-------
//+-------
//+-------------------------------------------------------------------
//| output ADVERT 2011_04_11
//+------------------------------------------------------------------+
int
_Cnt_Advert = 0,
_Time_Start_Advert = 0;
string
_Txt_Advert;
void output_ADVERT()
{ int
_Time_Chenge_Advert = 30;
if(TimeCurrent() > _Time_Start_Advert + _Time_Chenge_Advert)
{ switch(_Cnt_Advert)
{ case 0:
_Txt_Advert = ADVERT;
_Time_Start_Advert = TimeCurrent();
_Cnt_Advert = 1;
break;
case 1:
_Txt_Advert = URL;
_Time_Start_Advert = TimeCurrent();
_Cnt_Advert = 2;
break;
case 2:
_Txt_Advert = AUTOR;
_Time_Start_Advert = TimeCurrent();
_Cnt_Advert = 3;
break;
case 3:
_Txt_Advert = ADVERT2;
_Time_Start_Advert = TimeCurrent();
_Cnt_Advert = 0;
break;
}
}
ObjectCreate ("Advert", OBJ_LABEL, 0, 0, 0);
ObjectSet ("Advert", OBJPROP_CORNER, 2);
ObjectSet ("Advert", OBJPROP_XDISTANCE, 5);
ObjectSet ("Advert", OBJPROP_YDISTANCE, 5);
ObjectSetText("Advert", _Txt_Advert, 10, "Arial", LimeGreen);
return;
}
//+-------------------------------------------------------------------
//+-------
//+-------
//+------------------------------------------------------------------+
//| ïåðåâîä òèïà îðäåðà â òåêñòîâûé ôîðìàò 2011_04_07
//+------------------------------------------------------------------+
string Txt_Order_Type(int _Type)
{ string _Txt_Return = "";
switch(_Type)
{ case 0: _Txt_Return = "BUY"; break;
case 1: _Txt_Return = "SELL";break;
case 2: _Txt_Return = "BUYLIMIT"; break;
case 3: _Txt_Return = "SELLLIMIT"; break;
case 4: _Txt_Return = "BUYSTOP"; break;
case 5: _Txt_Return = "SELLSTOP"; break;
default: _Txt_Return = "Îøèáêà òèïà îðäåðà"; break;
}
return(_Txt_Return);
}
//+-------------------------------------------------------------------
//+-------
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
---