Приветствую Всех ! MT4 как передать в кнопку , имя + значение ( пример кнопка Lots = 0.1) ?
Заранее всем спасибо !
class CMyButton : public CChartObjectButton { public: string desc; double value; }; ... CMyButton button; button.Description(button.desc+"="+DoubleToString(button.value,2));
например так
например так
А как потом из OnChartEvent() добраться до этого класса. Все тоже самое, только вид с другого бока.
Если не затруднит разжевать, с классами ещё не работал .
#property copyright "Copyright 2020, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict extern bool Objects = true; // Удалять все объекты при выгрузке Советника double Lots; // переменная для расчёта лота string lots; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- удаление всех созданных объектов int i; int obj_total=ObjectsTotal(); //PrintFormat("Всего %d объектов",obj_total); if(Objects) { for(i=obj_total-1;i>=0;i--) { string name=ObjectName(i); PrintFormat("Объект %d: %s",i,name); ObjectDelete(name); } } //---------------------- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { PutButton(0,"R",lots ); // Кнопка Lots } //+------------------------------------------------------------------+ //---------------------------------------------------------------------------- // функция установки объекта «Кнопка» //---------------------------------------------------------------------------- void PutButton(int n,string name ,string text) { int y=20+n*25; int x=66; if(ObjectFind(name)<0) { ObjectCreate(0,name,OBJ_BUTTON,0,0,0); //--- установим координаты кнопки ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y); //--- установим размер кнопки ObjectSetInteger(0,name,OBJPROP_XSIZE,65); ObjectSetInteger(0,name,OBJPROP_YSIZE,20); //--- установим угол графика, относительно которого будут определяться координаты точки ObjectSetInteger(0,name,OBJPROP_CORNER,1); //--- установим цвет границы ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,clrBlack); //--- ------------------Kнопка Авто LOTS -------------------------------- if(ObjectGetInteger(0,"R",OBJPROP_STATE)) // Состояние кнопки (Нажата/Отжата) { ObjectSetString(0,"R",OBJPROP_TEXT,lots); ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,clrGainsboro); // установим цвет фона ObjectSetString (0,"R",OBJPROP_FONT,"Arial"); // установим шрифт текста ObjectSetInteger(0,"R",OBJPROP_COLOR,clrGreen); // установим цвет текста кнопки } else { } } }
Приветствую Всех ! MT4 как передать в кнопку , имя + значение ( пример кнопка Lots = 0.1) ?
Заранее всем спасибо !
Можно сделать надпись на кнопке с величиной лота, например "Buy 0.1". Когда поймаешь событие в OnChartEvent(), взять надпись и отделить число. Неплохой способ - двух зайцев убивает - и удобство для пользователя и программируется легко.
Еще можно OBJPROP_TOOLTIP использовать.
Еще можно глобальную переменную терминала использовать. Имя переменой сформировать из хэндла чарта и имени кнопки.
Еще можно сохранять лот в лэйблу (OBJ_LABEL). Разместить ее за пределами графика, имя сделать как у кнопки, но с добавкой - будет очень удобно. Тоже неплохой способ, легкий в реализации.
Можно сделать надпись на кнопке с величиной лота, например "Buy 0.1".
этот вариант рассматривал предать имя кнопки из функции расчета авто лота ,
//+-------------------------------------------------------------------------+ // Функция расчета лота от прибыли + + //+-------------------------------------------------------------------------+ // double Lots; глобальная переменная //string lots; // переменная для отоброжения имя кнопки от лота double FloatingLots() { double Lots1=1200,Lots2=2200,Lots3=3200,Lots4=4200,Lots5=5200,Lots6=6200,Lots7=7200,Lots8=8200,Lots9=9200,Lots10=10200; if(AccountBalance()<=Lots1){Lots=0.1; lots="Lots 0.1";} if(AccountBalance()>=Lots1 && AccountBalance()<=Lots2){Lots=0.2;lots="Lots 0.2";} if(AccountBalance()>=Lots2 && AccountBalance()<=Lots3){Lots=0.3;lots="Lots 0.3";} if(AccountBalance()>=Lots3 && AccountBalance()<=Lots4){Lots=0.4;lots="Lots 0.4";} if(AccountBalance()>=Lots4 && AccountBalance()<=Lots5){Lots=0.5;lots="Lots 0.5";} if(AccountBalance()>=Lots5 && AccountBalance()<=Lots6){Lots=0.6;lots="Lots 0.6";} if(AccountBalance()>=Lots6 && AccountBalance()<=Lots7){Lots=0.7;lots="Lots 0.7";} if(AccountBalance()>=Lots7 && AccountBalance()<=Lots8){Lots=0.8;lots="Lots 0.8";} if(AccountBalance()>=Lots8 && AccountBalance()<=Lots9){Lots=0.9;lots="Lots 0.9";} if(AccountBalance()>=Lots9 && AccountBalance()<=Lots10){Lots=1; lots="Lots 1";} if(AccountBalance()>=Lots9 && AccountBalance()>Lots10){Lots=1; lots="Lots 1";} return(Lots); }
а как передать в кнопку SEEL количество открытых сделок , ну и также кнопка BAY .
этот вариант рассматривал предать имя кнопки из функции расчета авто лота ,
а как передать в кнопку SEEL количество открытых сделок , ну и также кнопка BAY .
А зачем? Не надо. Как отловили событие нажатия кнопки, так собирайте все нужные данные.
А зачем? Не надо. Как отловили событие нажатия кнопки, так собирайте все нужные данные.
всем спасибо ! разобрался вот таким путём
string lots; // переменная для отоброжения имя кнопки Lots string sell; // переменная для отоброжения имя кнопки Sell string bay; // переменная для отоброжения имя кнопки Bay void OnTick() { //--------------- переменные кнопок---------+ if(Seconds()!=Time_Seconds) { Time_Seconds=Seconds(); lots=("Lots "+DoubleToStr(FloatingLots(),1)); bay=("BAY "+IntegerToString(CountBuy())); sell=("SELL "+IntegerToString(CountSell())); } PutButton(1,"A","Torgovliy"); // Кнопка Автоматической торговля по сигналам PutButton(2,"B","Tral-Stop"); // Кнопка Автоматического Trailing-Stop PutButton(3,"E","Skalping"); // Кнопка торговли Skalping PutButton(4,"C",bay); // Кнопка торговли в один клик BAY PutButton(5,"R",lots); // Кнопка LOTS PutButton(6,"D",sell); // Кнопка торговли в один клик SELL

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую Всех ! MT4 как передать в кнопку , имя + значение ( пример кнопка Lots = 0.1) ?
Заранее всем спасибо !