Простите, нет времени самому написать код и отладить его, но я думаю вы справитесь по моему ТЗ. Нужно сделать такой индикатор:
1) Объявляетм статичесткую переменную static double PrevPrice=0.0;
2) В start пишем конструкцию
if(PrevPrice!=Bid)
{
DeleteBox(...); /* удаляем прямоугольник (на случай если он все еще есть) */
DrawBox(...); /* рисуем прямоугольник */
Sleep(15000); /* ждем 15 секунд */
DeleteBox(...); /* удаляем прямоугольник */
PrevPrice=Bid; /* запоминаем новую цену для новой проверки */
}
DeleteBox(...);
DrawBox(...);
я в справке даже таких функций не нашёл, но за ответ спасибо.
Функция Sleep не работает в индикаторах.
Вам нужен эксперт или скрипт, работающий в бесконечном цикле.
Мне нужно это сделать в советнике, вторую функцию. Есть такой вот советник:
static double mSaveAsk; int init() { mSaveAsk = Ask; } int start() { if ( Ask != mSaveAsk ) { PlaySound("alert.wav"); } mSaveAsk = Ask; }
#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; }Это советник Вам для примера. Экспериментируйте.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как сделать, чтобы при изменении цены на валютной паре на графике рисовался квадрат или прямоугольник, держался секунд 15, удалялся и появлялся при следующем изменении цены?
Помогите, пожалуйста, мучался долго. Просто нарисовать - легко, но при изменении цены - никак =(.