+ Ответить в теме
Страница 6 из 8 ПерваяПервая 1 2 3 4 5 6 7 8 ПоследняяПоследняя
Показано с 51 по 60 из 80

Тема: Помощь в программировании.

  1. #51
    ClusterDelta.com Team
    Регистрация
    27.10.2011
    Сообщений
    4,258
    Сказал(а) спасибо
    473
    Поблагодарили 2,158 раз(а) в 1,129 сообщениях
    Цитата Сообщение от funtic Посмотреть сообщение
    Привет всем .Мне тут вчера робота подкинули ,нужен компетентный человек который вынес бы своё решение,стоит его ставить на реал или нет.
    Нет, однозначно.

    На демо на 3 месяца - потом нам скажете.

  2. #52
    ClusterDelta.com Team Аватар для Ranc
    Регистрация
    28.10.2011
    Адрес
    Красноярск
    Сообщений
    448
    Сказал(а) спасибо
    156
    Поблагодарили 116 раз(а) в 84 сообщениях
    Иногда создается впечатление, что тестер в МТ4 и сами боты живут самостоятельной жизнью. Даже более-менее прибыльные стратегии из-за некорректных действий ПО МТ4 могут сливать. Поэтому результирующий стейт - не показатель. Надо каждую сделку проверять и анализировать.
    Победителей не судят... Хищников тоже...

    clusterdelta.com - биржевой информационно-аналитический портал

    С уважением, Радик

  3. #53
    Пользователь
    Регистрация
    01.09.2015
    Сообщений
    27
    Сказал(а) спасибо
    1
    Поблагодарили 1 раз в 1 сообщении
    привет всем! как узнать код VWAP хотел бы написать советник, кстати я чайник)

  4. #54
    ClusterDelta.com Team
    Регистрация
    27.10.2011
    Сообщений
    4,258
    Сказал(а) спасибо
    473
    Поблагодарили 2,158 раз(а) в 1,129 сообщениях
    Цитата Сообщение от Семенчик Посмотреть сообщение
    привет всем! как узнать код VWAP хотел бы написать советник, кстати я чайник)
    Берете кластер, умножаете цену на объем, суммируете это все, затем суммируете только объемы и первое делите на второе. Результат будет VWAP данного кластера. Обычно наблюдают как движется цена в течении какого-то периода: день, неделя и т.д.

  5. #55
    Пользователь
    Регистрация
    01.09.2015
    Сообщений
    27
    Сказал(а) спасибо
    1
    Поблагодарили 1 раз в 1 сообщении
    а код на Мета Эдитор не подскажешь добрый друг)))
    типа int; ... и т д

  6. #56
    Участник
    Регистрация
    21.01.2012
    Сообщений
    84
    Сказал(а) спасибо
    0
    Поблагодарили 4 раз(а) в 4 сообщениях
    Всем привет, помогите пожалуйста с профилем дельты. Нужен специальный индикатор профиля. Кто может помочь словом, а может и делом?????

  7. #57
    Пользователь
    Регистрация
    16.06.2013
    Сообщений
    16
    Сказал(а) спасибо
    9
    Поблагодарили 0 раз(а) в 0 сообщениях
    Добрый день, уважаемые форумчане!

    Прошу вашей помощи в решении следующей задачи.
    Есть CSV-файл истории (взят промо-файл на этом сайте).

    Хочу отобразить на экране (или подгрузить данные в терминал) историю из этого CSV-файла. Меня интересуют только объем и дельта.
    Я себе это представляю так – объемы в одном подокне под графиком, дельта во втором подокне под объемами.
    Так как разные подокна, то я понимаю, что тут необходимо будет два индикатора (или скрипта???) – один для объемов, другой для дельты. Они будут практически идентичными.
    Также, если это возможно, то сразу предусмотреть такую возможность, что бы в будущем сторонний пользовательский индикатор (или советник) смог как-то обращаться к этому индикатору/скрипту и работать с данными объема и дельты. Или так не получится?

    Я читал справку по MQL по файловым операциям, но, честно признаюсь, туго. Примеров маловато.
    Хочется разобраться в этом самому. Но не знаю с чего начать

    Заранее благодарен!
    Всем профитов!!!

  8. #58
    Пользователь
    Регистрация
    14.08.2015
    Сообщений
    17
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Цитата Сообщение от deniss Посмотреть сообщение
    Нет, однозначно.

    На демо на 3 месяца - потом нам скажете.
    Здравствуйте. Есть примеры что робот в МТ4 зарабатывает на длительном промежутке времени?

  9. #59
    Пользователь
    Регистрация
    16.06.2013
    Сообщений
    16
    Сказал(а) спасибо
    9
    Поблагодарили 0 раз(а) в 0 сообщениях

    Чтение CSV файла и отображение в подокне графика данных по объему и дельте

    Доброго времени суток!

    В продолжение своего вопроса о чтении файла истории

    Начал копать. Пока всё что удалось найти - это скрипт, который читает CSV-файл и рисует вертикальные линии на графике
    Взял его за основу. Немного подправил.
    Но сейчас у меня возникла проблема с выводом данных в функции DrawIndicator.
    Пока ума не приложу, как и что там надо написать, что бы правильно рисовалась гистограмма объемов (вернее сказать, что бы она вообще там рисовалась).
    Прошу людей, разбирающихся в MQL посмотреть и подсказать.

    Вот код:
    //+------------------------------------------------------------------+
    //| History_VOLUME_1.mq4 |
    //| В качестве основы взят скрипт |
    //| http://www.mqlvopros.net |
    //| Список вопросов |
    //| Вопрос |
    //| Здравствуйте! Подскажите, пожалуйста, как правильно вызвать |
    //| теперь функцию ReadCSVFile |
    //+------------------------------------------------------------------+

    //--- indicator settings
    #property indicator_separate_window // рисуем индикатор в отдельном окне
    #property indicator_buffers 1 // количество буферов индикатора - 1
    #property indicator_color1 Black // цвет индикаторной линии
    #property indicator_width1 2 // толщина индикаторной линии - 2

    //---- indicator buffers
    double VOL[];
    //+------------------------------------------------------------------+
    //| Структура для хранения данных |
    //+------------------------------------------------------------------+
    struct History
    {
    datetime date_op; // дата открытия бара
    datetime time_op; // время открытия бара
    datetime date_cl; // дата закрытия бара
    datetime time_cl; // время закрытия бара
    double open; // цена открытия
    double high; // максимальная цена
    double low; // минимальная цена
    double close; // цена закрытия
    int volume; // объем
    int delta; // дельта
    int ask; // аск
    int bid; // бид
    datetime expiration; // месяц экспирации
    };
    //+------------------------------------------------------------------+
    //| Custom indicator initialization function |
    //+------------------------------------------------------------------+
    int init()
    {
    //--- drawing settings
    SetIndexStyle(0,DRAW_HISTOGRAM);
    //---- indicator buffers mapping
    SetIndexBuffer(0,VOL);
    //--- name for DataWindow and indicator subwindow label
    IndicatorShortName("VOLUME");
    SetIndexLabel(0,"VOLUME");
    //--- initialization done
    return(0);
    }
    //--------------------------------------------------------------- 1 --
    int start() // Спец. функция start
    //--------------------------------------------------------------- 2 --
    {
    string File_Name="EURO_15_min_2014.csv"; // Имя файла истории
    {
    //---
    History lines[];
    // Прочитаем данные из файла
    // Если файл успешно найден и открыт получим true
    if(ReadCSVFile(File_Name, lines))
    {
    // проверим были ли собраны данные
    if(ArraySize(lines) > 0)
    {
    // отрисуем каждый прочитанный объем
    for(int i = ArraySize(lines)-1; i >= 0; i--)
    DrawIndicator(lines[i]);
    }
    else
    Print("Данные отсутствуют!");
    }
    else
    Print("Ошибка извлечения данных!");
    //---
    }
    return (0);
    }
    //---------------------------------------------------------------- 3 --
    //+--------------------------------------------------------------------+
    //| Выполняет чтение данных из csv фала
    //| fileName - имя csv файла
    //| lines - результирующий массив
    //+--------------------------------------------------------------------+
    bool ReadCSVFile(string File_Name, History &lines[])
    {
    bool _result = false;
    // Обнуление результирующего массива
    ArrayResize(lines,0);
    // открытие файла
    int _fileHandle = FileOpen(File_Name,FILE_READ|FILE_CSV,";");
    if(_fileHandle != INVALID_HANDLE)
    {
    // изменим результат выполнения метода
    _result = true;
    // Установка файлового указателя в начало файла
    FileSeek(_fileHandle,0,SEEK_SET);
    // Чтение до конца файла
    while(!FileIsEnding(_fileHandle))
    {
    // увеличим размер результирующего массива
    ArrayResize(lines,ArraySize(lines)+1);
    // получим номер добавленного элемента
    int _addItemNum = ArraySize(lines)-1;
    // чтение даты открытия бара
    lines[_addItemNum].date_op = (int)FileReadNumber(_fileHandle);
    // чтение времени открытия бара
    lines[_addItemNum].time_op = FileReadString(_fileHandle);
    // чтение значения объема
    lines[_addItemNum].volume = FileReadDatetime(_fileHandle);
    }
    // Закроем файл
    FileClose(_fileHandle);
    }
    else
    Print("Ошибка открытия файла: " + IntegerToString(GetLastError()));
    //
    return _result;
    }
    //+------------------------------------------------------------------+
    // Метод выводящий в подокно гистограмму объема
    //+------------------------------------------------------------------+
    bool DrawIndicator(History &lines)
    {
    bool _result = false;
    // отрисовывать необходимо только сделки по тек инструменту
    if(lines.date_op != 0) return _result;

    // найдем индекс бара, на котором нужно разместить графический объект
    int _indexBar = iBarShift(_Symbol,_Period, lines.orderOpenTime, true);
    if(_indexBar > -1)
    {
    // Составим имя графического объекта
    string _objName = "order #"+IntegerToString(lines.ticketNum);
    // Проверим, что бы такого графического объекта не существовало
    if(ObjectFind(0, _objName) == -1)
    {
    // Определим тип объекта в зависимости от тип ордера
    ENUM_OBJECT _objType = NULL;
    if(lines.orderType == OP_BUY)
    {
    _objType = OBJ_ARROW_BUY;
    }
    else
    if(lines.orderType == OP_SELL)
    {
    _objType = OBJ_ARROW_SELL;
    }
    if(_objType != NULL)
    {
    // Создание графического объекта
    if(!ObjectCreate(0, _objName, _objType, 0, Time[_indexBar],
    lines.orderOpenPrice))
    {
    Print("Ошибка при создании объекта "+_objName+
    " #"+IntegerToString(GetLastError()));
    }
    }
    }
    }
    //
    return _result;

    }
    //+------------------------------------------------------------------+

    ПС
    Может я зря велосипед изобретаю и у кого-нибудь уже есть такой индикатор, который читает историю ???

  10. #60
    ClusterDelta.com Team
    Регистрация
    27.10.2011
    Сообщений
    4,258
    Сказал(а) спасибо
    473
    Поблагодарили 2,158 раз(а) в 1,129 сообщениях
    Цитата Сообщение от Alexey-fx Посмотреть сообщение
    Доброго времени суток!

    В продолжение своего вопроса о чтении файла истории

    Код:
    [...skip...]
    //---- indicator buffers
    double VOL[];
    [...skip...]
    int init()
      {
    [...skip...]
       SetIndexBuffer(0,VOL);
    [...skip...]
    ПС
    Может я зря велосипед изобретаю и у кого-нибудь уже есть такой индикатор, который читает историю ???
    Грубо говоря у тебя массив таймсерий - Time, Bars, Open, Close и так далее.

    Последний (текущий) бар имеет индекс 0, все что влево от него идет 1, 2, 3 и так далее

    у тебя есть массив VOL, он определен как буфер для гистограммы объема

    Соответственно все значения в этом буфере будут отображены как гистограмма индикатора. Номера индексов такие же как и таймсерий.

    Задача: получить время и объем бара из СSV, найти соответствующее время открытия в МТ4, найти его порядковый номер и присвоить порядковому номеру массива VOL значение объема. Для поиска можно использовать функцию MT4 ArrayBSearch, но надо помнить, что она ищет ближайший по значению элемент в отсортированном массиве.

    В вышеприведенном примере используется функция iBarShift(_Symbol,_Period, lines.orderOpenTime, true);

    Дальше в примере строятся объекты на каждый объем, но я бы так не делал - ведь по факту определен буфер, занеси в него значения и объекты МТ4 построит самостоятельно + сам же будет следить за их изменением .

  11. Пользователь сказал cпасибо: Alexey-fx
+ Ответить в теме
Страница 6 из 8 ПерваяПервая 1 2 3 4 5 6 7 8 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
           

 


(C) 2009-2023 ClusterDelta.com.