Заработай до
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. <a href="https://www.mt5.com/ru/forex_analysis">Форекс портал</a>
     
  3. ТОП сообщений
    2016-03-09   23:11
    Лучший ответ #1
    Накопленные выплаты 150 RUB

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

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

    Попробуйте эту функцию:

    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<limit;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) плане
    }
    }

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

    2017-06-16   22:38
    Лучший ответ #3
    Накопленные выплаты 29627 RUB

    Цитата Сообщение от fore-x Посмотреть сообщение
    Подскажите, теперь эту функцию в индикаторе нельзя использовать что-ли?
    В советниках используется OnTick(), в индюках:
    OnCalculate
    Функция OnCalculate() вызывается только в пользовательских индикаторах при необходимости произвести расчет значений индикатора по событию Calculate. Обычно это происходит при поступлении нового тика по символу, для которого рассчитывается индикатор. При этом индикатор не обязательно должен быть прикреплен к какому-нибудь ценовому графику данного символа.

    2017-07-31   18:24
    Лучший ответ #4
    Накопленные выплаты 164160 RUB

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

  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.

  24. линк#20
    В начале пути
    Aleksandr Bereznyak стараюсь положительно себя зарекомендовать Аватар для Aleksandr Bereznyak
    Регистрация:
    09.03.2016
    Пол:
    Мужчина
    Сообщений:
    13
    Накопленные выплаты (Подробнее):
    150 RUB
    Поставил лайков:
    0
    Получено лайков:   2
    в 2 сообщениях
    15%
    Советник при старте собирает и записывает в файл цены баров и показания индикаторных буферов на всю глубину доступной истории.
    Затем записывает информацию при открытии нового бара. Файл создается в папке MQL4\Files при работе на счете или в папке Tester\Files
    при работе в тестере. Рабочий тайм-фрейм определяется тайм-фреймом чата на который прикреплен эксперт.



Страница 1 из 3
1 2 Последняя ◄╝

Подписанные на тему (8)

Похожие темы

  1. MQL4 для начинающих
    от Nick'Otin в разделе MQL-программирование, АТС
    Replies: 2402
    Последнее сообщение: 07.03.2020, 16:28
  2. Replies: 3
    Последнее сообщение: 20.05.2015, 19:06
  3. Replies: 8
    Последнее сообщение: 29.04.2014, 19:49
  4. Replies: 0
    Последнее сообщение: 14.02.2013, 13:12
  5. mql4->mql5. ищу программиста
    от artemserebryakov в разделе Доска объявлений
    Replies: 0
    Последнее сообщение: 28.07.2011, 22:24