Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1929

 
Valeriy Yastremskiy #:

Немного не понял логики. Мониторятся события открытия позиции, модификации СЛ, закрытия позиции на нескольких символах. Открытие позиции - поиск открыто ли окно с данным символом (ищем id окна), если открыто, то рисуем уровни и далее мониторим трал СЛ. Если не открыто, то либо открываем окно с нужным символом и таймфреймом и рисуем уровни, или не открываем. Событие модификации, находим окно нужного символа, уровни уже нарисованы и меняем цвет уровня или удаляем и рисуем уровень сл.

Вообще что бы исключить влияние клиента, в начале работы надо сделать анализ позиций и окон и открыть окна на символах, где есть открытые позиции и не открыты окна.  

Важное во всём этом - правильно работающий алгоритм трала, то есть сами торговые операции.

Рисование на втором плане, это информационная часть и к прибыльности системы не относится.

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

 

Коллеги - экспортировал в облако кэш файл оптимизации, как мне его задействовать для другом компе для выбора варианта для торгов?


Ответ:

Если кому надо - здесь.


Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Оптимизация стратегий - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии ( советники ) перед началом использования их в реальной торговле. При...
 
Vitaly Muzichenko #:

Важное во всём этом - правильно работающий алгоритм трала, то есть сами торговые операции.

Рисование на втором плане, это информационная часть и к прибыльности системы не относится.

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

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

 
Valeriy Yastremskiy #:

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

Я бы сказал так, что если появилась позиция, то рисовать уровни наперёд на которых будет срабатывать трал. Если появилась дополнительная позиция, перерисовать линии на новые уровни также наперёд. 

Менять цвет после прохождения/модификации не вижу смысла. После закрытия позиций все линии можно удалять.

На примере показал, как должно быть

Здесь рисуются объекты, где будут открываться позиции, просто информативно и всё


---

P.S. В данный момент времени совсем не могу делать математические расчёты, к сожалению

 

Вопрос по OnTimer

Если событие таймера наступит раньше выполнения программы, он будет ждать (программа пропустит событие таймера), или программа прервется, и начнет работу по новому событию таймера? Повиснет в бесконечном цикле, или каждую секунду будет заново цикл?

int OnInit()
{
 EventSetTimer(1);
      
    }
//---
  return(INIT_SUCCEEDED);
}

void OnTimer()
{
  
  int i=0;
  while(i<1) {
   
  }
}

В доках нет прямого указания на приоритет события таймера и хода выполнения программы, только про очередность событий.

Или не до понимаю. Событие таймера, по которому действие началось считается, что оно в очереди?

Доки: 

EventSetTimer

Для каждой программы может быть запущено не более одного таймера. Каждая mql4-программа и каждый график имеют свою собственную очередь событий, куда складываются все вновь поступающие события. Если в очереди уже есть событие Timer либо это событие находится в состоянии обработки, то новое событие Timer в очередь mql4-программы не ставится.


 
Valeriy Yastremskiy #:

Вопрос по OnTimer

Если событие таймера наступит раньше выполнения программы, он будет ждать (программа пропустит событие таймера), или программа прервется, и начнет работу по новому событию таймера? Повиснет в бесконечном цикле, или каждую секунду будет заново цикл?

В доках нет прямого указания на приоритет события таймера и хода выполнения программы, только про очередность событий.

Или не до понимаю. Событие таймера, по которому действие началось считается, что оно в очереди?

Доки: 

EventSetTimer

Для каждой программы может быть запущено не более одного таймера. Каждая mql4-программа и каждый график имеют свою собственную очередь событий, куда складываются все вновь поступающие события. Если в очереди уже есть событие Timer либо это событие находится в состоянии обработки, то новое событие Timer в очередь mql4-программы не ставится.


События - это НЕ ПРЕРЫВАНИЯ. Они обрабатываются в OnXXX последовательно одно за другим, не прерывая текщих функций. 

Пока не завершится OnInit никакой другой обработчик OnTimer OnTick не будет вызван терминалом. (разве что вы сами его как функцию дёрнете)

 
Maxim Kuznetsov #:

События - это НЕ ПРЕРЫВАНИЯ. Они обрабатываются в OnXXX последовательно одно за другим, не прерывая текщих функций. 

Пока не завершится OnInit никакой другой обработчик OnTimer OnTick не будет вызван терминалом. (разве что вы сами его как функцию дёрнете)

Спасибо)

 
Vitaly Muzichenko #:

Важное во всём этом - правильно работающий алгоритм трала, то есть сами торговые операции.

Рисование на втором плане, это информационная часть и к прибыльности системы не относится.

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

Боже мой - а вас то за что в мойку направили? Неужто написали не там и не те переменные:  z или v?...

 
Здравствуйте! Если кому не очень сложно то напишите или помогите написать функцию, для советника МТ4. Смысл в том, что при ручном изменении открытого отложника или рыночного ордера советник отправлял бы сообщение на почту. Например: передвинул у открытого лимитника стоплосс, советник пишет мейл, что у такого то ордера стоплосс изменился с такого то на такой то.
 
Vitaly Muzichenko #:


Вроде должен работать. Не проверял.

Логика рисования. Не контролирую уровни, рисую заново и внизу цены, если в Бай рисую серым, сверху синим, В Селл, если сверху цены уровень, он серых, ниже красный.

Да, забыл удаление уровней поставить.)))

Файлы:
Причина обращения: