просьба к разработчикам MT4 - страница 2

 
а он без "GetText" работает?
При присоединении к графику нужно в параметрах поменять значение Play с false на true и задать уровень Level1 таким, чтобы он попадал в видимую часть графика. И вперёд. Потом можно двигать уровень и границы диапазона мышкой на графике. А можно просто вписывать в свойствах соответствующей линии. Реально значения изменятся только на ближайшем тике. Когда цена попадёт в диапазон, звук будет издаваться на каждом тике, пока она из него не уйдёт.
Просто если бы была функция типа GetText, включать/выключать звук можно бы было меняя прямо на графике ON на OFF, а так надо для этого лезть в параметры индикатора. Например правый клик на графике, "Список индикаторов", "Правка". Самый быстрый способ заставить его на время заткнуться - утащить мышкой уровень подальше от текущей цены.
Да, поскольку звук издаётся только на тиках, должны идти котировки, естественно.
 
Угу, угу:)
Можно ещё выставить какой-нибудь значок и анализировать его положение относительно линии и текущ. цены: выше-ниже. В зависимости от сочетания разрешать/запрещать звук. Так можно регулировать звук, не перемещая сам уровень.
 
Угу, угу:)
Можно ещё выставить какой-нибудь значок и анализировать его положение относительно линии и текущ. цены: выше-ниже. В зависимости от сочетания разрешать/запрещать звук. Так можно регулировать звук, не перемещая сам уровень.
Тоже вариант. Я не стал ничего делать, потому что способ должен быть либо интуитивно понятным, либо по вкусу пользователя. По первой категории всё казалось неподходящим, а по второй не очень надо было :)
 
P.S. Лучшим мне казалось вот что: Отдельная метка ON, под ней метка OFF, справа метка, допустим "х", если рядом с ON - включать, рядом с OFF - выключать. Но вдруг как-то другие дела появились :)
 
Подумал и сделал так: Справа от надписи "Level Alarm" добавляется изображение мышки. Если кликнуть по нему два раза, появится возможность хватать его и перетаскивать. Так вот, если надвинуть его на ON (OFF), на ближайшем тике произойдёт переключение на OFF(ON).

Код новой версии прилагается. Вот только в отсутствие тиков толком проверить не могу.
//+------------------------------------------------------------------+
//|                                              Level_Alarm_GUI.mq4 |
//|                                                           Candid |
//|                                                   likh@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Candid"
#property link      "likh@yandex.ru"

#property indicator_chart_window

#include <stdlib.mqh>

//---- input parameters
extern bool      Play=FALSE;
extern double    Level1=0;
//extern double    Level2=0;
extern int       Range=10;
extern string    Sound="alert.wav";

double dRange;
double predRange;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
  dRange = NormalizeDouble(Range*Point/2,Digits);
  predRange = dRange;

  if(!ObjectCreate("label_object", OBJ_LABEL, 0, 0, 0))
    {
     Print("error: can't create label_object! code #",GetLastError());
     return(0);
    }
  ObjectSet("label_object", OBJPROP_XDISTANCE, 5);
  ObjectSet("label_object", OBJPROP_YDISTANCE, 15);
  ObjectSetText("label_object", "Level Alarm OFF", 10, "Times New Roman", Red);

  if(!ObjectCreate("switch", OBJ_LABEL, 0, 0, 0))
    {
     Print("error: can't create label_object! code #",GetLastError());
     return(0);
    }
  ObjectSet("switch", OBJPROP_XDISTANCE, 100);
  ObjectSet("switch", OBJPROP_YDISTANCE, 15);
  ObjectSetText("switch", "8", 16, "Wingdings", Red);

   ObjectCreate( "Alarm_Level", OBJ_HLINE, 0, 0, Level1);
   ObjectSet( "Alarm_Level", OBJPROP_COLOR, Red);
   ObjectSet( "Alarm_Level", OBJPROP_WIDTH, 5 );

   ObjectCreate( "Alarm_High", OBJ_HLINE, 0, 0, Level1+dRange);
   ObjectSet( "Alarm_High", OBJPROP_COLOR, Red );
   ObjectSet( "Alarm_High", OBJPROP_STYLE, STYLE_DOT);

   ObjectCreate( "Alarm_Low", OBJ_HLINE, 0, 0, Level1-dRange);
   ObjectSet( "Alarm_Low", OBJPROP_COLOR, Red );
   ObjectSet( "Alarm_Low", OBJPROP_STYLE, STYLE_DOT);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
    ObjectDelete("label_object");
    ObjectDelete("switch");
    ObjectDelete("Alarm_Level");
    ObjectDelete("Alarm_High");
    ObjectDelete("Alarm_Low");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//---- 
   dRange = MathAbs(NormalizeDouble(ObjectGet( "Alarm_High", OBJPROP_PRICE1),Digits) - Level1);
   if (dRange == predRange) dRange = MathAbs(Level1 - NormalizeDouble(ObjectGet( "Alarm_Low", OBJPROP_PRICE1),Digits));
   predRange = dRange;
   Level1 = NormalizeDouble(ObjectGet( "Alarm_Level", OBJPROP_PRICE1),Digits);
   ObjectSet( "Alarm_Level", OBJPROP_PRICE1, Level1);
   ObjectSet( "Alarm_High", OBJPROP_PRICE1, Level1+dRange);
   ObjectSet( "Alarm_Low", OBJPROP_PRICE1, Level1-dRange);
   
   if(ObjectGet("switch",OBJPROP_XDISTANCE) < 100 ) Play = !Play;
   ObjectSet("switch", OBJPROP_XDISTANCE, 100);
   ObjectSet("switch", OBJPROP_YDISTANCE, 15);

   if (Play) {
     ObjectSetText("label_object", "Level Alarm ON", 10, "Times New Roman", Red);
     if (Bid >= Level1 - dRange && Bid <= Level1 + dRange) {
       PlaySound(Sound);
     }
//     if (Bid >= Level2 - dRange && Bid <= Level2 + dRange) {
//       PlaySound(Sound);
//     }
   } else {
     ObjectSetText("label_object", "Level Alarm OFF", 10, "Times New Roman", Red);
   }

//----
   return(0);
  }
//+------------------------------------------------------------------+
 
просьба добавить или исправить в последующих версиях MT4
1)в вилах Эндрюса не ставятся дополнительные параллельные уровни (в настройках вил Эндрюса это попросту отсутствует)
2)дуги фибоначчи зачем там масштаб ? нельзя ли сделать как в tradedesk 3.31
3)добавить линии поддержки и сопротивления с надписями ну допустим линию RESISTANCE - сделать синей жирной с надписью RESISTANCE, а SUPPORT - красной жирной с надписью SUPPORT.
4)подправить временные циклы так, чтобы на линиях были видны числа, например 0,7,14,21,28 (0,4,8,12,16) (на самих линия-не внизу)
5)добавить ломаную линию (для построения схем)
6)добавить эллипс фибоначчи
7)добавить спираль фибоначчи
8)добавить квадрат ганна
9)добавить линии Квадрантов
10)добавить уровни Тироне
11)добавить канал стандартной ошибки
12)добавить регрессионный канал Раффа

добавить виды отображения цен
1) ступени
2) Point and Figure
3) Renko
4) Kagi
5) Three Line Break
6) Equivolume
7) Candle Volume
8) Market Profile

tradedesk 3.31 - там можно посмотреть реализацию
Причина обращения: