Orders Execution
Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
iStockTimes_v1_5
/*
iStockTimes_v1_5.mq4
Îòîáðàæàåò âðåìÿ ðàáîòû îñíîâíûõ òîðãîâûõ ïëîùàäîê, à òàêæå íåêîòîðóþ äîïîëíèòåëüíóþ èíôîðìàöèþ.
Çàíèìàåò ìèíèìóì ìåñòà íà ãðàôèêå è íå ìåøàåò îöåíêå îñíîâíîé èíôîðìàöèè.
Öâåòîâàÿ ãàììà ïîäîáðàíà äëÿ óäîáíîãî âîñïðèÿòèÿ êàê íà ñâåòëîì, òàê è íà òåìíîì ôîíå.
Èíäèêàòîð ñàìîñòîÿòåëüíî îïðåäåëÿåò ÷àñîâîé ïîÿñ áðîêåðà. Äëÿ ýòîãî íåîáõîäèìî ðàçðåøèòü èìïîðò DLL íà âêëàäêå ñâîéñòâ.
Ïîêàçûâàåòñÿ âðåìÿ â ñëåäóþùèõ âðåìåííûõ çîíàõ:
UTC
Broker
Wellington
Sydney
Tokyo
Hong Kong, Singapore
Moscow
Europe Union (Frankfurt, Zurich, Paris)
London
New York
Chicago
Îòêðûòûå òîðãîâûå ïëîùàäêè ïîäñâå÷èâàþòñÿ çåëåíûì öâåòîì.
Òàêæå èíäèêàòîð îòîáðàæàåò íåêîòîðóþ èíôîðìàöèþ ïî òåêóùåìó áàðó ãðàôèêà:
îñòàâøååñÿ âðåìÿ äî îòêðûòèÿ ñëåäóþùåãî áàðà
òåêóùèé òèêîâûé îáúåì è ïðîãíîçèðóåìîå çíà÷åíèå åãî ïî îòíîøåíèþ ê ïðåäûäóùåìó áàðó â ïðîöåíòàõ (îòíîñèòåñü ñêåïòè÷åñêè ê ýòîìó ïîêàçàòåëþ)
ðàçìåð ñïðåäà
ðàçìåð ìàðæèíàëüíîãî çàëîãà (â ñêîáêàõ - ëîòíîñòü, äëÿ êîòîðîé âåäåòñÿ ðàñ÷åò; ìîæíî èçìåíèòü ÷åðåç quantity_lots, ïî óìîë÷àíèþ 1)
ñòîèìîñòü 1 ïóíêòà (ðàññ÷èòûâàåòñÿ äëÿ òîé æå ëîòíîñòè, ÷òî è ìàðæà)
ðàçìåð ñâîïà äëÿ äëèííûõ ïîçèöèé (ðàññ÷èòûâàåòñÿ äëÿ òîé æå ëîòíîñòè, ÷òî è ìàðæà)
ðàçìåð ñâîïà äëÿ êîðîòêèõ ïîçèöèé (ðàññ÷èòûâàåòñÿ äëÿ òîé æå ëîòíîñòè, ÷òî è ìàðæà)
2 çíà÷åíèÿ ATR ñ íàñòðàèâàåìûìè ïåðèîäàìè
è àêòóàëüíóþ èíôîðìàöèþ ïî òîðãîâîìó ñ÷åòó (áîëüøàÿ ÷àñòü ýòîé èíôîðìàöèè ñêðûâàåòñÿ, åñëè íåò îòêðûòûõ ïîçèöèé):
Equity - òåêóùåå êîëè÷åñòâî ñðåäñòâ íà ñ÷åòå
Free - äîñòóïíîå äëÿ òîðãîâëè êîëè÷åñòâî ñðåäñòâ
Buy - êîëè÷åñòâî îòêðûòûõ îðäåðîâ íà ïîêóïêó è ñóììàðíàÿ ëîòíîñòü
buy_profit - ïðèáûëü ïî îðäåðàì íà ïîêóïêó ñ ó÷¸òîì ñâîïîâ è êîìèññèé
Sell - êîëè÷åñòâî îòêðûòûõ îðäåðîâ íà ïðîäàæó è ñóììàðíàÿ ëîòíîñòü
sell_profit - ïðèáûëü ïî îðäåðàì íà ïðîäàæó ñ ó÷¸òîì ñâîïîâ è êîìèññèé
Total - îáùåå êîëè÷åñòâî îòêðûòûõ îðäåðîâ è ñóììàðíàÿ ëîòíîñòü
total_profit - ñóììàðíàÿ ïðèáûëü ïî ñ÷åòó ñ ó÷¸òîì ñâîïîâ è êîìèññèé
Comissions - îáùàÿ ñóììà êîìèññèé äëÿ îòêðûòûõ îðäåðîâ
Swaps - îáùàÿ ñóììà ñâîïîâ äëÿ îòêðûòûõ îðäåðîâ
Level - ìàðæèíàëüíûé óðîâåíü (îòíîøåíèå òåêóùèõ ñðåäñòâ ê òåêóùåìó çàëîãó)(*NEW*)
StopOut - çíà÷åíèå ìàðæèíàëüíîãî óðîâíÿ, êîãäà âîçíèêíåò ñîñòîÿíèå Stop Out (ïðèíóäèòåëüíîå çàêðûòèå óáûòî÷íûõ ïîçèöèé)(*NEW*)
Marg/Bal - îòíîøåíèå çàëîãà ê áàëàíñó â ïðîöåíòàõ
Ïðè íåîáõîäèìîñòè ìîæíî îòêëþ÷èòü îòîáðàæåíèå ÷àñîâ (show_clocks) è èíôîðìàöèè ïî ñ÷åòó (show_trade), îñòàâèâ òîëüêî èíôîðìàöèþ ïî áàðó (íàïðèìåð, ïðè ðàáîòå ñ íåñêîëüêèìè ãðàôèêàìè îäíîâðåìåííî). Ýòî ñíèçèò íàãðóçêó è óñêîðèò ðàáîòó èíäèêàòîðà.
Òàêæå ìîæíî îòäåëüíî íàñòðîèòü îòîáðàæåíèå êàæäîãî ýëåìåíòà ñ ïîìîùüþ ñîîòâåòñòâóþùåé îïöèè.
Ìîæíî èçìåíèòü óãîë ïðèâÿçêè èíäèêàòîðà íà ãðàôèêå (obj_corner) èëè ïðîñòî íà âðåìÿ ïåðåìåñòèòü åãî â ëþáîå ìåñòî ãðàôèêà âûäåëèâ ñòðîêó Next (ïîÿâèòñÿ ðàìêà âîêðóã íåå) è ïåðåòàùèâ ìûøêîé.
Ìîæíî îòêëþ÷èòü ôóíêöèþ àâòîìàòè÷åñêîãî îïðåäåëåíèÿ 5-çíà÷íîãî áðîêåðà (autodetect_fivedigbroker), òîãäà äàííûå ïî ñïðåäó è ñòîèìñòè ïóíêòà áóäóò âûäàâàòüñÿ â ðàçðÿäíîñòè ïîñòóïàþùèõ êîòèðîâîê.
Âíåøíèé âèä èíäèêàòîðà òàêæå íàñòðàèâàåòñÿ: ðàçìåð øðèôòà (font_size), ìåæäóñòðî÷íûé èíòåðâàë (interval), öâåòà ãðóïï ñòðîê.(*NEW*)
-
Ñïàñèáî çà ïðåäëîæåíèÿ è êðèòèêó ó÷àñòíèêàì ôîðóìà www.mql4.com/ru/: M.E.R.lin, Batman.
-
http://24timezones.com
http://www.worldtimezone.com
http://www.timeanddate.com
http://www.worldtimeserver.com/current_time_in_UTC.aspx
-
New Zealand
Daylight Saving commences on the last Sunday in September, when 2.00am becomes 3.00am, and ends on the first Sunday in April the following year, when 3.00am becomes 2.00am.
Australia
Across the south-eastern states and the ACT, daylight saving for future summers begins at 2am Eastern Standard Time on the first Sunday in October
and ends at 2am Eastern Standard Time (3am summer time) on the first Sunday in April.
European Union
DST Begins 1 a.m. UTC=GMT (Last Sunday in March)
DST Ends 1 a.m. UTC=GMT (Last Sunday in October)
USA, Canada
DST Begins 2 a.m. (Second Sunday in March)
DST Ends 2 a.m. (First Sunday in November)
*/
#property copyright "midorum, 2012"
#property link "midorum@gmail.com"
#property indicator_chart_window
#import "kernel32.dll"
int GetSystemTime(int& SYSTEMTIME[]);
#import
#define def_numInfo 10
#define def_numStocks 11
#define def_numTrade 13
#define def_hour 3600
#define def_day 86400
#define def_label_size 18
#define def_ini_trade_flag 0x1fff
#define def_y_offset 20
extern string a1="îòîáðàæàòü âðåìåííÛå çîíû";
extern bool show_clocks=true;
extern string a2="îòîáðàæàòü èíôîðìàöèþ ïî òîðãîâîìó ñ÷åòó";
extern bool show_trade=true;
extern string a4="ïåðèîä ïåðâîãî ATR";
extern int ATR1_period=14;
extern string a5="ïåðèîä âòîðîãî ATR";
extern int ATR2_period=5;
extern string a6="ðàçìåð øðèôòà";
extern int font_size=8;
extern string a7="ìåæäóñòðî÷íûé èíòåðâàë";
extern int interval=1;
extern string a10="óãîë ïðèâÿçêè èíäèêàòîðà (0-3)";
extern int obj_corner=1;
extern string a12="ðàñ÷åò äëÿ ëîòíîñòè:";
extern double quantity_lots=1.0;
extern string a11="ðàñïîçíàâàòü 5-çíà÷íîãî áðîêåðà";
extern bool autodetect_fivedigbroker=true;
extern string a8="öâåò 1";
extern color color1=SaddleBrown;
extern string a9="öâåò 2";
extern color color2=RoyalBlue;
extern string a91="öâåò 3";
extern color color3=RoyalBlue;
extern string a92="öâåò 4";
extern color color4=Gray;
extern string a70="öâåò äëÿ îòêðûòûõ ïëîùàäîê";
extern color open_color=Green;
extern string a71="öâåò äëÿ çàêðûòûõ ïëîùàäîê";
extern color close_color=Gray;
extern string a14="ïîêàçûâàòü èíôîðìàöèþ ïî áàðó";
extern bool Volumes_=true, Spread_=true, Margin_=true, Point_=true, SwapLong_=true, SwapShort_=true, ATR1_=true, ATR2_=true;
extern string a13="ïîêàçûâàòü ìèðîâîå âðåìÿ";
extern bool UTC_=true, Broker_=true, Wellington_=true, Sydney_=true, Tokyo_=true, HongKong_=true, Moscow_=true, EuropeUnion_=true, London_=true, NewYork_=true, Chicago_=true;
extern string a15="ïîêàçûâàòü òîðãîâóþ èíôîðìàöèþ";
extern bool Equity_=true, Free_=true, Buy_=true, Sell_=true, Total_=true, Comissions_=true, Swaps_=true, MarginLevel_=true, StopOut_=true, MarginBalance_=true;
string ind_name="iST_", font_name="Courier New";
int obj_x=15, obj_y=def_y_offset;
int cur_offset, offset;
datetime current_time;
double five_dig_broker=1, lot_size, tick_size;
string symbol;
int trade_flag=def_ini_trade_flag, stocks_flag;
bool move_basic_label=false;
bool user_move=false;
//èìåíà âðåìåííÛõ çîí/ïëîùàäîê
string stock_name[def_numStocks]={"UTC","Broker","Wellington","Sydney","Tokyo","HongKong","Moscow","EuropeUnion","London","NewYork","Chicago"};
//âðåìåííÛå çîíû äëÿ îáúåêòîâ (http://www.worldtimezone.com/datetime.html)
//0 - òåêóùèé âûáîð çîíû (íàñòðàèâàåòñÿ â init())
//1 - ñòàíäàðòíîå âðåìÿ çîíû (äëÿ ñåâåðíîãî ïîëóøàðèÿ)(äëÿ þæíîãî - ëåòíåå âðåìÿ çîíû)
//2 - ëåòíåå âðåìÿ çîíû (Daylight saving time) (äëÿ ñåâåðíîãî ïîëóøàðèÿ)(äëÿ þæíîãî - ñòàíäàðòíîå âðåìÿ çîíû)
//3 - ìåñÿö íà÷àëà DST (äëÿ ñåâåðíîãî ïîëóøàðèÿ)(äëÿ þæíîãî - ìåñÿö çàâåðøåíèÿ DST)
//4 - íåäåëÿ (âîñêðåñåíüå) íà÷àëà DST (0-Last) (äëÿ ñåâåðíîãî ïîëóøàðèÿ)(äëÿ þæíîãî - íåäåëÿ çàâåðøåíèÿ DST)
//5 - ìåñÿö çàâåðøåíèÿ DST (äëÿ ñåâåðíîãî ïîëóøàðèÿ)(äëÿ þæíîãî - ìåñÿö íà÷àëà DST)
//6 - íåäåëÿ (âîñêðåñåíüå) çàâåðøåíèÿ DST (0-Last) (äëÿ ñåâåðíîãî ïîëóøàðèÿ)(äëÿ þæíîãî - íåäåëÿ íà÷àëà DST)
int stock_zone[def_numStocks][7]={ 0,0,0,0,0,0,0, //UTC
0,0,0,0,0,0,0, //Broker
0,13,12,4,1,9,0, //Wellington
0,11,10,4,1,10,1, //Sydney
0,9,9,0,0,0,0, //Tokyo - íå ïåðåâîäÿò
0,8,8,0,0,0,0, //Hong Kong - íå ïåðåâîäÿò
0,4,4,0,0,0,0, //Moscow - íå ïåðåâîäÿò
0,1,2,3,0,10,0, //Europe Union
0,0,1,3,0,10,0, //London
0,-5,-4,3,2,11,1, //New York
0,-6,-5,3,2,11,1}; //Chicago
//âðåìÿ ðàáîòû îñíîâíûõ ïëîùàäîê (http://en.wikipedia.org/wiki/Stock_exchange)(http://www.worldtimezone.com/markets24.php)
//0 - ÷àñ è ìèíóòû îòêðûòèÿ
//1 - ÷àñ è ìèíóòû çàðûòèÿ
int stock_time[def_numStocks][2]={ 0000,0000, //UTC
0000,0000, //Broker
1000,1600, //New Zealand Exchange (https://www.nzx.com/) (íå ïðîâåðåíî)
1000,1600, //Australian Securities Exchange (http://www.asx.com.au/products/ASX-Trading%20hours-Market-phases.htm)
//Normal Trading takes place from 10:00 am to 4:00 pm, Sydney time.
0900,1510, //Tokyo Stock Exchange (http://www.tse.or.jp/english/index.html) (íå ïðîâåðåíî)
0930,1600, //Hong Kong Exchanges (http://www.hkex.com.hk/eng/rulesreg/traderules/sehk/Documents/chap-5_eng.pdf)
//The Morning Session shall commence at 9:30 a.m. and end at 12:00 noon; and
//The Afternoon Session shall commence at 1:30 p.m. and end at 4:00 p.m. provided that with effect from 5 March 2012,
//the Afternoon Session shall commence at 1:00 p.m. and end at 4:00 p.m..)
1000,1900, //MICEX-RTS (http://rts.micex.ru/s223)
//FX market is open from 10:00am until 19:00pm MSK
0900,1730, //Euronext (https://europeanequities.nyx.com/en/trading/trading-hours-and-holidays)
//OFFICIAL TRADING HOURS (CET) Continuously-traded securities 09:00-17:30
//Frankfurt (http://deutsche-boerse.com/dbag/dispatch/en/kir/gdb_navigation/trading)
//Trading times: 9.00 a.m. Start of stock trading, 5.30 p.m. End of stock trading
0800,1630, //London Stock Exchange (http://en.wikipedia.org/wiki/London_Stock_Exchange)
//Normal trading sessions on the main orderbook (SETS) are from 08:00 to 16:30
//every day of the week except Saturdays, Sundays and holidays declared by the Exchange in advance.
0930,1600, //New York Stock Exchange (http://corporate.nyx.com/holidays-and-hours/nyse)
//NYSE, NYSE Amex and NYSE Amex Options are open from Monday through Friday 9:30 a.m. to 4:00 p.m. ET.
0930,1600}; //Chicago (íå ïðîâåðåíî)
string info_name[def_numInfo]={"Next","Vol","vol_delta","Spread","Margin","Point","SwapLong","SwapShort","ATR1","ATR2"};
string trade_name[def_numTrade]={"Equity","Free","Buy","buy_profit","Sell","sell_profit","Total","total_profit","Comissions","Swaps","Level","StopOut","Marg/Bal"};
int ord_buy, ord_sell;
double ord_buy_lots, ord_sell_lots, ord_buy_profit, ord_sell_profit, ord_comissions, ord_swaps;
//-----------------------------------------------------------------------------------------------------
int init()
{
int i, _handle, _time_zone_information[43], _systemtime[4], _cur_month=Month();
datetime _first_time;
int _first_day, _first_sunday,_last_sunday;
symbol=Symbol();
if(autodetect_fivedigbroker && StringFind(symbol,"#",0)!=0 && (MarketInfo(symbol,MODE_DIGITS)==5 || MarketInfo(symbol,MODE_DIGITS)==3)) five_dig_broker=10;
lot_size=MarketInfo(symbol,MODE_LOTSIZE)*quantity_lots;
tick_size=MarketInfo(symbol,MODE_TICKSIZE)*five_dig_broker;
_first_time=TimeCurrent()-(Day()-1)*def_day;
_first_day=TimeDayOfWeek(_first_time);
_first_sunday=(7-_first_day)+1;
if(_first_sunday>7) _first_sunday-=7;
if(TimeMonth(_first_time+(_first_sunday+28-1)*def_day)==_cur_month)
{
_last_sunday=_first_sunday+28;
}
else
{
_last_sunday=_first_sunday+21;
}
for(i=0;i<def_numStocks;i++)
{
if(_cur_month>stock_zone[i][3] && _cur_month<stock_zone[i][5])
{
stock_zone[i][0]=stock_zone[i][2];//DST
continue;
}
if(_cur_month==stock_zone[i][3])
{
if(stock_zone[i][4]>0)
{
if(Day()>_first_sunday+7*(stock_zone[i][4]-1))
{
stock_zone[i][0]=stock_zone[i][2];//DST
}
else
{
stock_zone[i][0]=stock_zone[i][1];//standart
}
}
else
{
if(Day()>_last_sunday)
{
stock_zone[i][0]=stock_zone[i][2];//DST
}
else
{
stock_zone[i][0]=stock_zone[i][1];//standart
}
}
continue;
}
if(_cur_month==stock_zone[i][5])
{
if(stock_zone[i][4]>0)
{
if(Day()<_first_sunday+7*(stock_zone[i][4]-1))
{
stock_zone[i][0]=stock_zone[i][2];//DST
}
else
{
stock_zone[i][0]=stock_zone[i][1];//standart
}
}
else
{
if(Day()<_last_sunday)
{
stock_zone[i][0]=stock_zone[i][2];//DST
}
else
{
stock_zone[i][0]=stock_zone[i][1];//standart
}
}
continue;
}
stock_zone[i][0]=stock_zone[i][1];//standart
}
if(obj_corner>1)
{
_handle=FileOpen("iStockTimes.txt",FILE_READ|FILE_CSV);
if(_handle>0)
{
while(!FileIsEnding(_handle))
{
if(FileReadString(_handle)==symbol)
{
obj_y=StrToInteger(FileReadString(_handle));
cur_offset=StrToInteger(FileReadString(_handle));
break;
}
}
FileClose(_handle);
}
}
if(IsDllsAllowed())
{
GetSystemTime(_systemtime);
stock_zone[1][0]=TimeHour(TimeCurrent())-(_systemtime[2]&0x0000ffff);
}
else
{
if(show_clocks)
{
Alert("iStockTimes("+symbol+")-ðàçðåøèòå èìïîðò DLL íà âêëàäêå ñâîéñòâ!"+
"\nÝòî íåîáõîäèìî äëÿ ïðàâèëüíîãî îòîáðàæåíèÿ âðåìåíè èíäèêàòîðîì.");
show_clocks=false;
}
}
if(UTC_) stocks_flag|=0x0001;
if(Broker_) stocks_flag|=0x0002;
if(Wellington_) stocks_flag|=0x0004;
if(Sydney_) stocks_flag|=0x0008;
if(Tokyo_) stocks_flag|=0x0010;
if(HongKong_) stocks_flag|=0x0020;
if(Moscow_) stocks_flag|=0x0040;
if(EuropeUnion_) stocks_flag|=0x0080;
if(London_) stocks_flag|=0x0100;
if(NewYork_) stocks_flag|=0x0200;
if(Chicago_) stocks_flag|=0x0400;
if(obj_corner>1) offset=-font_size-interval;
else offset=font_size+interval;
return(0);
}
//-----------------------------------------------------------------------------------------------------
int deinit()
{
int i;
for(i=ObjectsTotal()-1;i>=0;i--)
{
if(StringFind(ObjectName(i),ind_name)==0) ObjectDelete(ObjectName(i));
}
return(0);
}
//-----------------------------------------------------------------------------------------------------
int start()
{
static datetime _last_run; current_time=TimeCurrent(); if((current_time-_last_run)<1) return(0); _last_run=current_time;
if(obj_corner>1 && !user_move)
{
if(obj_y+cur_offset<0 || obj_y+cur_offset>def_y_offset)
{
obj_y=MathAbs(cur_offset)+def_y_offset;
move_basic_label=true;
int _handle=FileOpen("iStockTimes.txt",FILE_READ|FILE_WRITE|FILE_CSV);
if(_handle>0)
{
while(!FileIsEnding(_handle)) if(FileReadString(_handle)==symbol) break;
if(FileIsEnding(_handle)) FileWrite(_handle,symbol);
FileSeek(_handle,0,SEEK_CUR);
FileWrite(_handle,obj_y);
FileWrite(_handle,cur_offset);
FileClose(_handle);
}
}
}
cur_offset=0;
Info();
if(show_clocks) Stocks();
if(show_trade) Trade();
WindowRedraw();
return(0);
}
//-----------------------------------------------------------------------------------------------------
//
void Info()
{
string _name,_str1,_str2;
color _color;
int i;
int _sign=0,_sec_zero=0,_min_zero=0,_period,_sec,_hour,_min,_delta;
bool _existing_object;
_period=Period()*60;
_sec=Time[0]+_period-current_time;
_hour=_sec/3600;
_sec%=3600;
_min=_sec/60;
if(_min<10) _min_zero='\x30';
_sec%=60;
if(_sec<10) _sec_zero='\x30';
if(current_time>Time[0])
{
_delta=((_period*Volume[0]/(current_time-Time[0]))-Volume[1])/Volume[1]*100;
}
if(_delta<0)
{
_color=Red;
}
else
{
_color=Green;
_sign='\x2B';
}
for(i=0;i<def_numInfo;i++)
{
_name=ind_name+info_name[i];
_existing_object=true;
ObjectType(_name);
if(GetLastError()==4202)
{
ObjectCreate(_name,OBJ_LABEL,0,0,0);
ObjectSet(_name,OBJPROP_CORNER,obj_corner);
_existing_object=false;
}
if(i==0 && _existing_object)
{
_period=obj_x;
obj_x=ObjectGet(_name,OBJPROP_XDISTANCE);
if(obj_x!=_period) user_move=true;
if(move_basic_label)
{
ObjectSet(_name,OBJPROP_YDISTANCE,obj_y);
move_basic_label=false;
}
else obj_y=ObjectGet(_name,OBJPROP_YDISTANCE);
}
else
{
ObjectSet(_name,OBJPROP_XDISTANCE,obj_x);
ObjectSet(_name,OBJPROP_YDISTANCE,obj_y+cur_offset);
}
switch(i)
{
case 0:
_str1=info_name[i];
_str2=StringConcatenate(_hour,":",CharToStr(_min_zero),_min,":",CharToStr(_sec_zero),_sec);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color1);
cur_offset+=offset;
break;
case 1:
if(Volumes_)
{
_str1=info_name[i];
_str2=StringConcatenate(DoubleToStr(Volume[0],0)," ");
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color2);
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 2:
if(Volumes_)
{
_str1="";
_str2=StringConcatenate(CharToStr(_sign)+_delta,"%");
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,_color);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 3:
if(Spread_)
{
_str1=info_name[i];
_str2=DoubleToStr(MarketInfo(symbol,MODE_SPREAD)/five_dig_broker,(five_dig_broker==10));
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color2);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 4:
if(Margin_)
{
_str1=StringConcatenate(info_name[i],"(",quantity_lots,")");
_str2=DoubleToStr(MarketInfo(symbol,MODE_MARGINREQUIRED)*quantity_lots,2);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color1);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 5:
if(Point_)
{
_str1=StringConcatenate(info_name[i],"(USD)");
_str2=DoubleToStr(PointValue(),2);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color1);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 6:
if(SwapLong_)
{
_str1=info_name[i];
_str2=DoubleToStr(MarketInfo(symbol,MODE_SWAPLONG)*quantity_lots,2);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color2);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 7:
if(SwapShort_)
{
_str1=info_name[i];
_str2=DoubleToStr(MarketInfo(symbol,MODE_SWAPSHORT)*quantity_lots,2);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color2);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 8:
if(ATR1_)
{
_str1=StringConcatenate(StringSubstr(info_name[i],0,3),"(",ATR1_period,")");
_str2=DoubleToStr(iATR(NULL,0,ATR1_period,0),4);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color1);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 9:
if(ATR2_)
{
_str1=StringConcatenate(StringSubstr(info_name[i],0,3),"(",ATR2_period,")");
_str2=DoubleToStr(iATR(NULL,0,ATR2_period,0),4);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color1);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
}
}
return;
}
//-----------------------------------------------------------------------------------------------------
//
void Stocks()
{
datetime _UTC_time,_stock_time;
string _name,_str1,_str2;
color _clock_color;
int i;
int _opcl_time;
_UTC_time=current_time-stock_zone[1][0]*def_hour;
cur_offset+=offset;
for(i=0;i<def_numStocks;i++)
{
_name=ind_name+stock_name[i];
_stock_time=_UTC_time+stock_zone[i][0]*def_hour;
_opcl_time=TimeHour(_stock_time)*100;
_opcl_time+=TimeMinute(_stock_time);
ObjectType(_name);
if(GetLastError()==4202)
{
ObjectCreate(_name,OBJ_LABEL,0,0,0);
ObjectSet(_name,OBJPROP_CORNER,obj_corner);
}
ObjectSet(_name,OBJPROP_XDISTANCE,obj_x);
ObjectSet(_name,OBJPROP_YDISTANCE,obj_y+cur_offset);
if(CheckBin(stocks_flag,i))
{
if(_opcl_time>=stock_time[i][0] && _opcl_time<stock_time[i][1])
{
_clock_color=open_color;
}
else
{
_clock_color=close_color;
}
_str1=stock_name[i];
_str2=TimeToStr(_stock_time,TIME_MINUTES);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,_clock_color);
cur_offset+=offset;
}
else
{
ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
}
}
return;
}
//-----------------------------------------------------------------------------------------------------
//
void Trade()
{
int i,_int;
string _name,_str1,_str2;
color _color;
double _acc_equity, _acc_margin;
EnumOrders();
_acc_equity=AccountEquity();
_acc_margin=AccountMargin();
if(_acc_margin==0)
{
for(i=2; i<def_numTrade; i++)
{
_int=MathPow(2,i);
_int^=0xffff;
trade_flag&=_int;
}
}
else trade_flag=def_ini_trade_flag;
cur_offset+=offset;
for(i=0;i<def_numTrade;i++)
{
_color=color4;
_name=ind_name+trade_name[i];
ObjectType(_name);
if(GetLastError()==4202)
{
ObjectCreate(_name,OBJ_LABEL,0,0,0);
ObjectSet(_name,OBJPROP_CORNER,obj_corner);
}
ObjectSet(_name,OBJPROP_XDISTANCE,obj_x);
ObjectSet(_name,OBJPROP_YDISTANCE,obj_y+cur_offset);
switch(i)
{
case 0:
if(Equity_ && CheckBin(trade_flag,i))
{
_str1=trade_name[i];
_str2=DoubleToStr(_acc_equity,2);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color3);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 1:
if(Free_ && CheckBin(trade_flag,i))
{
_str1=trade_name[i];
_str2=DoubleToStr(AccountFreeMargin(),2);
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color3);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 2:
if(Buy_ && CheckBin(trade_flag,i))
{
_str1=StringConcatenate(trade_name[i]," ",ord_buy);
_str2=DoubleToStr(ord_buy_lots,2);
GlueStrings(_str1,_str2);
if(ord_buy_profit<0) _color=Red;
if(ord_buy_profit>0) _color=Green;
ObjectSetText(_name,_str1,font_size,font_name,color4);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 3:
if(Buy_ && CheckBin(trade_flag,i))
{
_str1="";
_str2=DoubleToStr(ord_buy_profit,2);
GlueStrings(_str1,_str2);
if(ord_buy_profit<0) _color=Red;
if(ord_buy_profit>0) _color=Green;
ObjectSetText(_name,_str1,font_size,font_name,_color);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 4:
if(Sell_ && CheckBin(trade_flag,i))
{
_str1=StringConcatenate(trade_name[i]," ",ord_sell);
_str2=DoubleToStr(ord_sell_lots,2);
GlueStrings(_str1,_str2);
if(ord_sell_profit<0) _color=Red;
if(ord_sell_profit>0) _color=Green;
ObjectSetText(_name,_str1,font_size,font_name,color4);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 5:
if(Sell_ && CheckBin(trade_flag,i))
{
_str1="";
_str2=DoubleToStr(ord_sell_profit,2);
GlueStrings(_str1,_str2);
if(ord_sell_profit<0) _color=Red;
if(ord_sell_profit>0) _color=Green;
ObjectSetText(_name,_str1,font_size,font_name,_color);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 6:
if(Total_ && CheckBin(trade_flag,i))
{
_str1=StringConcatenate(trade_name[i]," ",ord_buy+ord_sell);
_str2=DoubleToStr(ord_buy_lots+ord_sell_lots,2);
GlueStrings(_str1,_str2);
if(ord_buy_profit+ord_sell_profit<0) _color=Red;
if(ord_buy_profit+ord_sell_profit>0) _color=Green;
ObjectSetText(_name,_str1,font_size,font_name,color4);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 7:
if(Total_ && CheckBin(trade_flag,i))
{
_str1="";
_str2=DoubleToStr(ord_buy_profit+ord_sell_profit,2);
GlueStrings(_str1,_str2);
if(ord_buy_profit+ord_sell_profit<0) _color=Red;
if(ord_buy_profit+ord_sell_profit>0) _color=Green;
ObjectSetText(_name,_str1,font_size,font_name,_color);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 8:
if(Comissions_ && CheckBin(trade_flag,i))
{
_str1=trade_name[i];
_str2=DoubleToStr(ord_comissions,2);
GlueStrings(_str1,_str2);
if(ord_comissions<0) _color=Red;
ObjectSetText(_name,_str1,font_size,font_name,_color);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 9:
if(Swaps_ && CheckBin(trade_flag,i))
{
_str1=trade_name[i];
_str2=DoubleToStr(ord_swaps,2);
GlueStrings(_str1,_str2);
if(ord_swaps<0) _color=Red;
if(ord_swaps>0) _color=Green;
ObjectSetText(_name,_str1,font_size,font_name,_color);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 10:
if(MarginLevel_ && CheckBin(trade_flag,i))
{
_str1=trade_name[i];
_str2=StringConcatenate(DoubleToStr(_acc_equity/_acc_margin*100,2),"%");
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color3);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 11:
if(StopOut_ && CheckBin(trade_flag,i))
{
_str1=trade_name[i];
if(AccountStopoutMode()==0) _str2=StringConcatenate(DoubleToStr(AccountStopoutLevel(),0),"%");
else _str2=StringConcatenate(DoubleToStr(AccountStopoutLevel(),2)," ",AccountCurrency());
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color3);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
case 12:
if(MarginBalance_ && CheckBin(trade_flag,i))
{
_str1=trade_name[i];
_str2=StringConcatenate(DoubleToStr(_acc_margin/AccountBalance()*100,2),"%");
GlueStrings(_str1,_str2);
ObjectSetText(_name,_str1,font_size,font_name,color4);
cur_offset+=offset;
ObjectSet(_name,OBJPROP_TIMEFRAMES,OBJ_ALL_PERIODS);
}
else ObjectSet(_name,OBJPROP_TIMEFRAMES,EMPTY);
break;
}
}
return;
}
//-----------------------------------------------------------------------------------------------------
//
void GlueStrings(string& _buf1,string& _buf2)
{
string _spases=" ";
int _lenght=def_label_size-StringLen(_buf1)-StringLen(_buf2);
if(_lenght>0) _spases=StringSubstr(_spases,0,_lenght);
else _spases="";
_buf1=StringConcatenate(_buf1,_spases,_buf2);
return;
}
//-----------------------------------------------------------------------------------------------------
//
void EnumOrders()
{
int i;
ord_buy=0;
ord_sell=0;
ord_buy_lots=0;
ord_sell_lots=0;
ord_buy_profit=0;
ord_sell_profit=0;
ord_comissions=0;
ord_swaps=0;
for(i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS);
switch(OrderType())
{
case OP_BUY:
ord_buy++;
ord_buy_lots+=OrderLots();
ord_buy_profit+=OrderProfit()+OrderCommission()+OrderSwap();
ord_comissions+=OrderCommission();
ord_swaps+=OrderSwap();
break;
case OP_SELL:
ord_sell++;
ord_sell_lots+=OrderLots();
ord_sell_profit+=OrderProfit()+OrderCommission()+OrderSwap();
ord_comissions+=OrderCommission();
ord_swaps+=OrderSwap();
break;
}
}
return;
}
//-----------------------------------------------------------------------------------------------------
bool CheckBin(int _mask, int _index)
{
int _int;
_int=MathPow(2,_index);
return(_mask&_int);
}
//-----------------------------------------------------------------------------------------------------
double PointValue()
{
string _base=StringSubstr(symbol,0,3)+"USD";
int _direct=StringFind(symbol,"USD",0);
switch(_direct)
{
case 0:// FX USD/...
return(lot_size*tick_size/MarketInfo(symbol,MODE_BID));
case 3:// FX .../USD
return(lot_size*tick_size);
default:
if(StringFind(symbol,"#",0)==0) return(lot_size*tick_size);//Futures
else return(lot_size*tick_size*MarketInfo(_base,MODE_BID)/MarketInfo(symbol,MODE_BID));// FX .../...
}
}
//-----------------------------------------------------------------------------------------------------
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
---