Советники: eInTradePanel

 

eInTradePanel:

Торговая панель eInTradePanel. Альтернатива стандартному окну открытия ордера. Минимально возможного размера с несколько расширенным функционалом и некоторым количеством других дополнительных функций.

Автор: Дмитрий

Торговая панель eInTradePanel

Элементы панели управления:

  1. Кнопка отображения/скрытия торговой панели.
  2. Кнопка включения звуковой сигнализации при срабатывании стоплосс/тейкпрофит и отложенных ордеров.
  3. Кнопка включения отправки e-mail при тех же событиях, что и в п. 2.
  4. Кнопки выбора типа ордера: "b" - рыночный buy, "s" - рыночный sell, "bs" - отложенный buystop, "ss" - отложенный sellstop, "bl" - отложенный buylimit, "sl" - отложенный selllimit, "bsl" - отложенный buystoplimit, "ssl" - отложенный sellstoplimit.
  5. Кнопки открытия ордера.
  6. Поле ввода объема ордера.
  7. Поле ввода/отображения значения стоплосс в пунктах.
  8. Поле ввода/отображения значения тейкпрофит в пунктах.

Панель может использоваться в двух режимах: режим 1 (рис. 1) - открытие рыночной позиции со стоплосс/тейкпрофит указанными в пунктах. Режим 2 (рис. 2) - открытие/установка любого типа ордера со стоплосс/тейкпрофит и уровнями открытия определяемыми положением горизонтальных линий. Если все кнопки выбора типа ордера отжаты, панель работает в режиме 1.

При нажатии на любую из кнопок выбора типа ордера вместо кнопок "Sell" и "Buy" появляется одна кнопка соответствующая типу выбранного ордера и на графике появляются линии для определения уровней этого ордера, линии можно перемещать мышкой:


Торговая панель в режиме 2 (выбран ордер buystoplimit)

 
Была ошибка с установкой времени истечения. Исправлена.
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

Integer:
 Торговая панель eInTradePanel. Альтернатива стандартному окну открытия ордера. 

Супер! Огромное спасибо! 

Идея, реализация, функционал - всё по 5 баллов! Даже не нашел к чему придраться. :) Хорошо бы, если б разработчики сделали эту альтернативу штатной, встроенной. 

Integer, есть ли идеи по развитию? Принимаются ли пожелания?

 
Отлично!!! Спасибо!!!!
 
VladMih:

Супер! Огромное спасибо! 

Идея, реализация, функционал - всё по 5 баллов! Даже не нашел к чему придраться. :) Хорошо бы, если б разработчики сделали эту альтернативу штатной, встроенной. 

Integer, есть ли идеи по развитию? Принимаются ли пожелания?

Принимаются пожелания, давайте. 

 

 

 

Gold-версия для увеличенных шрифтов экрана.

Пользуюсь увеличенными на 25% шрифтами (установлено в системе), в этом режиме многие программы норовят "залезть на поля".  Хорошо что некоторые с исходниками.. :)

Заодно перекрасил на свой вкус.  О, кстати, пожелание - вынести настройку цветов в ini-файл, щёб легче подкручивать при смене настроения.. ;)

Ну это так, мелочи, можно всёрьёз не воспринимать. 

А вот серьёзное пожелание - создавать панель сразу во всех чартах (запуская советник конечно же на одном). Учитывая, что панель сделана в виде класса - это не шибко сложно.  (Простенький пример здесь)

Чарты надо экономить. Запуская советник на чарте, мы лишаем чарт возможности запускать на нём какой-либо другой советник. :(

Вопчем - пусть наши эксперты будут взаимно вежливы.

Файлы:
 
MetaDriver:

А вот серьёзное пожелание - создавать панель сразу во всех чартах (запуская советник конечно же на одном). Учитывая, что панель сделана в виде класса - это не шибко сложно.  (Простенький пример здесь)

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

В терминале достаточно одного чарта с панелью, у чарта можно переключать символ. 

 

 

 
Integer:

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

к вопросу быстрого таймера и "мягкой" зацикленности

//------------------------------------------------------------------    OnInit
int OnInit()
{
  EventChartCustom(ChartID(), 1, 0, 0, "user_start"); // проинициализировали цикл
}
//------------------------------------------------------------------    OnChartEvent
void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
{       
  /* обработка события*/
        
  Sleep(10); // небольшая пауза для разгрузки
        
  EventChartCustom(ChartID(), 1, 0, 0, ""); // зациклили события
}
 
Integer:

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

--

2.   В терминале достаточно одного чарта с панелью, у чарта можно переключать символ. 

1.  При внесении небольших изменений:

.......
#property indicator_chart_window
.......
........

//void OnTick()
int OnCalculate(const int rates_total,const int prev_calculated,
                const datetime &Time[],const double &Open[],const double &High[],
                const double &Low[],const double &Close[],const long &TickVolume[],
                const long &Volume[],const int &Spread[])
{
   TradePanel.Tick();
   return 0;
}

советник превращается в нормально (с двумя некритичными варнингами) компилируемый индикатор.

У него всё работает, на здоровье практически не жалуется. Единственная дисфункция - не открывает ордера, ибо по штату не положено... :)

Это решаемо. Схема примерно такая:

советник открывает на всех (или только минутных) чартах индикаторы, которые вполне автономны, только при необходимости открыть/изменить позицию переадресуют

событие основному советнику, что он за них и делает.

Тонкости:

1) советник открывая каждый индикатор, передаёт ему как параметр ID своего чарта, для того, чтоб индикатор мог генерить событие адресуя конкретному чарту.

2) Генеря событие адресованное советнику, индикатор должен не забыть передать в качестве строкового параметра символ по которому нужно корректировать позу или выставлять/корректировать ордер.

3) Желательно, чтоб советник сканировал раз в одну/несколько секунд чарты, проверяя нету ли новых минутных чартов, ну и запускал при необходимости новые индикаторы,

прибивая лишние.

Собсно всё.  Делов на час-полтора, а то и меньше.

ps. Ах да, упустил (4) глобальные переменные. Их можно размножить без особых проблем - к имени переменной добавляется ID чарта в качестве префикса.

--

2.   Вот уж это воистину долго.

 
СУУПЕЕР!!!!!!Офигенно!!!! ни чего лишнего  ,всё просто,всё интуитивно понятно,без лишних наворотов!!! +5 баллов за продукт!!! Искал просто управление позицией и ордером с помощью линий,а нашёл такое чудо!!! Молодца!!!!
 

Установил

выдаёт 5 ошибок и 2 предупреждение

Как исправить?


Файлы:
iud1kh57g0.jpg  107 kb
Причина обращения: