Daily LinesBoxes
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «dailylinesboxes.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Daily LinesBoxes — это индикатор для MetaTrader 4, который рисует на графике графические объекты на основе ежедневных данных. Для каждого дня в заданном диапазоне он создаёт прямоугольники, горизонтальные и вертикальные линии, линии цен закрытия и открытия, текстовые метки и стрелки, настраиваемые через параметр свойств.
Индикатор перебирает дни за период LookbackDays, вычисляет ценовые уровни (максимум, минимум, объёмные экстремумы, диапазон и др.) в зависимости от режима, заданного строкой Properties, и размещает объекты с учётом фильтрации по дням недели и совместимости с таймфреймами.
Объекты обновляются автоматически с заданным интервалом RefreshEveryXMins, а также при смене таймфрейма. Параметр CandlesMustExist позволяет ограничить отрисовку только теми днями, на которых существуют свечи на целевом таймфрейме.
Настройки программы
| Настройка | Описание |
|---|---|
| LookbackDays | Количество дней назад — Количество дней назад, в пределах которых выполняется расчёт и отрисовка объектов. |
| StartHours | Час начала — Час начала интервала для расчёта уровней (в часах от начала дня). |
| EndHours | Час окончания — Час окончания интервала для расчёта уровней (в часах от начала дня). |
| ExtendHours | Расширенный час — Час расширенного интервала, используемый для вертикальных линий и горизонтальных линий. |
| UniqueID | Уникальный идентификатор — Уникальный идентификатор префикса для имён графических объектов, создаваемых индикатором. |
| BoxColor | Цвет прямоугольников — Цёт прямоугольников, отображаемых на графике. |
| LineColor | Цвет линий — Цвет горизонтальных, вертикальных и ценовых линий. |
| Properties | Свойства — Строка свойств, управляющая типом отображаемых объектов, стилем линий, шириной и выбором ценового уровня (например, FTH2). |
| TextProperties | Свойства текста — Строка параметров для отображения текстовых меток с информацией о высоте прямоугольника. |
| SymbolProperties | Свойства символов — Строка параметров для отображения стрелочных символов (Wingdings) на графике. |
| DaysOfWeek | Дни недели — Строка дней недели, на которых отображаются объекты (например, Mon,Tue,Wed,Thu,Fri). |
| Visibility | Видимость — Строка таймфреймов, на которых видны создаваемые объекты (например, M1,M5,M15,M30,H1,H4). |
| TimeFrame | Таймфрейм — Таймфрейм, на котором выполняется расчёт ценовых уровней (если пусто — используется текущий таймфрейм графика). |
| CandlesMustExist | Свечи должны существовать — Переключатель: если включён, объекты рисуются только при наличии соответствующих свечей на целевом таймфрейме. |
| ClearancePips | Профиль в пипсах — Смещение уровней прямоугольников в пипсах (прибавляется к верхней границе и вычитается из нижней). |
| RefreshEveryXMins | Обновление каждые X минут — Интервал автоматического обновления объектов в минутах (значение ограничивается до ближайшего допустимого шага). |
Поиск по коду файла
#property indicator_chart_window
#import "kernel32.dll"
void OutputDebugStringA(string msg);
#import
extern int LookbackDays = 20;
extern double StartHours = -1;
extern double EndHours = 6;
extern double ExtendHours = 23;
extern string UniqueID = "DLB#1";
extern color BoxColor = C'0,64,0';
extern color LineColor = Green;
extern string Properties = "FTH2";
extern string TextProperties = "Arial,9,White,4,7";
extern string SymbolProperties = "2,White,108,10";
extern string DaysOfWeek = "Mon,Tue,Wed,Thu,Fri";
extern string Visibility = "M1,M5,M15,M30,H1,H4";
extern string TimeFrame = "M5";
extern bool CandlesMustExist = false;
extern double ClearancePips = 0;
extern int RefreshEveryXMins = 1;
int tscale;
datetime prev_time;
string sym, arr[5];
double pnt;
int dig;
int init() {
// код доступен только после оплаты
}
int deinit() {
del_obj();
return(0);
}
int start() {
// код доступен только после оплаты
}
void del_obj() {
int k=0;
while (k<ObjectsTotal()) {
string objname = ObjectName(k);
if (StringSubstr(objname,0,StringLen(UniqueID)) == UniqueID)
ObjectDelete(objname);
else
k++;
}
return(0);
}
void plot_obj() {
if (TimeFrame == "")
tscale = Period();
else
tscale = StrToTF(TimeFrame);
sym = Symbol();
pnt = MarketInfo(sym,MODE_POINT);
dig = MarketInfo(sym,MODE_DIGITS);
if (dig == 3 || dig == 5) {
pnt *= 10;
}
DaysOfWeek = StringUpper(DaysOfWeek) + ",";
Visibility = StringUpper(Visibility) + ",";
string test_vis[9] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
int vis = 0, inc = 1;
for (int i=0; i<9; i++) {
if (StringFind(Visibility,test_vis[i]+",") >= 0) vis+=inc;
inc*=2;
}
datetime tc = TimeCurrent();
for (i=0; i<LookbackDays; i++) {
int shifted = tc-i*86400;
if (shifted < Time[Bars-1]) break;
if (StringFind(DaysOfWeek,StringUpper(DateToStr(shifted,"w"))+",") < 0) continue;
datetime dt1 = StrToTime(DateToStr(shifted,"Y.M.D")) + 3600 * StartHours;
datetime dt2 = StrToTime(DateToStr(shifted,"Y.M.D")) + 3600 * EndHours;
datetime dt3 = StrToTime(DateToStr(shifted,"Y.M.D")) + 3600 * ExtendHours;
int exist1 = iBarShift(NULL,tscale,dt1,true);
int exist2 = iBarShift(NULL,tscale,dt2,true);
int exist3 = iBarShift(NULL,tscale,dt3,true);
double hi = 0, lo = 999999;
double hivol = 0, lovol = 999999, vol = 0;
double hirng = 0, lorng = 999999, rng = 0;
double hivtr = 0, lovtr = 999999, vtr = 0;
double hivdr = 0, lovdr = 999999, vdr = 0;
int bar1 = iBarShift(NULL,tscale,dt1,false);
int bar2 = iBarShift(NULL,tscale,dt2,false);
for (int j=bar1; j>bar2; j--) {
hi = MathMax(hi,iHigh(NULL,tscale,j));
lo = MathMin(lo,iLow(NULL,tscale,j));
double range = iHigh(NULL,tscale,j) - iLow(NULL,tscale,j);
double vtrtmp = range * iVolume(NULL,tscale,j);
double vdrtmp = DivZero(iVolume(NULL,tscale,j), range);
if (range > rng) { rng = range; hirng = iHigh(NULL,tscale,j); lorng = iLow(NULL,tscale,j); }
if (vtrtmp > vtr) { vtr = vtrtmp; hivtr = iHigh(NULL,tscale,j); lovtr = iLow(NULL,tscale,j); }
if (vdrtmp > vdr) { vdr = vdrtmp; hivdr = iHigh(NULL,tscale,j); lovdr = iLow(NULL,tscale,j); }
if (iVolume(NULL,tscale,j) > vol) { vol = iVolume(NULL,tscale,j); hivol = iHigh(NULL,tscale,j); lovol = iLow(NULL,tscale,j); }
}
string prop = StringUpper(Properties);
if (StringFind(prop,"E",0) >= 0) { hi = hivol; lo = lovol; } else
if (StringFind(prop,"R",0) >= 0) { hi = hirng; lo = lorng; } else
if (StringFind(prop,"M",0) >= 0) { hi = hivtr; lo = lovtr; } else
if (StringFind(prop,"D",0) >= 0) { hi = hivdr; lo = lovdr; }
hi += ClearancePips * pnt;
lo -= ClearancePips * pnt;
int width = StrToNumber(Properties);
int style = STYLE_SOLID;
if (StringFind(prop,"-..",0) >= 0) style = STYLE_DASHDOTDOT; else
if (StringFind(prop,"-.",0) >= 0) style = STYLE_DASHDOT; else
if (StringFind(prop,".",0) >= 0) style = STYLE_DOT; else
if (StringFind(prop,"--",0) >= 0) style = STYLE_DASH;
if (StringFind(prop,"<",0) >= 0) hi = iOpen(NULL,tscale,bar1);
if (StringFind(prop,">",0) >= 0) lo = iOpen(NULL,tscale,bar1);
if (StringFind(prop,"F",0) >= 0 || StringFind(prop,"B",0) >= 0 || StringFind(prop,"T",0) >= 0) {
string objname = UniqueID+"-"+i+"-r";
if (StringFind(prop,"T",0) >= 0) {
datetime dt4 = dt2;
int exist4 = exist2;
} else {
dt4 = dt3;
exist4 = exist3;
}
if (!CandlesMustExist || (exist1 >= 0 && exist4 >= 0)) {
ObjectCreate(objname,OBJ_RECTANGLE,0,dt1,hi,dt4,lo);
ObjectSet(objname,OBJPROP_COLOR,BoxColor);
ObjectSet(objname,OBJPROP_BACK,false);
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
if (StringFind(prop,"F",0) >= 0) ObjectSet(objname,OBJPROP_BACK,true);
if (StringFind(prop,"P",0) >= 0) ObjectSetText(objname,DoubleToStr((hi-lo)/pnt,0));
} }
if (StringFind(prop,"H",0) >= 0) {
if (!CandlesMustExist || (exist1 >= 0 && exist3 >= 0)) {
objname = UniqueID+"-"+i+"-hi";
ObjectCreate(objname,OBJ_TREND,0,dt1,hi,dt3,hi);
ObjectSet(objname,OBJPROP_RAY,0);
if (StringFind(prop,"X",0) >= 0) ObjectSet(objname,OBJPROP_RAY,true);
ObjectSet(objname,OBJPROP_COLOR,LineColor);
ObjectSet(objname,OBJPROP_WIDTH,width);
ObjectSet(objname,OBJPROP_STYLE,style);
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
objname = UniqueID+"-"+i+"-lo";
ObjectCreate(objname,OBJ_TREND,0,dt1,lo,dt3,lo);
ObjectSet(objname,OBJPROP_RAY,0);
if (StringFind(prop,"X",0) >= 0) ObjectSet(objname,OBJPROP_RAY,true);
ObjectSet(objname,OBJPROP_COLOR,LineColor);
ObjectSet(objname,OBJPROP_WIDTH,width);
ObjectSet(objname,OBJPROP_STYLE,style);
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
} }
if (StringFind(prop,"C",0) >= 0) {
if (!CandlesMustExist || (exist1 >= 0 && exist3 >= 0)) {
objname = UniqueID+"-"+i+"-cl";
double price = iClose(NULL,tscale,bar1);
ObjectCreate(objname,OBJ_TREND,0,dt1,price,dt3,price);
ObjectSet(objname,OBJPROP_RAY,0);
if (StringFind(prop,"X",0) >= 0) ObjectSet(objname,OBJPROP_RAY,true);
ObjectSet(objname,OBJPROP_COLOR,LineColor);
ObjectSet(objname,OBJPROP_WIDTH,width);
ObjectSet(objname,OBJPROP_STYLE,style);
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
} }
if (StringFind(prop,"O",0) >= 0) {
if (!CandlesMustExist || (exist1 >= 0 && exist3 >= 0)) {
objname = UniqueID+"-"+i+"-op";
price = iOpen(NULL,tscale,bar1);
ObjectCreate(objname,OBJ_TREND,0,dt1,price,dt3,price);
ObjectSet(objname,OBJPROP_RAY,0);
if (StringFind(prop,"X",0) >= 0) ObjectSet(objname,OBJPROP_RAY,true);
ObjectSet(objname,OBJPROP_COLOR,LineColor);
ObjectSet(objname,OBJPROP_WIDTH,width);
ObjectSet(objname,OBJPROP_STYLE,style);
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
} }
if (StringFind(prop,"V",0) >= 0) {
if (!CandlesMustExist || exist1 >= 0) {
objname = UniqueID+"-"+i+"-va";
ObjectCreate(objname,OBJ_VLINE,0,dt1,0);
ObjectSet(objname,OBJPROP_COLOR,LineColor);
ObjectSet(objname,OBJPROP_WIDTH,width);
ObjectSet(objname,OBJPROP_STYLE,style);
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
if (StringFind(prop,"^",0) >= 0) ObjectSet(objname,OBJPROP_BACK,true);
}
if (StringFind(prop,"VV",0) >= 0) {
if (!CandlesMustExist || exist3 >= 0) {
objname = UniqueID+"-"+i+"-vb";
ObjectCreate(objname,OBJ_VLINE,0,dt3,0);
ObjectSet(objname,OBJPROP_COLOR,LineColor);
ObjectSet(objname,OBJPROP_WIDTH,width);
ObjectSet(objname,OBJPROP_STYLE,style);
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
if (StringFind(prop,"^",0) >= 0) ObjectSet(objname,OBJPROP_BACK,true);
} } }
if (TextProperties > "") {
StrToStringArray(TextProperties,arr);
double prc = StrToNumber(arr[3]);
prc = (hi+prc*pnt)*(prc>=0) + (lo+prc*pnt)*(prc<0);
objname = UniqueID+"-"+i+"-t";
ObjectCreate(objname,OBJ_TEXT,0,dt1,prc);
ObjectSetText(objname,NumberToStr((hi-lo)/pnt,arr[4]),StrToInteger(arr[1]),arr[0],StrToColor(arr[2]));
}
if (StringFind(prop,"W",0) >= 0 && SymbolProperties > "") {
if (!CandlesMustExist || exist1 >= 0) {
int bar = iBarShift(NULL,0,dt1,true);
double high = iHigh(NULL,0,bar);
double low = iLow(NULL,0,bar);
StrToStringArray(SymbolProperties,arr);
prc = StrToNumber(arr[3]);
prc = (high+prc*pnt)*(prc>=0) + (low+prc*pnt)*(prc<0);
objname = UniqueID+"-"+i+"-wa";
ObjectCreate(objname,OBJ_ARROW,0,dt1,prc);
ObjectSet(objname,OBJPROP_ARROWCODE,StrToInteger(arr[2]));
ObjectSet(objname,OBJPROP_COLOR,StrToColor(arr[1]));
ObjectSet(objname,OBJPROP_WIDTH,StrToInteger(arr[0]));
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
}
if (StringFind(prop,"WW",0) >= 0 && SymbolProperties > "") {
if (!CandlesMustExist || exist3 >= 0) {
bar = iBarShift(NULL,0,dt3,true);
high = iHigh(NULL,0,bar);
low = iLow(NULL,0,bar);
prc = StrToNumber(arr[3]);
prc = (high+prc*pnt)*(prc>=0) + (low+prc*pnt)*(prc<0);
objname = UniqueID+"-"+i+"-wb";
ObjectCreate(objname,OBJ_ARROW,0,dt3,prc);
ObjectSet(objname,OBJPROP_ARROWCODE,StrToInteger(arr[2]));
ObjectSet(objname,OBJPROP_COLOR,StrToColor(arr[1]));
ObjectSet(objname,OBJPROP_WIDTH,StrToInteger(arr[0]));
ObjectSet(objname,OBJPROP_TIMEFRAMES,vis);
} } } }
return(0);
}
void log(string s1, string s2="", string s3="", string s4="", string s5="", string s6="", string s7="", string s8="") {
string out = StringTrimRight(StringConcatenate(WindowExpertName(), ".mq4 ", Symbol(), " ", s1, " ", s2, " ", s3, " ", s4, " ", s5, " ", s6, " ", s7, " ", s8));
OutputDebugStringA(out);
}
int BarConvert(int bar, string FromTF, string ToTF, string ccy="") {
if (ccy == "") ccy = Symbol();
return(iBarShift(ccy,StrToTF(ToTF),iTime(ccy,StrToTF(FromTF),bar)));
}
int StrToColor(string str)
{
str = StringLower(str);
if (str == "aliceblue") return(0xFFF8F0);
if (str == "antiquewhite") return(0xD7EBFA);
if (str == "aqua") return(0xFFFF00);
if (str == "aquamarine") return(0xD4FF7F);
if (str == "beige") return(0xDCF5F5);
if (str == "bisque") return(0xC4E4FF);
if (str == "black") return(0x000000);
if (str == "blanchedalmond") return(0xCDEBFF);
if (str == "blue") return(0xFF0000);
if (str == "blueviolet") return(0xE22B8A);
if (str == "brown") return(0x2A2AA5);
if (str == "burlywood") return(0x87B8DE);
if (str == "cadetblue") return(0xA09E5F);
if (str == "chartreuse") return(0x00FF7F);
if (str == "chocolate") return(0x1E69D2);
if (str == "coral") return(0x507FFF);
if (str == "cornflowerblue") return(0xED9564);
if (str == "cornsilk") return(0xDCF8FF);
if (str == "crimson") return(0x3C14DC);
if (str == "darkblue") return(0x8B0000);
if (str == "darkgoldenrod") return(0x0B86B8);
if (str == "darkgray") return(0xA9A9A9);
if (str == "darkgreen") return(0x006400);
if (str == "darkkhaki") return(0x6BB7BD);
if (str == "darkolivegreen") return(0x2F6B55);
if (str == "darkorange") return(0x008CFF);
if (str == "darkorchid") return(0xCC3299);
if (str == "darksalmon") return(0x7A96E9);
if (str == "darkseagreen") return(0x8BBC8F);
if (str == "darkslateblue") return(0x8B3D48);
if (str == "darkslategray") return(0x4F4F2F);
if (str == "darkturquoise") return(0xD1CE00);
if (str == "darkviolet") return(0xD30094);
if (str == "deeppink") return(0x9314FF);
if (str == "deepskyblue") return(0xFFBF00);
if (str == "dimgray") return(0x696969);
if (str == "dodgerblue") return(0xFF901E);
if (str == "firebrick") return(0x2222B2);
if (str == "forestgreen") return(0x228B22);
if (str == "gainsboro") return(0xDCDCDC);
if (str == "gold") return(0x00D7FF);
if (str == "goldenrod") return(0x20A5DA);
if (str == "gray") return(0x808080);
if (str == "green") return(0x008000);
if (str == "greenyellow") return(0x2FFFAD);
if (str == "honeydew") return(0xF0FFF0);
if (str == "hotpink") return(0xB469FF);
if (str == "indianred") return(0x5C5CCD);
if (str == "indigo") return(0x82004B);
if (str == "ivory") return(0xF0FFFF);
if (str == "khaki") return(0x8CE6F0);
if (str == "lavender") return(0xFAE6E6);
if (str == "lavenderblush") return(0xF5F0FF);
if (str == "lawngreen") return(0x00FC7C);
if (str == "lemonchiffon") return(0xCDFAFF);
if (str == "lightblue") return(0xE6D8AD);
if (str == "lightcoral") return(0x8080F0);
if (str == "lightcyan") return(0xFFFFE0);
if (str == "lightgoldenrod") return(0xD2FAFA);
if (str == "lightgray") return(0xD3D3D3);
if (str == "lightgreen") return(0x90EE90);
if (str == "lightpink") return(0xC1B6FF);
if (str == "lightsalmon") return(0x7AA0FF);
if (str == "lightseagreen") return(0xAAB220);
if (str == "lightskyblue") return(0xFACE87);
if (str == "lightslategray") return(0x998877);
if (str == "lightsteelblue") return(0xDEC4B0);
if (str == "lightyellow") return(0xE0FFFF);
if (str == "lime") return(0x00FF00);
if (str == "limegreen") return(0x32CD32);
if (str == "linen") return(0xE6F0FA);
if (str == "magenta") return(0xFF00FF);
if (str == "maroon") return(0x000080);
if (str == "mediumaquamarine") return(0xAACD66);
if (str == "mediumblue") return(0xCD0000);
if (str == "mediumorchid") return(0xD355BA);
if (str == "mediumpurple") return(0xDB7093);
if (str == "mediumseagreen") return(0x71B33C);
if (str == "mediumslateblue") return(0xEE687B);
if (str == "mediumspringgreen") return(0x9AFA00);
if (str == "mediumturquoise") return(0xCCD148);
if (str == "mediumvioletred") return(0x8515C7);
if (str == "midnightblue") return(0x701919);
if (str == "mintcream") return(0xFAFFF5);
if (str == "mistyrose") return(0xE1E4FF);
if (str == "moccasin") return(0xB5E4FF);
if (str == "navajowhite") return(0xADDEFF);
if (str == "navy") return(0x800000);
if (str == "none") return(C'0x00,0x00,0x00');
if (str == "oldlace") return(0xE6F5FD);
if (str == "olive") return(0x008080);
if (str == "olivedrab") return(0x238E6B);
if (str == "orange") return(0x00A5FF);
if (str == "orangered") return(0x0045FF);
if (str == "orchid") return(0xD670DA);
if (str == "palegoldenrod") return(0xAAE8EE);
if (str == "palegreen") return(0x98FB98);
if (str == "paleturquoise") return(0xEEEEAF);
if (str == "palevioletred") return(0x9370DB);
if (str == "papayawhip") return(0xD5EFFF);
if (str == "peachpuff") return(0xB9DAFF);
if (str == "peru") return(0x3F85CD);
if (str == "pink") return(0xCBC0FF);
if (str == "plum") return(0xDDA0DD);
if (str == "powderblue") return(0xE6E0B0);
if (str == "purple") return(0x800080);
if (str == "red") return(0x0000FF);
if (str == "rosybrown") return(0x8F8FBC);
if (str == "royalblue") return(0xE16941);
if (str == "saddlebrown") return(0x13458B);
if (str == "salmon") return(0x7280FA);
if (str == "sandybrown") return(0x60A4F4);
if (str == "seagreen") return(0x578B2E);
if (str == "seashell") return(0xEEF5FF);
if (str == "sienna") return(0x2D52A0);
if (str == "silver") return(0xC0C0C0);
if (str == "skyblue") return(0xEBCE87);
if (str == "slateblue") return(0xCD5A6A);
if (str == "slategray") return(0x908070);
if (str == "snow") return(0xFAFAFF);
if (str == "springgreen") return(0x7FFF00);
if (str == "steelblue") return(0xB48246);
if (str == "tan") return(0x8CB4D2);
if (str == "teal") return(0x808000);
if (str == "thistle") return(0xD8BFD8);
if (str == "tomato") return(0x4763FF);
if (str == "turquoise") return(0xD0E040);
if (str == "violet") return(0xEE82EE);
if (str == "wheat") return(0xB3DEF5);
if (str == "white") return(0xFFFFFF);
if (str == "whitesmoke") return(0xF5F5F5);
if (str == "yellow") return(0x00FFFF);
if (str == "yellowgreen") return(0x32CD9A);
int t1 = StringFind(str,",",0);
int t2 = StringFind(str,",",t1+1);
if (t1>0 && t2>0) {
int red = StrToInteger(StringSubstr(str,0,t1));
int green = StrToInteger(StringSubstr(str,t1+1,t2-1));
int blue = StrToInteger(StringSubstr(str,t2+1,StringLen(str)));
return(blue*256*256+green*256+red);
}
if (StringSubstr(str,0,2) == "0x") {
string cnvstr = "0123456789abcdef";
string seq = "234567";
int retval = 0;
for(int i=0; i<6; i++) {
int pos = StrToInteger(StringSubstr(seq,i,1));
int val = StringFind(cnvstr,StringSubstr(str,pos,1),0);
if (val < 0) return(val);
retval = retval * 16 + val;
}
return(retval);
}
string cclr = "", tmp = "";
red = 0;
blue = 0;
green = 0;
if (StringFind("rgb",StringSubstr(str,0,1)) >= 0) {
for(i=0; i<StringLen(str); i++) {
tmp = StringSubstr(str,i,1);
if (StringFind("rgb",tmp,0) >= 0)
cclr = tmp;
else {
if (cclr == "b") blue = blue * 10 + StrToInteger(tmp);
if (cclr == "g") green = green * 10 + StrToInteger(tmp);
if (cclr == "r") red = red * 10 + StrToInteger(tmp);
} }
return(blue*256*256+green*256+red);
}
return(0);
}
bool StrToBool(string str)
{
str = StringLower(StringSubstr(str,0,1));
if (str == "t" || str == "y" || str == "1") return(true);
return(false);
}
string BoolToStr(bool bval)
{
if (bval) return("true");
return("false");
}
int StrToTF(string str)
{
str = StringUpper(str);
if (str == "M1") return(1);
if (str == "M5") return(5);
if (str == "M15") return(15);
if (str == "M30") return(30);
if (str == "H1") return(60);
if (str == "H4") return(240);
if (str == "D1") return(1440);
if (str == "W1") return(10080);
if (str == "MN") return(43200);
return(0);
}
string TFToStr(int tf)
{
switch (tf) {
case 1 : return("M1");
case 5 : return("M5");
case 15 : return("M15");
case 30 : return("M30");
case 60 : return("H1");
case 240 : return("H4");
case 1440 : return("D1");
case 10080 : return("W1");
case 43200 : return("MN");
}
return("");
}
string err_msg(int e)
{
switch (e) {
case 0: return("Error 0000: No error returned.");
case 1: return("Error 0001: No error returned, but the result is unknown.");
case 2: return("Error 0002: Common error.");
case 3: return("Error 0003: Invalid trade parameters.");
case 4: return("Error 0004: Trade server is busy.");
case 5: return("Error 0005: Old version of the client terminal.");
case 6: return("Error 0006: No connection with trade server.");
case 7: return("Error 0007: Not enough rights.");
case 8: return("Error 0008: Too frequent requests.");
case 9: return("Error 0009: Malfunctional trade operation.");
case 64: return("Error 0064: Account disabled.");
case 65: return("Error 0065: Invalid account.");
case 128: return("Error 0128: Trade timeout.");
case 129: return("Error 0129: Invalid price.");
case 130: return("Error 0130: Invalid stops.");
case 131: return("Error 0131: Invalid trade volume.");
case 132: return("Error 0132: Market is closed.");
case 133: return("Error 0133: Trade is disabled.");
case 134: return("Error 0134: Not enough money.");
case 135: return("Error 0135: Price changed.");
case 136: return("Error 0136: Off quotes.");
case 137: return("Error 0137: Broker is busy.");
case 138: return("Error 0138: Requote.");
case 139: return("Error 0139: Order is locked.");
case 140: return("Error 0140: Long positions only allowed.");
case 141: return("Error 0141: Too many requests.");
case 145: return("Error 0145: Modification denied because order too close to market.");
case 146: return("Error 0146: Trade context is busy.");
case 147: return("Error 0147: Expirations are denied by broker.");
case 148: return("Error 0148: The amount of open and pending orders has reached the limit set by the broker.");
case 4000: return("Error 4000: No error.");
case 4001: return("Error 4001: Wrong function pointer.");
case 4002: return("Error 4002: Array index is out of range.");
case 4003: return("Error 4003: No memory for function call stack.");
case 4004: return("Error 4004: Recursive stack overflow.");
case 4005: return("Error 4005: Not enough stack for parameter.");
case 4006: return("Error 4006: No memory for parameter string.");
case 4007: return("Error 4007: No memory for temp string.");
case 4008: return("Error 4008: Not initialized string.");
case 4009: return("Error 4009: Not initialized string in array.");
case 4010: return("Error 4010: No memory for array string.");
case 4011: return("Error 4011: Too long string.");
case 4012: return("Error 4012: Remainder from zero divide.");
case 4013: return("Error 4013: Zero divide.");
case 4014: return("Error 4014: Unknown command.");
case 4015: return("Error 4015: Wrong jump (never generated error).");
case 4016: return("Error 4016: Not initialized array.");
case 4017: return("Error 4017: DLL calls are not allowed.");
case 4018: return("Error 4018: Cannot load library.");
case 4019: return("Error 4019: Cannot call function.");
case 4020: return("Error 4020: Expert function calls are not allowed.");
case 4021: return("Error 4021: Not enough memory for temp string returned from function.");
case 4022: return("Error 4022: System is busy (never generated error).");
case 4050: return("Error 4050: Invalid function parameters count.");
case 4051: return("Error 4051: Invalid function parameter value.");
case 4052: return("Error 4052: String function internal error.");
case 4053: return("Error 4053: Some array error.");
case 4054: return("Error 4054: Incorrect series array using.");
case 4055: return("Error 4055: Custom indicator error.");
case 4056: return("Error 4056: Arrays are incompatible.");
case 4057: return("Error 4057: Global variables processing error.");
case 4058: return("Error 4058: Global variable not found.");
case 4059: return("Error 4059: Function is not allowed in testing mode.");
case 4060: return("Error 4060: Function is not confirmed.");
case 4061: return("Error 4061: Send mail error.");
case 4062: return("Error 4062: String parameter expected.");
case 4063: return("Error 4063: Integer parameter expected.");
case 4064: return("Error 4064: Double parameter expected.");
case 4065: return("Error 4065: Array as parameter expected.");
case 4066: return("Error 4066: Requested history data in updating state.");
case 4067: return("Error 4067: Some error in trading function.");
case 4099: return("Error 4099: End of file.");
case 4100: return("Error 4100: Some file error.");
case 4101: return("Error 4101: Wrong file name.");
case 4102: return("Error 4102: Too many opened files.");
case 4103: return("Error 4103: Cannot open file.");
case 4104: return("Error 4104: Incompatible access to a file.");
case 4105: return("Error 4105: No order selected.");
case 4106: return("Error 4106: Unknown symbol.");
case 4107: return("Error 4107: Invalid price.");
case 4108: return("Error 4108: Invalid ticket.");
case 4109: return("Error 4109: Trade is not allowed. Enable checkbox 'Allow live trading' in the expert properties.");
case 4110: return("Error 4110: Longs are not allowed. Check the expert properties.");
case 4111: return("Error 4111: Shorts are not allowed. Check the expert properties.");
case 4200: return("Error 4200: Object exists already.");
case 4201: return("Error 4201: Unknown object property.");
case 4202: return("Error 4202: Object does not exist.");
case 4203: return("Error 4203: Unknown object type.");
case 4204: return("Error 4204: No object name.");
case 4205: return("Error 4205: Object coordinates error.");
case 4206: return("Error 4206: No specified subwindow.");
case 4207: return("Error 4207: Some error in object function.");
default: return("Error " + e + ": ??? Unknown error.");
}
return(0);
}
string StringLeft(string str, int n=1)
{
if (n > 0) return(StringSubstr(str,0,n));
if (n < 0) return(StringSubstr(str,0,StringLen(str)+n));
return("");
}
string StringRight(string str, int n=1)
{
if (n > 0) return(StringSubstr(str,StringLen(str)-n,n));
if (n < 0) return(StringSubstr(str,-n,StringLen(str)-n));
return("");
}
string StringLeftPad(string str, int n=1, string str2=" ")
{
return(StringRepeat(str2,n-StringLen(str)) + str);
}
string StringRightPad(string str, int n=1, string str2=" ")
{
return(str + StringRepeat(str2,n-StringLen(str)));
}
string StringReverse(string str)
{
string outstr = ""Показано первые 50% кода (символов: 41060)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.