Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поиск в документации доступен через MetaTrader 5. Ищи и изучай!
Alexey
161
Alexey 2008.06.25 09:11 

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

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

Sergey Kravchuk
3330
Sergey Kravchuk 2008.06.25 09:57  

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

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

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

if(PrevPrice!=Bid)

{

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

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

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

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

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

}

Alexey
161
Alexey 2008.06.25 10:23  

DeleteBox(...);

DrawBox(...);



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

Игорь Корепин
582
Игорь Корепин 2008.06.25 10:30  

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

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

Alexey
161
Alexey 2008.06.25 11:56  

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


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

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

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

Alexey
161
Alexey 2008.06.25 12:06  
Хорошо.
Denny
459
Denny 2008.06.25 12:19  
Chaos666 писал (а) >>

DeleteBox(...);

DrawBox(...);

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

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

Alexey
161
Alexey 2008.06.25 12:22  
Я так и понял. К сожалению я очень плохо с этим знаком, только учусь. Нужны примеры, вот я и попросил помощи....
Denny
459
Denny 2008.06.25 12:46  
#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 2008.06.25 12:49  
Спасибо большое.
12345678
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий