Заработай до
50000$
на приглашении друзей
получить StartUp Bonus
от ИнстаФорекс
Вложений не требуется!
Начни торговлю
без вложений и риска
С новым STARTUP бонусом 1000$
Получи бонус
55%
от ИнстаФорекс
на каждое пополнение
Ответить в теме
Страница 1 из 3
1 2 Последняя ◄╝

Показаны сообщения: с 1 по 20 из 56

Тема: Программирование MQL4/MQL5, для начинающих, в вопросах и ответах.

 Перейти в классический вид темы
  1. Линк #1 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Добрый день. Задавайте ваши вопросы по программированию MQL4/MQL5, рад буду помочь.


  2.  
  3. ТОП сообщений
    2017-07-31   18:24
    Лучший ответ #1
    Накопленные выплаты 155746 RUB
    2017-06-16   22:38
    Лучший ответ #2
    Накопленные выплаты 29274 RUB
    2016-03-09   23:11
    Лучший ответ #3
    Накопленные выплаты 150 RUB

    1.Сразу несколько строк создать нельзя. Для каждой строки свой объект. 2.Поместить поверх свечей можно любой графический объект, для этого надо задать свойство объекта: ObjectSetInteger(0,name,OBJPROP_BACK,false); Зайти в свойства чарта на котором будете размещать объект и снять галочку с режима "График сверху": 3. Длина строки максимум 64 символа и увеличить не получиться.

    2016-03-10   01:10
    Лучший ответ #4
    Накопленные выплаты 150 RUB

    Попробуйте эту функцию: //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CreateText(string name, int x_dist, int y_dist, int step, ENUM_BASE_CORNER corner, ENUM_ANCHOR_POINT anchor, string font, int font_size, color text_color, string &text[]) { string name_=""; int limit=ArraySize(text); //---- for(int i=0;i

  4. Линк #2 Свернуть пост
    Кандидат форумных наук
    В думах
     
    kobatron хорошая репутация kobatron хорошая репутация kobatron хорошая репутация Аватар для kobatron
    Регистрация:
    08.09.2015
    Пол:
    Мужчина
    Сообщений:
    1,220
    Деньги за посты (Подробнее):
    28811 RUB
    Поставил лайков:
    311
    Получено лайков:  131
    в 109 сообщениях
    11%
    Цитата Сообщение от Aleksandr Bereznyak Посмотреть сообщение
    Добрый день. Задавайте ваши вопросы по программированию MQL4/MQL5, рад буду помочь.
    Здравствуйте, если можно сразу несколько вопросов по объектам, создаваемым при помощи ObjectCreate (MQL4):

    1. Можно ли при помощи ObjectSetText создать сразу несколько строчек или для каждой строчки необходимо заново создавать и позиционировать новый объект?

    2. Можно ли объекты типа _LABEL поместить перед свечами графика - чтобы он закрывал свечи, а не наоборот?

    3. Как увеличить длину выводимой строки при помощи ObjectSetText? По умолчанию она, я так понимаю, равна 64 символам...


  5. Линк #3 Свернуть пост
    Кандидат форумных наук
    В думах
     
    kobatron хорошая репутация kobatron хорошая репутация kobatron хорошая репутация Аватар для kobatron
    Регистрация:
    08.09.2015
    Пол:
    Мужчина
    Сообщений:
    1,220
    Деньги за посты (Подробнее):
    28811 RUB
    Поставил лайков:
    311
    Получено лайков:  131
    в 109 сообщениях
    11%
    Походу опять сам себе буду отвечать...

    По поводу 3 пункта нашел такой ответ:
    "Длина строки в полях графических объектов ограничена 62-я символами. Если сообщение больше этой длины, то нужно разбить его на несколько текстовых меток и выводить в строку или в несколько строк, как удобно."

    По поводу второго, оказалось, что все созданные объекты и так перекрывают собой все остальное находящееся на графике, хотя у меня почему-то на каком-то этапе экспериментов получилось создать объект так, что он находился ПОД графиком, но НАД пунктирами выставленных ордеров. Вот как вернуть объекту такое положение сейчас и ломаю голову (


  6. Линк #4 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    1.Сразу несколько строк создать нельзя. Для каждой строки свой объект.
    2.Поместить поверх свечей можно любой графический объект, для этого надо задать свойство объекта:
    ObjectSetInteger(0,name,OBJPROP_BACK,false);
    Зайти в свойства чарта на котором будете размещать объект и снять галочку с режима "График сверху":
    3. Длина строки максимум 64 символа и увеличить не получиться.


  7. post_thanks Получено лайков: 1

    kobatron (10.03.2016)

  8. Линк #5 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Не могу понять как здесь вставить картинку в формате PNG.


  9. Линк #6 Свернуть пост
    Кандидат форумных наук
    В думах
     
    kobatron хорошая репутация kobatron хорошая репутация kobatron хорошая репутация Аватар для kobatron
    Регистрация:
    08.09.2015
    Пол:
    Мужчина
    Сообщений:
    1,220
    Деньги за посты (Подробнее):
    28811 RUB
    Поставил лайков:
    311
    Получено лайков:  131
    в 109 сообщениях
    11%
    Цитата Сообщение от Aleksandr Bereznyak Посмотреть сообщение
    Не могу понять как здесь вставить картинку в формате PNG.
    Похоже подглючивало что-то. А так: расширенный режим - управлять вложениями - добавить файлы - отметить галочкой нужный из закаченных и вставить... как-то так по-моему.

    Цитата Сообщение от Aleksandr Bereznyak Посмотреть сообщение
    2.Поместить поверх свечей можно любой графический объект, для этого надо задать свойство объекта:
    ObjectSetInteger(0,name,OBJPROP_BACK,false);
    Зайти в свойства чарта на котором будете размещать объект и снять галочку с режима "График сверху":
    Благодарю! Вообще не там копал оказывается...

    Цитата Сообщение от Aleksandr Bereznyak Посмотреть сообщение
    1.Сразу несколько строк создать нельзя. Для каждой строки свой объект.
    А как насчет вот такого подхода?

    MQL код:


    //+----------------------------------------------------------------------------+
    //| Автор : Korey |
    //+----------------------------------------------------------------------------+
    //| Описание : вывод параметров в объекты |
    //| Версия : 05.05.2009 |
    //| Вызов : int SPREAD=NormalizeDouble(MarketInfo(Symbol(),MODE_SP READ),0);|
    //| : comment(0,Yellow,"СПРЕД = ",SPREAD); //0 -номер строки (0..19)|
    //+----------------------------------------------------------------------------+
    void comment(int n,color c,string s0="",string s1="",string s2="",string s3="",string s4="",string s5="",
    string s6="",string s7="",string s8="",string s9="",string s10="",string s11="",
    string s12="",string s13="",string s14="",string s15="",string s16="",string s17="",
    string s18="",string s19="")
    {
    string r=s0+s1+s2+s3+s4+s5+s6+s7+s8+s9+s10+s11+s12+s13+s1 4+s15+s16+s17+s18+s19;
    string name=_comment+n;//_comment-имя советника или любой идентификатор для маркировки "своих" объектов
    int y=15+n*15;
    int x=5;
    if(ObjectFind(name)<0) ObjectCreate(name,OBJ_LABEL,0,0,0);
    ObjectSet(name,OBJPROP_XDISTANCE,x);
    ObjectSet(name,OBJPROP_YDISTANCE,y);
    ObjectSetText(name,r,9,"Arial black",c);
    }


    Нашел где-то в нете, но пока не разобрался как этой функцией пользоваться. По описанию она вроде как позволяет вывести блок до 20 строк заданным шрифтом и цветом в любое место окна, по умолчанию в левый верхний угол . Место вывода можно изменить в ObjectSet.


  10. Линк #7 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Она позволяет вывести до 20 строк, но не выводит эти строки одним графическим объектом.


  11. Линк #8 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Функции ObjectSet, ObjectSetText, ObjectGet являются устаревшими. Они не позволяют получать доступ к полному объёму свойств графических объектов.
    Следует пользоваться следующими функциями:
    - ObjectGetDouble, ObjectGetInteger, ObjectGetString() -функции чтения;
    - ObjectSetDouble, ObjectSetInteger, ObjectSetString() -функции установки.


  12. Линк #9 Свернуть пост
    Кандидат форумных наук
    В думах
     
    kobatron хорошая репутация kobatron хорошая репутация kobatron хорошая репутация Аватар для kobatron
    Регистрация:
    08.09.2015
    Пол:
    Мужчина
    Сообщений:
    1,220
    Деньги за посты (Подробнее):
    28811 RUB
    Поставил лайков:
    311
    Получено лайков:  131
    в 109 сообщениях
    11%
    Цитата Сообщение от Aleksandr Bereznyak Посмотреть сообщение
    Она позволяет вывести до 20 строк, но не выводит эти строки одним графическим объектом.
    Но я правильно понимаю, что она эти объекты создает автоматически? Если так не подскажете на примере, что конкретно в код нужно вставить, чтобы воспользоваться ее возможностями? Слишком уж много значений внутри заголовка, нет return, и учитывая, что тема с объектами все еще очень нова для меня, никак не могу сложить в голове логику ее работы...


  13. Линк #10 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Попробуйте эту функцию:

    MQL код:
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    void CreateText(string name,
    int x_dist,
    int y_dist,
    int step,
    ENUM_BASE_CORNER corner,
    ENUM_ANCHOR_POINT anchor,
    string font,
    int font_size,
    color text_color,
    string &text[])
    {
    string name_="";
    int limit=ArraySize(text);
    //----
    for(int i=0;i {
    name_=name+(string)i;
    ObjectCreate(0,name_,OBJ_LABEL,0,0,0.0);
    ObjectSetInteger(0,name_,OBJPROP_XDISTANCE,x_dist) ; //координата по оси x
    ObjectSetInteger(0,name_,OBJPROP_YDISTANCE,y_dist+ step*i); //координата по оси y
    ObjectSetInteger(0,name_,OBJPROP_CORNER,corner); //угол привязки
    ObjectSetInteger(0,name_,OBJPROP_ANCHOR,anchor); //способ привязки
    ObjectSetString(0,name_,OBJPROP_TEXT,text[i]); //текст
    ObjectSetString(0,name_,OBJPROP_FONT,font); //шрифт текста
    ObjectSetInteger(0,name_,OBJPROP_FONTSIZE,font_siz e); //размер шрифта
    ObjectSetInteger(0,name_,OBJPROP_COLOR,text_color) ; //цвет текста
    ObjectSetInteger(0,name_,OBJPROP_BACK,false); //отображение на переднем(false) или заднем(true) плане
    }
    }


    Текст размещается в массиве переменного размера, количество выводимых объектов определяется размером массива.

    Последний раз редактировалось Aleksandr Bereznyak; 10.03.2016 в 01:14.

  14. post_thanks Получено лайков: 1

    kobatron (10.03.2016)

  15. Линк #11 Свернуть пост
    Кандидат форумных наук
    В думах
     
    kobatron хорошая репутация kobatron хорошая репутация kobatron хорошая репутация Аватар для kobatron
    Регистрация:
    08.09.2015
    Пол:
    Мужчина
    Сообщений:
    1,220
    Деньги за посты (Подробнее):
    28811 RUB
    Поставил лайков:
    311
    Получено лайков:  131
    в 109 сообщениях
    11%
    Цитата Сообщение от Aleksandr Bereznyak Посмотреть сообщение
    Функции ObjectSet, ObjectSetText, ObjectGet являются устаревшими. Они не позволяют получать доступ к полному объёму свойств графических объектов.
    Следует пользоваться следующими функциями:
    - ObjectGetDouble, ObjectGetInteger, ObjectGetString() -функции чтения;
    - ObjectSetDouble, ObjectSetInteger, ObjectSetString() -функции установки.
    Хоть устаревшими научиться нормально пользоваться бы... на них хоть какие-то примеры в инете есть. Вот пример бы какой, не слишком сложный с тем же _LABEL на новых функциях, чтобы реально понять как и что работает, а потом уже и преимущества станут понятны...


  16. Линк #12 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Функция имеет тип void, в этом случае return не обязателен.


  17. Линк #13 Свернуть пост
    Кандидат форумных наук
    В думах
     
    kobatron хорошая репутация kobatron хорошая репутация kobatron хорошая репутация Аватар для kobatron
    Регистрация:
    08.09.2015
    Пол:
    Мужчина
    Сообщений:
    1,220
    Деньги за посты (Подробнее):
    28811 RUB
    Поставил лайков:
    311
    Получено лайков:  131
    в 109 сообщениях
    11%
    Цитата Сообщение от Aleksandr Bereznyak Посмотреть сообщение
    Текст размещается в массиве переменного размера, количество выводимых объектов определяется размером массива.
    Спасибо, буду пробовать разобраться )


  18. Линк #14 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Стандартная справка по MQL4, там достаточное количество примеров.
    Пользуйтесь горячей клавишей F1, навели на оператор и нажали, справка откроется с описанием оператора.
    Ушел спать, все вопросы завтра, в течении дня.


  19. Линк #15 Свернуть пост
    В начале пути
    StarijDed стараюсь положительно себя зарекомендовать Аватар для StarijDed
    Регистрация:
    08.03.2016
    Сообщений:
    7
    Деньги за посты (Подробнее):
    90 RUB
    Поставил(а) лайков:
    0
    Получено лайков:  0
    в 0 сообщениях
    0%
    Александр, а можете ли помочь мне в соседней теме? https://forexdengi.com/threads/87252...0#post14164830


  20. Линк #16 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Посмотрел тему, не понятно в чем помогать, там много постов. Скопируйте вопрос сюда.


  21. Линк #17 Свернуть пост
    В начале пути
    StarijDed стараюсь положительно себя зарекомендовать Аватар для StarijDed
    Регистрация:
    08.03.2016
    Сообщений:
    7
    Деньги за посты (Подробнее):
    90 RUB
    Поставил(а) лайков:
    0
    Получено лайков:  0
    в 0 сообщениях
    0%
    Цитата Сообщение от Aleksandr Bereznyak Посмотреть сообщение
    Посмотрел тему, не понятно в чем помогать, там много постов. Скопируйте вопрос сюда.
    Вопрос: как выгружать в файл CSV числовые данные цен и индикаторов (в т.ч. с неизвестным кодом), которые показываются в окне МТ4?
    Чтобы каждая строка содержала данные для одного момента времени:
    Цитата Сообщение от StarijDed Посмотреть сообщение
    дата-время, цены-4шт, объем, индикатор1:знач1-2-3, индикатор2:знач1-2..и т.д.
    (здесь пример - индиктор1: выдает три значения для каждой ценовой свечи и т.д.)
    В идеале, чтоб дописывалась новая строка в файл при закрытии каждой свечи.


  22. Линк #18 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Сегодня постараюсь предоставить решение вашей проблемы.


  23. Линк #19 Свернуть пост
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Деньги за посты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:  2
    в 2 сообщениях
    15%
    Код советника собирающего цены бара и значения буферов индикаторов:
    MQL код:
    //+------------------------------------------------------------------+
    //| ExpCollector_v1.mq4 |
    //| Copyright 2015, MetaQuotes Software Corp. |
    //| [url]https://www.mql5.com[/url] |
    //+------------------------------------------------------------------+
    #property copyright "Copyright 2015, MetaQuotes Software Corp."
    #property link "https://www.mql5.com"
    #property version "1.00"
    #property strict
    //----
    datetime buff_time[1];
    //----
    datetime prev_time;
    //----
    double buff_dbl[1];
    //----
    int handle;
    //----
    bool one_time;
    //+------------------------------------------------------------------+
    //| Expert initialization function |
    //+------------------------------------------------------------------+
    int OnInit()
    {
    CopyTime(_Symbol,PERIOD_CURRENT,0,1,buff_time);
    prev_time=buff_time[0];
    one_time=true;
    //----
    return(INIT_SUCCEEDED);
    }
    //+------------------------------------------------------------------+
    //| Expert deinitialization function |
    //+------------------------------------------------------------------+
    void OnDeinit(const int reason)
    {
    FileClose(handle);
    }
    //+------------------------------------------------------------------+
    //| Expert tick function |
    //+------------------------------------------------------------------+
    void OnTick()
    {
    if(one_time==true)
    {
    one_time=false;
    int limit=iBars(_Symbol,_Period);
    string name="FileName"+TimeFramesToString(PERIOD_CURRENT) +".csv";
    handle=FileOpen(name,FILE_WRITE|FILE_READ|FILE_CSV );
    //----
    if(handle!=INVALID_HANDLE)
    {
    FileSeek(handle,0,SEEK_END);
    //----
    for(int i=limit-1;i>=0;i--)
    {
    CopyTime(_Symbol,PERIOD_CURRENT,i,1,buff_time);
    datetime time=buff_time[0];
    CopyOpen(_Symbol,PERIOD_CURRENT,i,1,buff_dbl);
    double open=buff_dbl[0];
    CopyHigh(_Symbol,PERIOD_CURRENT,i,1,buff_dbl);
    double high=buff_dbl[0];
    CopyLow(_Symbol,PERIOD_CURRENT,i,1,buff_dbl);
    double low=buff_dbl[0];
    CopyClose(_Symbol,PERIOD_CURRENT,i,1,buff_dbl);
    double close=buff_dbl[0];
    CopyTickVolume(_Symbol,PERIOD_CURRENT,i,1,buff_tim e);
    long tick_volume=buff_time[0];
    //----
    double vol11=iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE,MO DE_MAIN,i);
    double vol12=iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE,MO DE_SIGNAL,i);
    //----
    double vol20=iCustom(_Symbol,_Period,"ZigZag",12,5,3,0,i) ;
    double vol21=iCustom(_Symbol,_Period,"ZigZag",12,5,3,1,i) ;
    double vol22=iCustom(_Symbol,_Period,"ZigZag",12,5,3,2,i) ;
    //----
    FileWrite(handle,time,
    DoubleToString(open,_Digits),
    DoubleToString(high,_Digits),
    DoubleToString(low,_Digits),
    DoubleToString(close,_Digits),
    tick_volume,
    DoubleToString(vol11,_Digits),
    DoubleToString(vol12,_Digits),
    DoubleToString(vol20,_Digits),
    DoubleToString(vol21,_Digits),
    DoubleToString(vol22,_Digits));
    }
    }
    //----
    FileClose(handle);
    return;
    }
    //----
    CopyTime(_Symbol,PERIOD_CURRENT,0,1,buff_time);
    //----
    if(prev_time!=buff_time[0])
    {
    prev_time=buff_time[0];
    CopyTime(_Symbol,PERIOD_CURRENT,1,1,buff_time);
    datetime time=buff_time[0];
    CopyOpen(_Symbol,PERIOD_CURRENT,1,1,buff_dbl);
    double open=buff_dbl[0];
    CopyHigh(_Symbol,PERIOD_CURRENT,1,1,buff_dbl);
    double high=buff_dbl[0];
    CopyLow(_Symbol,PERIOD_CURRENT,1,1,buff_dbl);
    double low=buff_dbl[0];
    CopyClose(_Symbol,PERIOD_CURRENT,1,1,buff_dbl);
    double close=buff_dbl[0];
    CopyTickVolume(_Symbol,PERIOD_CURRENT,1,1,buff_tim e);
    long tick_volume=buff_time[0];
    //----
    double vol11=iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE,MO DE_MAIN,1);
    double vol12=iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE,MO DE_SIGNAL,1);
    //----
    double vol20=iCustom(_Symbol,_Period,"ZigZag",12,5,3,0,1) ;
    double vol21=iCustom(_Symbol,_Period,"ZigZag",12,5,3,1,1) ;
    double vol22=iCustom(_Symbol,_Period,"ZigZag",12,5,3,2,1) ;
    //----
    string name="FileName"+TimeFramesToString(PERIOD_CURRENT) +".csv";
    handle=FileOpen(name,FILE_WRITE|FILE_READ|FILE_CSV );
    //----
    if(handle!=INVALID_HANDLE)
    {
    FileSeek(handle,0,SEEK_END);
    FileWrite(handle,time,
    DoubleToString(open,_Digits),
    DoubleToString(high,_Digits),
    DoubleToString(low,_Digits),
    DoubleToString(close,_Digits),
    tick_volume,
    DoubleToString(vol11,_Digits),
    DoubleToString(vol12,_Digits),
    DoubleToString(vol20,_Digits),
    DoubleToString(vol21,_Digits),
    DoubleToString(vol22,_Digits));
    FileClose(handle);
    }
    }
    }
    //+------------------------------------------------------------------+
    //| |
    //+------------------------------------------------------------------+
    string TimeFramesToString(ENUM_TIMEFRAMES period)
    {
    ENUM_TIMEFRAMES time_frames=period;
    //----
    if(period==PERIOD_CURRENT)
    time_frames=(ENUM_TIMEFRAMES)_Period;
    //----
    return(StringSubstr(EnumToString(time_frames),7));
    }
    //+------------------------------------------------------------------+

    Последний раз редактировалось Aleksandr Bereznyak; 12.03.2016 в 22:04.
    <