[Решено][MQL5] Может ли советник включать курсор-перекрестие?

 

Здравствуйте все!

Скажите, сотоварищи, возможно ли в код советника прописать команду для включения вместо курсора-стрелки  режим курсора-перекрестия  на графике?

 
kofesutra:

Здравствуйте все!

Скажите, сотоварищи, возможно ли в код советника прописать команду для включения вместо курсора-стрелки  режим курсора-перекрестия  на графике?

Пишите сразу, при каких условиях это должно срабатывать

 
Vitaly Muzichenko:

Пишите сразу, при каких условиях это должно срабатывать

Пишу сейчас советник-помощник выставления отложенных ордеров. Хочу в визуальном режиме: советник говорит "Укажите уровень входа", включает режим курсора-перекрестия и ждёт клика пользователем по графику. 

 
kofesutra:

Пишу сейчас советник-помощник выставления отложенных ордеров. Хочу в визуальном режиме: советник говорит "Укажите уровень входа", включает режим курсора-перекрестия и ждёт клика пользователем по графику. 


А почему бы не ставить для этого простую горизонтальную линию или ценовую метку (или еще чего можно придумать)? Перекрестие придется вызывать с помощью Win API. С горизонтальной линией (или каким-то другими графическими объектами) таких проблем не будет.

 
Ihor Herasko:

А почему бы не ставить для этого простую горизонтальную линию или ценовую метку (или еще чего можно придумать)? Перекрестие придется вызывать с помощью Win API. С горизонтальной линией (или каким-то другими графическими объектами) таких проблем не будет.


Привык к перекрестию :) А другие варианты не лучше стандартного курсора.

Так-то, после команды эксперта можно кликнуть по колесу мыши и затем указывать точку входа на графике, но хочется и это переложить на советник ;)

 
kofesutra:

Привык к перекрестию :) А другие варианты не лучше стандартного курсора.

Так-то, после команды эксперта можно кликнуть по колесу мыши и затем указывать точку входа на графике, но хочется и это переложить на советник ;)

Примерно так. 

#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0
#property strict

int OnInit(void)
 {
// Включение сообщений о перемещении мыши по окну чарта
  ChartSetInteger(0,CHART_EVENT_MOUSE_MOVE,1);
 
  return(INIT_SUCCEEDED);
 }

void OnDeinit(const int reason)
 {
   
 }

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
 {
  if(id==CHARTEVENT_MOUSE_MOVE) {
   int      window=0; 
   datetime dt    =0; 
   double   price =0; 
   ChartXYToTimePrice(0,(int)lparam,(int)dparam,window,dt,price);
    SetHLine("h_cross_hair", price,0, 1, clrSilver);
    SetVLine("v_cross_hair", dt, 0, 1, clrSilver);
   ChartRedraw(0);
  }
 }

int OnCalculate (const int    rates_total,
                 const int    prev_calculated,
                 const int    begin,
                 const double &price[])
 {
   return(rates_total);
 }

void SetHLine(string nm, double p1=0, int st=0, int wd=1,color cl=clrRed) {
 if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_HLINE,0,0,0);
    ObjectSetInteger(0,nm,OBJPROP_STYLE,st);
    ObjectSetInteger(0,nm,OBJPROP_WIDTH,wd);
    ObjectSetInteger(0,nm,OBJPROP_COLOR,cl);
    ObjectSetString(0,nm,OBJPROP_TOOLTIP,"\n");
    ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,true); 
    ObjectSetInteger(0,nm,OBJPROP_SELECTED,false);
    ObjectSetInteger(0,nm,OBJPROP_HIDDEN,false);
    ObjectSetInteger(0,nm,OBJPROP_BACK,false);
   }
    ObjectSetDouble(0,nm,OBJPROP_PRICE,p1);
 }
 
void SetVLine(string nm, datetime tm1=0, int st=0, int wd=1,color cl=clrRed) {
 if(ObjectFind(0,nm)<0) {
    ObjectCreate(0,nm,OBJ_VLINE,0,0,0);
    ObjectSetInteger(0,nm,OBJPROP_STYLE,st);
    ObjectSetInteger(0,nm,OBJPROP_WIDTH,wd);
    ObjectSetInteger(0,nm,OBJPROP_COLOR,cl);
    ObjectSetString(0,nm,OBJPROP_TOOLTIP,"\n");
    ObjectSetInteger(0,nm,OBJPROP_SELECTABLE,true); 
    ObjectSetInteger(0,nm,OBJPROP_SELECTED,false);
    ObjectSetInteger(0,nm,OBJPROP_HIDDEN,false);
    ObjectSetInteger(0,nm,OBJPROP_BACK,false);
   }
    ObjectSetInteger(0,nm,OBJPROP_TIME,tm1);
 }
 
Vitaly Muzichenko:

Примерно так. 


Виталий, круто! Попробую себе прикрутить, спасибо!

 
kofesutra:

Виталий, круто! Попробую себе прикрутить, спасибо!


Виталий, спасибо - работает! :) Благодарю ;)

DeInit сам доточу.

 
kofesutra:

Пишу сейчас советник-помощник выставления отложенных ордеров. Хочу в визуальном режиме: советник говорит "Укажите уровень входа", включает режим курсора-перекрестия и ждёт клика пользователем по графику. 


Через AutoIt легко сделать.

Причина обращения: