Скачать MetaTrader 5

Рисование квадрата или прямоугольника. Очень нужна помощь...

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

Как сделать, чтобы при изменении цены на валютной паре на графике рисовался квадрат или прямоугольник, держался секунд 15, удалялся и появлялся при следующем изменении цены?

Помогите, пожалуйста, мучался долго. Просто нарисовать - легко, но при изменении цены - никак =(.

Sergey Kravchuk
3330
Sergey Kravchuk  

Простите, нет времени самому написать код и отладить его, но я думаю вы справитесь по моему ТЗ. Нужно сделать такой индикатор:

1) Объявляетм статичесткую переменную static double PrevPrice=0.0;

2) В start пишем конструкцию

if(PrevPrice!=Bid)

{

DeleteBox(...); /* удаляем прямоугольник (на случай если он все еще есть) */

DrawBox(...); /* рисуем прямоугольник */

Sleep(15000); /* ждем 15 секунд */

DeleteBox(...); /* удаляем прямоугольник */

PrevPrice=Bid; /* запоминаем новую цену для новой проверки */

}

Alexey
161
Alexey  

DeleteBox(...);

DrawBox(...);



я в справке даже таких функций не нашёл, но за ответ спасибо.

Игорь Корепин
582
Игорь Корепин  

Функция Sleep не работает в индикаторах.

Вам нужен эксперт или скрипт, работающий в бесконечном цикле.

Alexey
161
Alexey  

Мне нужно это сделать в советнике, вторую функцию. Есть такой вот советник:


static double mSaveAsk;
 
int init()
{
   mSaveAsk = Ask;
}
 
int start()
{
   if ( Ask != mSaveAsk )
   {
      PlaySound("alert.wav");
   }
   mSaveAsk = Ask;
}
Alexey
127
Alexey  
Chaos666 писал (а) >>

Мне нужно это сделать в советнике, вторую функцию. Есть такой вот советник:

Для добавления MQL4 кода пользуйтесь, пожалуйста, командой добавления исходных кодов в редакторе:

Alexey
161
Alexey  
Хорошо.
Denny
459
Denny  
Chaos666 писал (а) >>

DeleteBox(...);

DrawBox(...);

я в справке даже таких функций не нашёл, но за ответ спасибо.

И не найдете. Эти функции Вам придется сделать самому.

Alexey
161
Alexey  
Я так и понял. К сожалению я очень плохо с этим знаком, только учусь. Нужны примеры, вот я и попросил помощи....
Denny
459
Denny  
#property copyright "Copyright © 2008, D500"
#property link      "http://www.metaquotes.net"
extern int Timer=15;
extern color Coler=OrangeRed;
 
double PrevPrice;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(PrevPrice!=Bid)
 
{
 
if (ObjectFind("QUADRO")==0)  DeleteBox(); /* удаляем прямоугольник (на случай если он все еще есть) */
 
DrawBox(); /* рисуем прямоугольник */
 
Sleep(Timer*1000); /* ждем 15 секунд */
 
PrevPrice=Bid; /* запоминаем новую цену для новой проверки */
 
}
//----
   return(0);
  }
//+------------------------------------------------------------------+
void DrawBox()
{
     ObjectCreate("QUADRO",OBJ_RECTANGLE,0,Time[5],Close[0]-10*Point,Time[0],Close[0]+10*Point);
     ObjectSet("QUADRO",6,Coler);
     return;
}
//-------------------------------------------------------------------+
void DeleteBox()
{
      ObjectDelete("QUADRO");
      return;
}
Это советник Вам для примера. Экспериментируйте.
Alexey
161
Alexey  
Спасибо большое.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий