DENYA Опубликовано 2 сентября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 2 сентября, 2018 (изменено) Если кому интересна тема панелей - есть запрос на следующую конфигурацию. Если нужна будет помощь - пишите.Да, программисты, тема ОЧЕНЬ актуальна для меня лично и думаю для МНОГИХ кто управляет приличным числом ордеров на нескольких чартах.Допустим у меня сейчас открыто 13 счетов с 1000 ордерами на каждом. Итого 13000 ордеров. Естественно сейчас этим добром управляет советник, НО чувствую явную необходимость во всомогательной панели чтобы в ручном режиме вовремя закрывать сетки.В идеале вижу вариант как на скрине. Также надо сделать ВСЕ возможное для экономии рабочего пространства на графике, поэтому названия кнопочек необходимо сделать как на скрине.Я не программист, но ЕСЛИ скрипты на отдельное событие (закрытие плюсовых, закрытие минусовых, итд...) помогут, могу выложить мой набор рабочих надежных скриптов.Кроме того, кто знает что такое функция CloseBY, то могу выложить открытый код по закрытию ордеров с использованием данной функции. Кто знает - понимает МОЩЬ данной функции (молниеносное закрытие, меньшие торговые издержки).void ReconcileHedgeOrders(){ for(int i=OrdersTotal()-1;i>0&&!IsStopped();i--) { if(OrderSelect(i,SELECT_BY_POS) && OrderSymbol()==_Symbol && OrderType() && (!m_locked_magic || OrderMagicNumber() == MAGIC) ) { int type = OrderType(); int ticket = OrderTicket(); for(int j=i-1;OrderSelect(j,SELECT_BY_POS);j--) { if(OrderSymbol()==_Symbol && OrderType() && OrderType()!=type && (!m_locked_magic || OrderMagicNumber() == MAGIC) ) { if(!OrderCloseBy(OrderTicket(),ticket)) Print("OrderCLoseByError: ",GetLastError()); i=OrdersTotal(); break; } } } } } И видео панели на основании скрипта Описание: Спойлер I know, I know... we've all said it before, hedging is f*** stupid because it costs you double in fees, right?Well that's actually not (always) the case. There's a neat little hidden gem in MT that's almost entirely undocumented and almost never used by developers (ever) that's called OrderCloseBy. What this function does is takes hedged orders and reconciles the transactions as netted. This allows you to do some neat things we'll talk about in a minute, but for now it's important to understand that if you use this method you are not charged double fees since you are instructing the broker server to reconcile the hedge as a netting transaction.eg. Buy 1 lot to open and Sell 1 lot to close. Profit = spread of sell price - buy price. Net commission = 1 lot (not 2). Net Profit = Profit - commission.So why is this important? Well it's about risk management. Let's say you have 20 open positions and you want to close them down instantly. How do you do it?Option 1: Close them one by one whilst crying into your keyboard because your profits are slipping away from waiting for each order to close and confirm....and on......and on........Option 2: You send in a hedge. Wait until calm markets. Close both and get charged double fees.Option 3: You send in a hedge. Close whenever you damn-well please by instructing the server to reconcile both transactions as net-closed and only get charged once.What about reversing positions? Even if you're reversing a single order you still have to close one.........wait for confirmation.........open another. In the mean-time a full second could have passed and massive slippage accrued in the process. Reversing with hedging is instant when you send an order in that's net_position * 2 in the opposite direction. Then of course you use OrderCloseBy to reconcile the orders as partially closed - costing you nothing in the process.Here is a proof of concept trade panel I made. It's not the prettiest panel out there, but it is the fastest!IMPORTANT: This will not work with brokers that don't support hedging accounts. Спасибо )PANEL.jpg Изменено 2 сентября, 2018 пользователем DENYA Ссылка на сообщение Поделиться на другие сайты More sharing options...
Andjee Опубликовано 3 сентября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 3 сентября, 2018 Добрый день! Скажите как отключить крестик в панеле и можно ли его вообще убрать, что бы была одна кнопка свернуть??? Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 3 сентября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 3 сентября, 2018 Andjee крестик отключается внутри стандартной библиотеки графических объектов (какой именно - незнаю), если хотите покопайтесь и обязательно найдёте. Ссылка на сообщение Поделиться на другие сайты More sharing options...
Andjee Опубликовано 4 сентября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 4 сентября, 2018 (изменено) Andjee крестик отключается внутри стандартной библиотеки графических объектов (какой именно - незнаю), если хотите покопайтесь и обязательно найдёте. А можете рассказать как поменять цвет LABEL ???сам разобрался!!! Цитата bool CTradePanel::CreateLabel(const long chart,const int subwindow,CLabel &object,const string text,const uint x,const uint y,label_align align, const color clr) {// All objects must have separate name string name=m_name+"Label"+(string)ObjectsTotal(chart,-1,OBJ_LABEL);//--- Call Create function if(!object.Create(chart,name,subwindow,x,y,0,0)) { return false; }//--- Adjust text if(!object.Text(text)) { return false; } //--- Adjust text if(!object.Color(clr)) { return false; }//--- Align text to Dialog box's grid ObjectSetInteger(chart,object.Name(),OBJPROP_ANCHOR,(align==left ? ANCHOR_LEFT_UPPER :(align==right ? ANCHOR_RIGHT_UPPER : ANCHOR_UPPER)));//--- Add object to controls if(!Add(object)) { return false; } return true; } Изменено 4 сентября, 2018 пользователем Andjee 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
bor-ix Опубликовано 6 сентября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 6 сентября, 2018 (изменено) Может кто знает - как реализовать вкладки на панели, чтоб их можно было переключать, что-то на подобии как в приведенном ниже примере? Изменено 6 сентября, 2018 пользователем bor-ix Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 7 сентября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 7 сентября, 2018 bor-ix готового элемента нет, поэтому нужно использовать кнопки и окна, управлять ими и т.д. - в рукапашную Ссылка на сообщение Поделиться на другие сайты More sharing options...
bor-ix Опубликовано 8 сентября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 8 сентября, 2018 bor-ix готового элемента нет, поэтому нужно использовать кнопки и окна, управлять ими и т.д. - в рукапашную 0ll, я так понимаю это можно реализовать отображением части интерфейса или его скрытием за счет выбора нажатия кнопки...т.е. при нажатии кнопки 1 - отображается информация 1, а информация 2 - не отображается,при нажатии же кнопки 2 - все происходит в точности наоборот - информация 2 видна, а информация 1 - не отображается...можно реализовать через оператор if:if (button1 == trure && button2 == false){рисуем инфо 1}if (button1 == false && button2 == trure){рисуем инфо 2} Ссылка на сообщение Поделиться на другие сайты More sharing options...
0ll Опубликовано 9 сентября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 9 сентября, 2018 можно реализовать через оператор if Добавлю:if (button1 == trure && button2 == false){скрываем инфо 2рисуем инфо 1} 2 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Andjee Опубликовано 27 октября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 27 октября, 2018 как поставить панель главной, что бы график на нее не накладывался?? Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 27 октября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 27 октября, 2018 как поставить панель главной, что бы график на нее не накладывался?? Когда вы описываете объект там есть функция ObjectSetInteger, в ней есть индификатор OBJPROP_BACK, надо прописать false и БВС (Будет Вам Счастье)Разжевано: там где вы описываете объект ( панель ), в этой функции вставить строчку "ObjectSetInteger(chart_ID,name,OBJPROP_BACK,false);" без кавычек, где chart_ID - ID графика(0-текущий график), name - имя метки(объекта) 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Andjee Опубликовано 27 октября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 27 октября, 2018 у меня так!!TradePanel.Create(ChartID(),"TradePanel",0,20,20,250,230);Create(const long chart,const string name,const int subwin=0,const int x1=20,const int y1=20,const int x2=320,const int y2=420);поподробнее можно? Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 27 октября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 27 октября, 2018 поподробнее можно? Можно:d1)у вас есть функция Create(const long chart,const string name,const int subwin=0,const int x1=20,const int y1=20,const int x2=320,const int y2=420);2)внутри есть описание объекта в виде ObjectSetInteger(блаблаблабла...);3)вставьте строчку там же ObjectSetInteger(chart,name,OBJPROP_BACK,false);попробуйте, если что высылайте код, встрою))) Ссылка на сообщение Поделиться на другие сайты More sharing options...
Andjee Опубликовано 27 октября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 27 октября, 2018 попробуйте, если что высылайте код, встрою))) bool CTradePanel::Create(const long chart,const string name,const int subwin=0,const int x1=20,const int y1=20,const int x2=320,const int y2=420) { CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2); CreateButton(chart,subwin, TRAL,"TRAL",103,115,60,20); CreateButton(chart,subwin, CloseAll,"CLOSE",33,115,60,20); return(true); } Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 27 октября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 27 октября, 2018 bool CTradePanel::Create(const long chart,const string name,const int subwin=0,const int x1=20,const int y1=20,const int x2=320,const int y2=420) { CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2); CreateButton(chart,subwin, TRAL,"TRAL",103,115,60,20); CreateButton(chart,subwin, CloseAll,"CLOSE",33,115,60,20); return(true); } ищите функцию, скорее всего, у вас она будет выглядеть как bool Сreate () и вставляйте эту строчку ObjectSetInteger(chart,name,OBJPROP_BACK,false);А вообще мы гадаем на кофейной гуще. Вам надо исходник в студию или искать функцию где описывается основная панель (ее параметры). Там должен быть индификатор OBJPROP_BACK, который отвечает за - объект на переднем (false) или заднем (true) плане. Попробуйте в метаедиторе в верхнем правом угле (в поиске) вставить OBJPROP_BACK, и с помощью кнопки интер найти все строки где есть этот индификатор, если там стоит true (....OBJPROP_BACK,true....), то поставьте (....OBJPROP_BACK,false...)ЗЫ. уже разжевал....Присылайте исходник, угадать очень сложно (если у Вас конечно не сверхсекретный и не сверхприбыльный совПанель), тогда лучше не надо, а то я стану обладателем и меня начнут разыскивать Ссылка на сообщение Поделиться на другие сайты More sharing options...
Andjee Опубликовано 27 октября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 27 октября, 2018 bool CTradePanel::Create(const long chart,const ЗЫ. уже разжевал....Присылайте исходник, угадать очень сложно (если у Вас конечно не сверхсекретный и не сверхприбыльный совПанель), тогда лучше не надо, а то я стану обладателем и меня начнут разыскивать и если еще получится, то можете убрать крестик(закрытие)....хочу оставить только сворачиваниеPanel_3+.mq4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
loveЦ Опубликовано 27 октября, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 27 октября, 2018 и если еще получится, то можете убрать крестик(закрытие)....хочу оставить только сворачивание Все настройки панели находятся в подключаемых библиотеках, а доступа у меня к ним нет. У меня панель не прозрачна)) Ссылка на сообщение Поделиться на другие сайты More sharing options...
NightTraider Опубликовано 2 декабря, 2018 Поделиться Графический интерфейс - обмен опытом Опубликовано 2 декабря, 2018 (изменено) Andjee тут же дело не в прозрачности, а в отображении графика поверх или нет, настройка в терминале в свойствах.хотя я наверное не совсем прав требуется, но стандартно лежат по пути ... \MQL4\Include#include #include #include в Button наверное значок закрытия есть. Изменено 2 декабря, 2018 пользователем NightTraider Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 9 мая, 2019 Поделиться Графический интерфейс - обмен опытом Опубликовано 9 мая, 2019 Решил изучить более продвинутую торговую панель через ООП, честно, в нем не силен, всегда справлялся стандартными средствами.Коллеги, подскажите, применил образец от ilnur17021992.Проблема состоит в том, что в примере, когда тыкаешь на кнопку она должна подсветиться темным (действие нажатия) и вернуться к первоначальному состоянию (отжатие).Но когда несколько раз подряд жмет на саму кнопку, то в какой то момент она зажимается, т.е. загорается нажатой и не отжимается. Я уже весь код терминала перерыл, не могу найти, как исправить эту явную ошибку. В библиотеке Button есть функции CButton::OnMouseDown и CButton::OnMouseUp - но это не то. Нужно найти именно тот момент, который зажимает эту кнопку и заблокировать его, чтобы CButton::OnMouseUp сам справился и отжал ее после зажатия CButton::OnMouseDown. Надеюсь доступно объяснил. Просто весь день уже ковыряю, уже начинаю нервничать ) Ссылка на сообщение Поделиться на другие сайты More sharing options...
lova Опубликовано 10 мая, 2019 Поделиться Графический интерфейс - обмен опытом Опубликовано 10 мая, 2019 В свое время ковырялся с этой панелькой из примера. Затем делал свои инфо панели и торговые панели. И постоянно ловил глюки. А когда из одной панели открываешь другую - вообще полный финиш. В результате перешел на библиотеку EasyAndFastGUI и ни разу не пожалел.https://www.mql5.com/ru/code/19703Сборку из последних версий библиотек MT5 работающую под MT4 и несколько картинок примеров реализации прилагаю. EasyAndFastGUI.ZIPSignal.jpgTradeInfo.jpgProfit.jpgTradePanel.jpgNews.jpg 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 10 мая, 2019 Поделиться Графический интерфейс - обмен опытом Опубликовано 10 мая, 2019 В результате перешел на библиотеку EasyAndFastGUI и ни разу не пожалел. Да, я читал о ней, но у меня другая цель: сделать простую панель из нескольких кнопок, данный вариант чересчур усложнен дополнительной информацией, которая мне сейчас не нужна ) Ссылка на сообщение Поделиться на другие сайты More sharing options...
lova Опубликовано 10 мая, 2019 Поделиться Графический интерфейс - обмен опытом Опубликовано 10 мая, 2019 Нисколько не навязывая библиотеку, просто для примера - панелька с 3 кнопками. 3_Buttons.ex43_Buttons.mq4 2 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Rever27 Опубликовано 10 мая, 2019 Поделиться Графический интерфейс - обмен опытом Опубликовано 10 мая, 2019 Нисколько не навязывая библиотеку, просто для примера - панелька с 3 кнопками. Спасибо, если не решу вопрос с кнопками по той панели, придется переходить на эту, более современную.Просто уже много написал по тем библиотекам, не хотелось бы с нуля все переделывать :) Ссылка на сообщение Поделиться на другие сайты More sharing options...
lova Опубликовано 28 марта, 2020 Поделиться Графический интерфейс - обмен опытом Опубликовано 28 марта, 2020 Последняя версия библиотек EastAndFastGUI работающая под MT4. При обновлении терминала MT4 файлы в папках Canvas и Graphics заменяются более новыми версиями, что приводит к ошибкам компиляции. Поэтому после обновления терминала следует перезаписать эти файлы файлами из архива. EasyAndFastGUI.zip 1 3 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Eiden Опубликовано 25 апреля, 2020 Поделиться Графический интерфейс - обмен опытом Опубликовано 25 апреля, 2020 В 28.03.2020 в 10:38, lova сказал: Последняя версия библиотек EastAndFastGUI работающая под MT4. При обновлении терминала MT4 файлы в папках Canvas и Graphics заменяются более новыми версиями, что приводит к ошибкам компиляции. Поэтому после обновления терминала следует перезаписать эти файлы файлами из архива. EasyAndFastGUI.zip 533 \u043a\u0411 · 13 загрузок Чем оно отлично от последней версии под мт4 самого автора? Ссылка на сообщение Поделиться на другие сайты More sharing options...
lova Опубликовано 25 апреля, 2020 Поделиться Графический интерфейс - обмен опытом Опубликовано 25 апреля, 2020 Автор начиная с какой-то версии забил на MT4. Поэтому пришлось извращаться, чтобы заставить последнюю версию автора для MT5 работать под MT4 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти