Индикатор отсчёта оставшегося времени до закрытия свечи.
1. Таки не поёт, хотя вроде должен это делать.
2. Не понимает установки 0 в параметре My_Period(что по-моему разумению должно соответствовать текущему таймфрейму).
3. Исключить отображение часового нуля с двоеточием, когда до истечения остаётся менее одного часа, либо индикатор находится на таймфрейме 1 час и ниже.
4. Добавить параметр отправки пуш-сообщения.
#property indicator_chart_window
extern int My_Period = 15; //Выбор тайм-фрейма
extern int Seconds_Sound = 20 ; //Сигнал до закрытия бара в секундах
extern bool Sound_ON = true ; //вкл.true / выкл.false сигнал
extern string Sounds_Name = "alert.wav"; //Мелодия сигнала
extern int Ug_HMS = 1; //положение Timer_Sound в окне графика (0,1,2,3)
extern int X_HMS = 10; //координата Timer_Sound по оси X
extern int Y_HMS = 400; //координата Timer_Sound по оси Y
extern color Col_HMS = Khaki; //Цвет текста Timer_Sound
extern string Font_HMS = "Lucida Console"; //Шрифт для Timer_Sound
extern double FontSize_HMS = 15; //Размер шрифта для Timer_Sound
//----
bool Sound = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
string vName;
vName="Timer_Sound";
ObjectDelete(vName);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
//----
//вывести колличество секунд до окончания бара
//Cколько секунд вообще длится бар?
int KolSec;
if ( My_Period == PERIOD_M1){ KolSec=1*60;}
if ( My_Period == PERIOD_M5){ KolSec=5*60;}
if ( My_Period == 10){ KolSec=10*60;}
if ( My_Period == PERIOD_M15){ KolSec=15*60;}
if ( My_Period == PERIOD_M30){ KolSec=30*60;}
if ( My_Period == PERIOD_H1){ KolSec=60*60;}
if ( My_Period == PERIOD_H4){ KolSec=4*60*60;}
if ( My_Period == PERIOD_D1){ KolSec=24*60*60;}
if ( My_Period == PERIOD_W1){ KolSec=5*24*60*60;}
//cколько секунд прошло с начала бара
int PrevSec;
// TimeCurrent( ) время прихода последней котировки в виде количества секунд, прошедших после 00:00 1 января 1970 года
PrevSec=MathMod( TimeCurrent( ), KolSec);
// сколько секунд осталось в формате 00:00:00 и 000000
string Last;
int Lasts;
int LastHour;
int LastMinute;
int LastSec;
LastSec=MathMod( KolSec-PrevSec, 60); //осталось полных секунд
LastMinute=MathMod(((KolSec-PrevSec )-MathMod( KolSec-PrevSec, 60))/60,60); //кол. полных минут в оставшееся время
LastHour=((KolSec-PrevSec )-MathMod( KolSec-PrevSec, 3600))/3600; //кол. полных часов в оставшееся время.
Lasts = LastHour*60*60+LastMinute*60+LastSec;
Last = LastHour+":"+LastMinute+":"+LastSec;
if (Lasts < Seconds_Sound+1 && Sound)
{
Sound = False;
//if (Sounds_ON) PlaySound (Sounds_Name);
}
if (!Sound && Lasts > Seconds_Sound+1) Sound = True;
string vName;
vName="Timer_Sound";
if (ObjectFind(vName)!=-1) ObjectDelete(vName);
ObjectCreate (vName,OBJ_LABEL,0,0,0,0,0);
ObjectSet(vName,OBJPROP_CORNER,Ug_HMS);
ObjectSet(vName,OBJPROP_XDISTANCE,X_HMS);
ObjectSet(vName,OBJPROP_YDISTANCE,Y_HMS);
ObjectSetText(vName,Last,FontSize_HMS,Font_HMS,Col_HMS);
//-----
return(0);
}
Заранее благодарен.
Комментарии (11)
35 AM2 Сообщений: 16399 - Андрей
35 AM2 Сообщений: 16399 - Андрей
20 Anatoly74 Автор Сообщений: 3710 - Анатолий
35 AM2 Сообщений: 16399 - Андрей
Ничего себе конструкция получилась с периодами
Редактирован: 30 мая 2016, 18:06
35 AM2 Сообщений: 16399 - Андрей
Да уж… Доберусь до банки, спробую сам удалить излишества в виде текста… Чем лаконичнее — тем лучшЕе… Если с пиликанием и пушем вышло — уже благодарствую.
20 Anatoly74 Автор Сообщений: 3710 - Анатолий
Редактирован: 30 мая 2016, 19:03
35 AM2 Сообщений: 16399 - Андрей
Но на 4х-часовиках и выше убегает с окна правее. Нельзя ли как-то поправить?
И чёт он все 20 сек при текущем параметре input int SecondsSound=20 пиликает. Если также и пуши отправляет, то как-то не айс. Я до них ещё не добрался, если пуш отправляет одноразово, то это будет замечательно.
P. S. Время закрытия свечи — тут секунды не нужны вообще. Пытался удалить сам — мозгов не хватает. Редактирован: 30 мая 2016, 20:14
20 Anatoly74 Автор Сообщений: 3710 - Анатолий
Отображение переделал таки под себя.
Как-то хотелось бы решить, чтобы пушами не закидывал, а одноразово только.
Звуковой пусть наверное так и остаётся на весь период.
Выдернуть во внешние выключалки алертов.
20 Anatoly74 Автор Сообщений: 3710 - Анатолий
www.opentraders.ru/downloads/1191/
Редактирован: 1 июня 2016, 08:42
35 AM2 Сообщений: 16399 - Андрей
20 Anatoly74 Автор Сообщений: 3710 - Анатолий
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий