Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Заказ на создание label

Здравствуйте, прошу выполнить мой заказ:

Это в моем понимании:
Так как я считаю, что соединить нажатие лкм и клавиатуры нельзя то:
Нужно уловить время и место нажатия на ЛКМ(и не отпускании её, зажатое состоянии) далее отсчитать время и если будет нажата кнопка на клавиатуре(какая то одна) тогда должно произойти что-то(действие какое то) (Например показ label)


А так, прошу создать индикатор который по нажатии(и удержании) на лкм и нажатию на кнопки клавиатуры(Q например)(её не нужно удерживать) построится label.
  • 0
  • Просмотров: 1337
  • 13 июня 2022, 06:42
  • lafler356
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Доработка советника
13 июня 2022
14 июня 2022

Брокер для ваших роботов, 15 лет на рынке

Комментарии (19)

+
0
Так как я считаю, что соединить нажатие лкм и клавиатуры нельзя


на каком основании вы так считаете?
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 13 июня 2022, 07:18
+
0
данный код построит батон на графике после клика и нажатия ку:




//+------------------------------------------------------------------+
//|                                                        Chart.mq4 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

bool cl=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   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,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,2);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
   //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,0);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
  {

//--- нажатие левой кнопкой мышки на графике

   if(id==CHARTEVENT_CLICK)
     {
      cl=1;
     }

//--- нажатие кнопки на клавиатуре

   if(id==CHARTEVENT_KEYDOWN && cl)
     {
      if(lparam==81)
        {
         PutButton("c",33,33,"BUTON");
        }
     }     
  }
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 13 июня 2022, 08:55
+
0
Спасибо но не работает
avatar

  9  lafler356 Автор Сообщений: 305

  • 13 июня 2022, 10:37
+
0
Посмотрите пожалуйста что не так. Почему не работает
avatar

  9  lafler356 Автор Сообщений: 305

  • 13 июня 2022, 16:04
+
0
что конкретно не работает?
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 13 июня 2022, 16:22
+
0
советник работает по следующему алгоритму:

1. Кликаем левой кнопкой по графику
2. жмем клавишу ку
3. выводится батон

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

  35  AM2 Сообщений: 16276 - Андрей

  • 13 июня 2022, 16:28
+
0
Я просил сделать индикатор, в советнике может по другому там, в индюке не пашет) ПОжалуйста проверьте
avatar

  9  lafler356 Автор Сообщений: 305

  • 13 июня 2022, 16:47
+
0
перенес в индикатор. все работает. покажите ваш код, как вы перенесли
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 13 июня 2022, 16:51
+
0
Андрей простите меня пожалуйста, за потраченное время, у меня терминал заглючил похоже) всё работает. Простите еще раз. и Спасибо большое
avatar

  9  lafler356 Автор Сообщений: 305

  • 13 июня 2022, 17:01
+
0
НЕТ!!! Андрей, емае, не работает!!! точнее работает но не правильно!
Я просил именно удержание кнопки, а так получается что можно щелкнуть на левую кнопку мыши и на кнопку

ПСЫ: Поэтому я и сделал заказ, так как считаю что мне это не под силам нежели вам)
Редактирован: 13 июня 2022, 17:12
avatar

  9  lafler356 Автор Сообщений: 305

  • 13 июня 2022, 17:11
+
0
напишите для чего вам это?
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 13 июня 2022, 20:50
+
0
Для индикатора) нужно именно такое управление, определённая комбинация. Пожалуйста посмотрите что можно сделать, если нужно я найду поручителей
avatar

  9  lafler356 Автор Сообщений: 305

  • 13 июня 2022, 21:28
+
0
то что было на поверхности я вам написал, а дальше копать надо. задайте вопрос на форуме мкл.
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 13 июня 2022, 21:38
+
0
Спасибо но там молчат))) так вы ничего собственное не сделали))) зачем то прикрепили счетчик)) с ним бы и я мог))) могли бы вы чуть больше кода написать чтобы я дальше капать смог, ибо сейчас я даже не тронулся с места
avatar

  9  lafler356 Автор Сообщений: 305

  • 13 июня 2022, 22:56
+
0
если у меня получилось быстро сделать, есть заказ, нет — к другому специалисту
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 14 июня 2022, 06:45
+
0
согласен, но зачем было делать по своему ТЗ? который легче/проще и быстрее
avatar

  9  lafler356 Автор Сообщений: 305

  • 14 июня 2022, 14:19
+
0
здесь смотрите: www.mql5.com/ru/docs/event_handlers/onchartevent
есть все что вам нужно!
Проще, легче — бесплатно.
avatar

  14  verta81 Сообщений: 391

  • 14 июня 2022, 22:41
+
0
лкм > 10сек для нажатия кнопки Q > 10 сек > удаление объектов

<code>
//+------------------------------------------------------------------+
//|                                                        Chart.mq4 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict

bool cl=0;
datetime time=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- включение сообщений о перемещении мыши по окну чарта
   ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectsDeleteAll();

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   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,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,2);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
   //--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,0);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
  {
   if(id==CHARTEVENT_MOUSE_MOVE)
     {
      Comment("POINT: ",(int)lparam,",",(int)dparam,
              "\n","MouseState=",(uint)sparam,
              "\n time=",time,
              "\n TimeCurrent()=",TimeCurrent());
      if((uint)sparam==1)
       {
        time=TimeCurrent();
       }
      if((uint)sparam!=1)
       {
        if(time+10<TimeCurrent())
         {
          ObjectsDeleteAll();
          ChartRedraw();
         }
       }
     }
//--- нажатие кнопки на клавиатуре

   if(id==CHARTEVENT_KEYDOWN && time+10>TimeCurrent())
     {
      if(lparam==81)
        {
         PutButton("c",33,33,"BUTON");
         time=TimeCurrent();
        }
     }  
  }
//+------------------------------------------------------------------+

</code>


надеюсь это поможет Вам
Редактирован: 14 июня 2022, 23:42
avatar

  14  verta81 Сообщений: 391

  • 14 июня 2022, 23:39
+
0
мой вариант с удержанием. в коде все прокомментировал


//+------------------------------------------------------------------+
//|                                                        Chart.mq4 |
//|                                              Copyright 2022, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

int delta=0;
datetime t=0;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   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,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,2);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(0,name,OBJPROP_HIDDEN,0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

// считаем секунды с момента нажатия 

   delta=int(TimeCurrent()-t);

   Comment("\n delta: ",delta,
           "\n t: ",t);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // идентификатор события
                  const long& lparam,   // параметр события типа long
                  const double& dparam, // параметр события типа double
                  const string& sparam  // параметр события типа string
                 )
  {

// запомнили время нажатия лкм

   if(int(sparam)==1)
     {
      t=TimeCurrent();
     }
     
// если отпустили счетчик сбросился

   if(int(sparam)==0)
     {
      t=0;
     }
     
// если с момента удержания прошло более 3 сек и нажали ку, то рисуем кнопку

   if(lparam==81 && delta>3 && delta<111)
     {
      PutButton("c",33,33,"BUTON");
     }
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+


Редактирован: 17 июня 2022, 03:05
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 17 июня 2022, 02:57

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий