Спасибо за статью! А как можно изменить цвет фона и рамки самой панели? Что-то не нашел в стандартных классах.
Спасибо за статью! А как можно изменить цвет фона и рамки самой панели? Что-то не нашел в стандартных классах.
Переопределить дефайны в Defines.mqh.
- При ближайшем обновлении стандартная библиотека будет восстановлена - соответственно будут восстановлен файл Defines.mqh.
- Править стандартную библиотеку - это не есть хорошо.
- При ближайшем обновлении стандартная библиотека будет восстановлена - соответственно будут восстановлен файл Defines.mqh.
- Править стандартную библиотеку - это не есть хорошо.
Я не предлагал ее править. Переопределить нужно после включения этого файла, но до создания панели.
Gподскажите плз как сделать, на простом примере, в ооп слабо шарю. Менял цвета дефайнов в самой библиотеке - цвет панельки не меняется
После изменения файла перекомпилируйте советника, должно сработать. И не забудьте сделать бэк-ап, чтоб после обновления восстановить свой вариант.
Переопределение делается с помощью #undef и #define. Но их нужно в нужное место вставить ;)
Переопределение делается с помощью #undef и #define. Но их нужно в нужное место вставить ;)
После изменения файла перекомпилируйте советника, должно сработать. И не забудьте сделать бэк-ап, чтоб после обновления восстановить свой вариант.
Переопределение делается с помощью #undef и #define. Но их нужно в нужное место вставить ;)
Ну вот так сделал, ниче не работает. Панель как была белой так и осталась
Компилятор пишет Macro redifinition, т.е. типа переоперделил...
//+------------------------------------------------------------------+ //| MyPanel.mqh | //| Copyright © 2013, DeltaTrader | //| http://www.deltatrader.com.br | //+------------------------------------------------------------------+ #property copyright "DeltaTrader © 2013" #property link "www.deltatrader.com.br" #property version "1.000" #property description "Test Panel" #property indicator_plots 0 //+------------------------------------------------------------------+ //| Includes | //+------------------------------------------------------------------+ #include <Controls\Dialog.mqh> #include <Controls\Label.mqh> #include <Controls\Panel.mqh> #include <Controls\Edit.mqh> #include <Controls\Defines.mqh> #define CONTROLS_DIALOG_COLOR_BORDER_LIGHT C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_BORDER_DARK C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_BG C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CAPTION_TEXT C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CLIENT_BG C'0x00,0x00,0xFF' #define CONTROLS_DIALOG_COLOR_CLIENT_BORDER C'0x00,0x00,0xFF' //+------------------------------------------------------------------+ //| Global parameters | //+------------------------------------------------------------------+ int panelXX = 200; int panelYY = 200; int panelWidth = 600; int panelHeight = 400; CAppDialog m_panel; //--- Bid objects CPanel m_bidcolor; CLabel m_bidlabel; //--- Ask objects CPanel m_askcolor; CLabel m_asklabel; CEdit m_edit; //+------------------------------------------------------------------+ //| On Init | //+------------------------------------------------------------------+ int OnInit() { //--- Panel create m_panel.Create(0,"blablabla",0,panelXX,panelYY,panelWidth,panelHeight); //--- Bid label and colors m_bidcolor.Create(0,"Bid Background Color",0,1,1,panelWidth-30,30); m_bidcolor.ColorBackground(clrYellow); m_panel.Add(m_bidcolor); m_bidlabel.Create(0,"Bid Text",0,5,5,0,0); m_bidlabel.Text("Bid "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); m_bidlabel.Color(clrBlue); m_panel.Add(m_bidlabel); //--- Ask label and colors m_askcolor.Create(0,"Ask Background Color",0,1,1,panelWidth-30,30); m_askcolor.ColorBackground(clrAqua); m_panel.Add(m_askcolor); m_asklabel.Create(0,"Ask Text",0,5,30,0,0); m_asklabel.Text("Ask "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)); m_asklabel.Color(clrRed); m_panel.Add(m_asklabel); m_edit.Create(0,"Bid Background Color",0,1,1,panelWidth-30,30); m_panel.Add(m_edit); //--- Run panel m_panel.Run(); return(0); } //+------------------------------------------------------------------+ //| On DeInit | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- Destroy panel m_panel.Destroy(reason); //--- Delete all objects ObjectsDeleteAll(0,0); } //+------------------------------------------------------------------+ //| On Calculate | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- A very simples bid label m_bidlabel.Text("Bid "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits)); //--- A very simples ask label m_asklabel.Text("Ask "+DoubleToString(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits)); //--- return(rates_total); } //+------------------------------------------------------------------+ //| On Chart Event | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- Move the panel with the mouse m_panel.ChartEvent(id,lparam,dparam,sparam); //--- } //+------------------------------------------------------------------+
Ну вот так сделал, ниче не работает. Панель как была белой так и осталась
Компилятор пишет Macro redifinition, т.е. типа переоперделил...
Воспользуйтесь моим первым советом, просто замените цвета в оригинальном файле и перекомпилируйте советника.
Чтобы вспомнить, как я переопределил цвета в своей панели, нужно покопаться, а сейчас некогда.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Как быстро добавить панель управления к индикатору и советнику:
Вы хотите добавить к своему индикатору или советнику графическую панельку для удобного и быстрого управления, но не знаете, как это сделать? В этой статье шаг за шагом я покажу как "прикрутить" панель диалога со входными параметрами к вашей MQL4/MQL5-программе.
Ваша MQL4/MQL5-программа — индикатор или советник — может быть одной из лучших и полностью выполнять возложенные на нее задачи. Но вы всегда можете немного улучшить ее. Как правило, в 99% случаев для любого изменения входных параметров программы пользователю нужно заходить в ее настройки. Хотите обойтись без этого?
Сделать это можно, создав собственную панель управления на базе классов Стандартной библиотеки. Это позволит менять настройки без перезапуска программы. К тому же, такой подход оживляет программу и выгодно выделяет ее среди других. Посмотреть примеры графических панелей вы можете в Маркете.
В этой статье я покажу, как самому добавить простую панель к вашей MQL4/MQL5-программе. Вы узнаете, как научить программу читать входные параметры и реагировать на изменение их значений.
2.2. Панель
Вид панели "PanelDialog2.mqh" после внесения окончательных изменений:
Рис. 4. Панель номер два
Что мы получим после объединения советника "MACD Sample.mq5" и панели "PanelDialog2.mqh"? На текущем таймфрейме, на котором будет работать советник, можно будет оперативно менять параметры советника ("Lots", "Trailing Stop Level (in pips)" и другие), а также параметры оповещения о торговых событиях советника ("Mail", "Push", "Alert").
Измененные параметры советника ("Lots", "Trailing Stop Level (in pips)" и другие) применяются после щелчка на кнопке "Применить изменения". Изменение параметров оповещения о торговых событиях советника ("Mail", "Push", "Alert") применяются автоматически — щелкать на кнопке "Применить изменения" не нужно.
Автор: Karputov Vladimir