Программирование на MQL4 - это очень просто! - Страница 185
Страница 185 из 185 ПерваяПервая ... 85 135 175 181 182 183 184 185
Показано с 1,841 по 1,850 из 1850

Тема: Программирование на MQL4 - это очень просто!

  1. #1841
    Новичок
    Регистрация
    04.03.2017
    Сообщений
    31
    Promo (¢)
    1,620
    Благодарности
    Получено: 0
    Отправлено: 16
    Цитата Сообщение от wayfarer Посмотреть сообщение
    Добавить в условие признак/факт открытия нового бара, естественно. Чтобы это сделать нужно определить/задать критерий того, чем отличается новый бар от старого! В зависимости от общей логики определяющей входы и выходы из рынка, критерий обеспечивающий одну сделку может быть и иным. Например, если на текущем баре уже есть открытая сделка то запретить вход. Или может оказаться, что будет достаточным условие одна сделка в рынке. Для этого нужно на каждом тике знать сколько открытых сделок уж есть.

    Что касается вашего кода
    PHP код:
        if(op_buy_sig() && LAST_BUY_BARTIME != iTime(Symbol(), Period(), 0))
        {
           
    LAST_BUY_BARTIME iTime(Symbol(), Period(), 0);
           
    open_positions(OP_BUYOP_LOTS);    
        } 
    у вас переменная LAST_BUY_BARTIME не инициализирована и имеет неизвестное значение. Добавьте в код, в начало: #property strict, чтобы видеть где у вас отсутствует инициализация.

    Представим ситуацию, что по каким-то причинам советник/терминал был перезапущен, в рынке есть сделка(ки), какое значение будет иметь LAST_BUY_BARTIME/LAST_SELL_BARTIME на начало работы совы?

    Далее, перед тем как открыть сделку, вы изменяете значение LAST_BUY_BARTIME - это опасная логика. Телега впереди лошади! Должно быть так:
    PHP код:
        // если сделка открылась - запомним время открытия бара
        
    if (open_positions(OP_BUYOP_LOTS)) LAST_BUY_BARTIME iTime(Symbol(), Period(), 0); 
    Процедура open_positions должна быть булевой функцией!
    Выдает ошибку 'if' - expression of 'void' type is illegal 160 4

    Переменные заданы таким выражением
    datetime LAST_BUY_BARTIME = 0;
    datetime LAST_SELL_BARTIME = 0;

    При открытом ордере сделок не открывает, но при закрытие открывает на той же свече.
    Хотелось что бы сделка открывалась не по тикам, а по открытию бара.

    Вы не можете благодарить!

  2. #1842
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,613
    Promo (¢)
    42,835
    Благодарности
    Получено: 559
    Отправлено: 63
    Цитата Сообщение от Hi-FI Посмотреть сообщение
    Выдает ошибку 'if' - expression of 'void' type is illegal 160 4
    потому что у вас open_positions() - void.
    Цитата Сообщение от Hi-FI Посмотреть сообщение
    Хотелось что бы сделка открывалась не по тикам, а по открытию бара.
    Сформулируйте критерий открытия нового бара!

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  3. #1843
    Новичок
    Регистрация
    04.03.2017
    Сообщений
    31
    Promo (¢)
    1,620
    Благодарности
    Получено: 0
    Отправлено: 16
    Цитата Сообщение от wayfarer Посмотреть сообщение
    потому что у вас open_positions() - void.
    Сформулируйте критерий открытия нового бара!
    Открытие нового бара и есть критерий )
    На часовом графике иногда и 59 мин сделка открывается, а такого быть не должно (
    В --.01 не открылся ордер, то бар надо пропускать.

    Вы не можете благодарить!

  4. #1844
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,613
    Promo (¢)
    42,835
    Благодарности
    Получено: 559
    Отправлено: 63
    Цитата Сообщение от Hi-FI Посмотреть сообщение
    Открытие нового бара и есть критерий )
    Критерий должен быть сформулирован в сравнении атрибутов баров.
    Если бар - это сущность, то бары различаются атрибутами сущности. Сравнение нужных атрибутов и даст вам критерий различения баров: старый- новый. Это и будет сигналом.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  5. #1845
    Новичок
    Регистрация
    04.03.2017
    Сообщений
    31
    Promo (¢)
    1,620
    Благодарности
    Получено: 0
    Отправлено: 16
    Цитата Сообщение от wayfarer Посмотреть сообщение
    Критерий должен быть сформулирован в сравнении атрибутов баров.
    Если бар - это сущность, то бары различаются атрибутами сущности. Сравнение нужных атрибутов и даст вам критерий различения баров: старый- новый. Это и будет сигналом.
    Open[0] - не работает (

    Вы не можете благодарить!

  6. #1846
    Новичок
    Регистрация
    12.10.2015
    Сообщений
    109
    Promo (¢)
    820
    Благодарности
    Получено: 3
    Отправлено: 22
    Здравствуйте! Где то читал статью про то что mql4 или 5 стал предлогать шифровать своим сервисом коды советников....подскажите где конкретнее про это почитать и что за сервис?

    Вы не можете благодарить!

  7. #1847
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,613
    Promo (¢)
    42,835
    Благодарности
    Получено: 559
    Отправлено: 63
    Цитата Сообщение от Hi-FI Посмотреть сообщение
    Open[0] - не работает
    Цены открытий Open[1] и Open[0] могут совпадать, сравнение цен - слабый критерий.
    А вот Time[0] это более сильный критерий. Как вариант можно взять атрибут tick_volume[0]==1, если это новый бар то будет иметь значение на открытии бара 1. Но я использую сравнение атрибута времени.
    PHP код:
    datetime timeprev// время открытия предыдущего бара
    int OnInit()
    {
       
    timeprev iTime(NULL,0,1);
       return(
    INIT_SUCCEEDED);
    }
    void OnTick()
    {
       ...
       
    // на каждом тике сравниваем время открытия бара с временем предыдущего
       // Новый бар? Нет - выход
       
    if (timeprev == iTime(NULL,0,0)) return;
       
    timeprev iTime(NULL,0,0); // сохранить, как время открытия предыдущего бара
       
    ...


    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  8. #1848
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,613
    Promo (¢)
    42,835
    Благодарности
    Получено: 559
    Отправлено: 63
    Цитата Сообщение от SviteR Посмотреть сообщение
    Где то читал статью про то что mql4 или 5 стал предлогать шифровать своим сервисом коды советников
    Ну, здесь можно найти чуток инфу по теме, см. https://forum.roboforex.ru/showthrea...18#post1303418
    Функция шифрования доступна только в редакторе для МТ5.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

  9. #1849
    Новичок
    Регистрация
    04.03.2017
    Сообщений
    31
    Promo (¢)
    1,620
    Благодарности
    Получено: 0
    Отправлено: 16
    Цитата Сообщение от wayfarer Посмотреть сообщение
    Цены открытий Open[1] и Open[0] могут совпадать, сравнение цен - слабый критерий.
    А вот Time[0] это более сильный критерий. Как вариант можно взять атрибут tick_volume[0]==1, если это новый бар то будет иметь значение на открытии бара 1. Но я использую сравнение атрибута времени.
    PHP код:
    datetime timeprev// время открытия предыдущего бара
    int OnInit()
    {
       
    timeprev iTime(NULL,0,1);
       return(
    INIT_SUCCEEDED);
    }
    void OnTick()
    {
       ...
       
    // на каждом тике сравниваем время открытия бара с временем предыдущего
       // Новый бар? Нет - выход
       
    if (timeprev == iTime(NULL,0,0)) return;
       
    timeprev iTime(NULL,0,0); // сохранить, как время открытия предыдущего бара
       
    ...

    Я так понимаю, что сравнение будет идти всё время формирования бара? И если сработают дополнительные условия, то сделка откроется?
    Поясню, что задумано...
    Ни разница в Open[1] и Open[0], а именно совпадений дополнительных условия с открытием нового бара. Только в тот самый момент и не позже.
    Если не совпало, то сделку пропускаем.

    Вы не можете благодарить!

  10. #1850
    Программист
    Регистрация
    16.08.2012
    Адрес
    Челябинск
    Сообщений
    1,613
    Promo (¢)
    42,835
    Благодарности
    Получено: 559
    Отправлено: 63
    Цитата Сообщение от Hi-FI Посмотреть сообщение
    Я так понимаю, что сравнение будет идти всё время формирования бара?
    На каждом тике. Если это первый тик бара, т.е. время предыдущего != времени открытия бара - значит бар новый, далее, если условие выполнилось, должна работать сигнальная система, дающая/запрещающая открытие нового ордера.

    Вы не можете благодарить!
    Для заказа кода, напишите в личку - я отвечу на ваше предложение.

Страница 185 из 185 ПерваяПервая ... 85 135 175 181 182 183 184 185

Похожие темы

  1. Всё очень просто 123 (Pattern 123)
    от Sergey3011 в разделе Индикаторные торговые стратегии
    Ответов: 33
    Последнее сообщение: 21.11.2017, 06:05
  2. Программирование (МТ4)
    от RoboMaks в разделе Реклама: Предлагаю трейдерам...
    Ответов: 3
    Последнее сообщение: 11.07.2015, 18:21
  3. Очень личное о трейдинге внутри дня
    от ADler 88 в разделе Разговоры о трейдинге
    Ответов: 14
    Последнее сообщение: 10.07.2015, 18:36
  4. Экспресс-курс "Программирование советников на языке MQL4"
    от Антонина Бойкова в разделе Открытый учебный центр
    Ответов: 14
    Последнее сообщение: 22.11.2012, 14:35

Метки этой темы

Ваши права

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