Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5 - страница 19



double price1, // цена первой точки привязки


datetime timeN=0, // время N-ой точки привязки

double priceN=0, // цена N-ой точки привязки


datetime time30=0, // время 30-й точки привязки

double price30=0 // цена 30-точки привязки

);

Здесь параметр sub_window это индекс главного окна графика символа со значением 0 или индекс подокна другого индикатора, присоединенного к графику символа.

Например, если в предыдущем примере мы изменим код, и присоединим к графику символа, скажем, индикатор ADX, мы увидим следующее:

for (int i=start; i 

{

if (close [i-1]> open [i-1] &&close [i-1]> EMA34HBuffer [i-1] &&close [i-1]> EMA34LBuffer [i-1] &&low [i-1]> EMA125Buffer [i-1] &&low [i-1]> PSARBuffer [i-1] &&EMA125Buffer [i-1]

if (!ObjectCreate (0,«Buy»+i, OBJ_ARROW,0,time [i-1],high [i-1]))

{

return (false);

}

if (!ObjectCreate (0,«Buy1»+i, OBJ_ARROW,1,time [i-1],high [i-1]))

{

return (false);

}

ObjectSetInteger (0,«Buy»+i, OBJPROP_COLOR, clrGreen);

ObjectSetInteger (0,«Buy»+i, OBJPROP_ARROWCODE,233);

ObjectSetInteger (0,«Buy»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Buy»+i, OBJPROP_ANCHOR, ANCHOR_UPPER);

ObjectSetInteger (0,«Buy»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Buy»+i, OBJPROP_TOOLTIP, close [i-1]);


ObjectSetInteger (0,«Buy1»+i, OBJPROP_COLOR, clrGreen);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_ARROWCODE,233);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_ANCHOR, ANCHOR_UPPER);

ObjectSetInteger (0,«Buy1»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Buy1»+i, OBJPROP_TOOLTIP, close [i-1]);

}

if (close [i-1] EMA34LBuffer [i-1] &&EMA125Buffer [i-1]> EMA34HBuffer [i-1]) {

if (!ObjectCreate (0,«Sell»+i, OBJ_ARROW,0,time [i-1],low [i-1]))

{

return (false);

}

if (!ObjectCreate (0,«Sell1»+i, OBJ_ARROW,1,time [i-1],low [i-1]))

{

return (false);

}

ObjectSetInteger (0,«Sell»+i, OBJPROP_COLOR, clrRed);

ObjectSetInteger (0,«Sell»+i, OBJPROP_ARROWCODE,234);

ObjectSetInteger (0,«Sell»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Sell»+i, OBJPROP_ANCHOR, ANCHOR_LOWER);

ObjectSetInteger (0,«Sell»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Sell»+i, OBJPROP_TOOLTIP, close [i-1]);


ObjectSetInteger (0,«Sell1»+i, OBJPROP_COLOR, clrRed);

ObjectSetInteger (0,«Sell1»+i, OBJPROP_ARROWCODE,234);

ObjectSetInteger (0,«Sell1»+i, OBJPROP_WIDTH,2);

ObjectSetInteger (0,«Sell1»+i, OBJPROP_ANCHOR, ANCHOR_LOWER)

ObjectSetInteger (0,«Sell1»+i, OBJPROP_HIDDEN, true);

ObjectSetString (0,«Sell1»+i, OBJPROP_TOOLTIP, close [i-1]);

}

}



Нумерация подокон идет сверху вниз в порядке отображения.

Тип отображаемого объекта задается перечислением ENUM_OBJECT, которое можно посмотреть в справочнике.

После добавления графических объектов, не забываем их удалять в функции обратного вызова OnDeinit (), используя функцию ObjectDelete:

bool ObjectDelete (

long chart_id, // chart identifier

string name // object name

);

Или используя функцию ObjectsDeleteAll:

int ObjectsDeleteAll (

long chart_id, // chart identifier

int sub_window=-1, // window index

int type=-1 // object type

);

Помимо вышеупомянутых функций ObjectCreate, ObjectDelete и ObjectsDeleteAll, MQL5 предлагает набор функций для работы с графическими объектами: ObjectName, ObjectFind, ObjectGetTimeByValue, ObjectGetValueByTime, ObjectMove, ObjectsTotal, ObjectGetDouble, ObjectGetInteger, ObjectGetString, ObjectSetDouble, ObjectSetInteger, ObjectSetString, TextSetFont, TextOut, TextGetSize.