Группа "Стол заказов MQL"

Рейтинг 2088



РЕКОМЕНДУЮ



Индикатор приветствия

Добрый день, прошу вас сделать приветствие в виде индикатора
т.е чтобы после того как кинул индикатор на график прозвучала музыка 1 раз

пытаюсь сделать так:
#resource "hi_ex.wav"

static bool bPlayS=true;

в OnInit вставляю:
if(bPlaySound){
        PlaySound("hi_ex.wav");
        bPlayS=false;
}

И теперь при каждой смене ТФ проигрывается музыка
При чём в советнике всё прекрасно работает!
Создал пост на ФОРУМЕ
— 2) если же возможно в рамках заказа, то прошу вас добавить еще возможность проигрывание мелодии при кликанье на ТФ
т.е нажимаем на Н1 происходит клик(мелодия), нажали на Н4 — клик(мелодия)
  • 0
  • Просмотров: 3167
  • 23 июня 2019, 09:51
  • vebster
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Функция перебора ордеров
Следующая запись в группе  
Информационный индикатор MA Spread alert
22 июня 2019
26 июня 2019

Комментарии (37)

+
0
Привет все даже очень просто
перед выполнением тела индикатора вставь

if(Period()==240 ) {PlaySound(«5.wav»); bPlayS=false;}
и т.д.
и каждый раз когда меняешь тф муза.
и не надо никаких глобальных переменных *good* 
avatar

  9  Servir Сообщений: 84

  • 23 июня 2019, 11:24
+
+1
Спасибо, сделал, но теперь при обновлении индикатора, или же загрузки его по новой происходит кликанье, как сделать чтобы было только когда меняю ТФ
avatar

  6  vebster Автор Сообщений: 205

  • 24 июня 2019, 11:49
+
0
Только через глобальные переменные т.к. у них есть запись в файл
avatar

  9  Servir Сообщений: 84

  • 24 июня 2019, 13:19
+
0
на 28-е
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 23 июня 2019, 16:05
+
0
сделал пример с глобальными переменными терминала. не работает.


//+------------------------------------------------------------------+
//|                                                       Privet.mq4 |
//|                                              Copyright 2019, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input string mus="news.wav";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   if(GlobalVariablesTotal()<1) PlaySound(mus);
   GlobalVariableSet("val",1);   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   GlobalVariablesDeleteAll();
   Comment("\n Total: ",GlobalVariablesTotal());
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   Comment("\n Total: ",GlobalVariablesTotal());
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+



чуть позже попробую вариант с графическим объектом на графике
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 23 июня 2019, 16:39
+
0
прошу вас сделать приветствие в виде индикатора
т.е чтобы после того как кинул индикатор на график прозвучала музыка 1 раз


готово:


//+------------------------------------------------------------------+
//|                                                       Privet.mq4 |
//|                                              Copyright 2019, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input string mus="news.wav";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   if(GlobalVariablesTotal()<1) PlaySound(mus);
   GlobalVariableSet("val",1);   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(reason==1) GlobalVariablesDeleteAll();
   Comment("\n Total: ",GlobalVariablesTotal());
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   Comment("\n Total: ",GlobalVariablesTotal());
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 23 июня 2019, 21:18
+
0
Спасибо но не работает(((( в чем может быть проблема?
avatar

  6  vebster Автор Сообщений: 205

  • 24 июня 2019, 11:39
+
0
Спасибо но не работает(((( в чем может быть проблема?

опишите подробнее что не работает. когда делал второй вариант все проверял.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 24 июня 2019, 19:22
+
0
Слова автора «как сделать чтобы было только когда меняю ТФ», а в вашем варианте «пищит» на все
avatar

  9  Servir Сообщений: 84

  • 24 июня 2019, 21:07
+
0
чтобы после того как кинул индикатор на график прозвучала музыка 1 раз

это тоже слова автора я так и сделал :) 
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 24 июня 2019, 21:34
+
0
Я не спорю, но на этом он не успокоился захотел еще…
Вот я и переделал
Редактирован: 24 июня 2019, 21:37
avatar

  9  Servir Сообщений: 84

  • 24 июня 2019, 21:37
+
0
Вот это работает как надо только на переключение ТФ
//+------------------------------------------------------------------+
//|                                                          GDV.mq4 |
//|                                                  Copyright 2019, |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "GDV"
#property version   "1.00"
#property strict
#property indicator_chart_window

input string mus="alert.wav";
int OnInit()
  {
   GlobalVariableSet("val",1);
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
   if(reason==1) 
   GlobalVariablesDeleteAll(); else  PlaySound(mus);
   Comment("\n Total: ",GlobalVariablesTotal());
  }
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   Comment("\n Total: ",GlobalVariablesTotal());
   return(rates_total);
  }
avatar

  9  Servir Сообщений: 84

  • 24 июня 2019, 13:37
+
0
Если что удали Commet что бы не мешал выводить другую инфу
avatar

  9  Servir Сообщений: 84

  • 24 июня 2019, 13:39
+
0
Спасибо
avatar

  6  vebster Автор Сообщений: 205

  • 25 июня 2019, 16:58
+
0
Как в вашем варианте сделать так чтобы при обновлении индикатора не проигрывалась музыка? только исключительно когда идёт смена ТФ?
avatar

  6  vebster Автор Сообщений: 205

  • 25 июня 2019, 20:12
+
0
Андрей, кидаю индикатор ваш (тот что сделали вы вверху) на график и ничего,
а человек сделал по вашему примеру (тоже вверху) только музыку при смене ТФ там всё работает, почему ваш пример не работает? спасибо! В чем у меня может быть проблема? Кидаю на график и ничего
avatar

  6  vebster Автор Сообщений: 205

  • 25 июня 2019, 17:00
+
0
почему ваш пример не работает?

нужно больше конкретики а не просто работает не работает. вы дали 2 варианта тз, я скинул 2 наброска и т.д. что не работает, какой именно вариант, по какому тз и т.д.?
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 25 июня 2019, 17:29
+
0
Спасибо что ответили, такая проблема:
Кидаю на график индикатор(и первую версию и 2-ю) и ничего не происходит
ничего не прозвенело, ни пискнуло и тд

1 и 2-й вариант отличаются друг от друга:

в
void OnDeinit(const int reason)
{
....
}

1)
if(reason==1) GlobalVariablesDeleteAll();


2)
GlobalVariablesDeleteAll();


в остальном одинаковы, пожалуйста просмотрите еще вариант 2-й может вы по ошибке 1-й вариант скопировали или же пожалуйста ответьте, почему у меня вариант тот что с ТФ работает(по вашему примеру человек выше сделал) и музыка проигрывается(звучит) а ваш нет, помогите разобраться. Спасибо
avatar

  6  vebster Автор Сообщений: 205

  • 25 июня 2019, 17:39
+
0
только что проверил вариант, который залил в базу: www.opentraders.ru/downloads/2330/

сигналит при установке и молчит при смене тф. почему не работает у вас не могу знать. возможно при установке на график у вас в терминале есть какие то другие глобал вариэйбэлс.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 25 июня 2019, 21:18
+
0
Я так и не пойму что надо, вроде все сделали и в разных вариантах
ЧТО НЕ ТАК
Что конкретно то надо?

avatar

  9  Servir Сообщений: 84

  • 25 июня 2019, 18:48
+
0
ваш вариант с ТФ работает, а вот вариант с приветствием (когда кидаем на график индикатор и жмём ОК) ничего не работает
avatar

  6  vebster Автор Сообщений: 205

  • 25 июня 2019, 19:50
+
0
Ну все это окончательный вариант и поет только при установке и только по изменению ТФ
//+------------------------------------------------------------------+
//|                                                          GDV.mq4 |
//|                                                  Copyright 2019, |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "GDV"
#property version   "1.00"
#property strict
#property indicator_chart_window


input string mus="5.wav";
static bool bPlayS=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   if(GlobalVariablesTotal()<1) {PlaySound(mus);GlobalVariableSet("val",1);}  
   if(Period()==240 ) PlaySound("3175.wav");bPlayS=False;
   if(Period()==30 ) PlaySound("3232.wav");bPlayS=False;
   if(Period()==15 ) PlaySound("3252.wav");bPlayS=False; 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   if(reason==1) GlobalVariablesDeleteAll();
   Comment("\n Total: ",GlobalVariablesTotal());
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   Comment("\n Total: ",GlobalVariablesTotal());
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
avatar

  9  Servir Сообщений: 84

  • 25 июня 2019, 20:30
+
0
Спасибо что отписались, заменил то что вы ниже написали, но проблема осталась( (((

1) так же заметил что если кидаем на график на котором Н4(например) у нас происходит срабатывания мелодии потому что она занесена сюда:
if(Period()==240 ) PlaySound("3175.wav");bPlayS=False;
   if(Period()==30 ) PlaySound("3232.wav");bPlayS=False;
   if(Period()==15 ) PlaySound("3252.wav");bPlayS=False; 

Иными словами если же сделать для всех ТФ, и создать чистый график уже не важно будет на каком он ТФ, после того как кинем индикатор на этот график произойдёт мелодия! Можно ли как то избавиться чтобы мелодия была только когда меняем ТФ ??? (надеюсь я понятно объяснил, если нет постараюсь другому)
2) У меня всё ни как не может воспроизвестись мелодия при заливке на чистый график индикатора, ничего!!! В чем может быть проблема??? я так понимаю проблема именно у меня, т.к Андрей и вы утверждаете что всё прекрасно работает!? Почему у меня не работает, что не так?? я пытался уже поменять:
input string mus=«news.wav»; на любой другой не помогает, как проверить? блин, даже не знаю как спросить, что сделать можно чтобы проверить что оно не работает??? как заставить проигрываться когда кидаем на график индюк?

Спасибо
avatar

  6  vebster Автор Сообщений: 205

  • 26 июня 2019, 07:44
+
0
Переделай немного
int OnInit()
{
if(GlobalVariableCheck(«val»)==True){
if(Period()==240 ) PlaySound(«3175.wav»);bPlayS=False;
if(Period()==30 ) PlaySound(«3232.wav»);bPlayS=False;
if(Period()==15 ) PlaySound(«3252.wav»);bPlayS=False;}
if(GlobalVariableCheck(«val»)==False) {PlaySound(mus);GlobalVariableSet(«val»,1);}

НО пока при первом запуске все равно надо проверять и удалять глобальную переменную «val» вручную, иначе теряется вся логика инд.
P.S.
Либо, как вариант, прописать в советнике проверку инд. на графике и если его нет то удаляем нашу глобал.
avatar

  9  Servir Сообщений: 84

  • 26 июня 2019, 08:08
+
0
ничего не изменилось(((
по быстрому можно как то сделать в индикаторе проверку на то есть ли он на графике или нет, как вы написали выше

2))) САМОЕ ВАЖНОЕ!!! ответьте пожалуйста почему не проигрывается музыка когда кидаю индикатор на график, что не так?? ответьте пожалуйста на это. Что можно сделать? Уже перепробовал менять название звуков — ничего…
avatar

  6  vebster Автор Сообщений: 205

  • 26 июня 2019, 08:49
+
0
И все таки этот вариант работает как надо, даже без ручного удаления глобал.
<code>//+------------------------------------------------------------------+
//|                                                          GDV.mq4 |
//|                                                  Copyright 2019, |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "GDV"
#property version   "1.00"
#property strict
#property indicator_chart_window


input string mus="alert.wav";
static bool bPlayS=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(GlobalVariableCheck("val")==True){  
   if(Period()==1440 ) PlaySound("alert.wav");bPlayS=False;
   if(Period()==240 ) PlaySound("alert.wav");bPlayS=False;
   if(Period()==60 ) PlaySound("alert.wav");bPlayS=False;
   if(Period()==30 ) PlaySound("alert.wav");bPlayS=False;
   if(Period()==15 ) PlaySound("alert.wav");bPlayS=False;
   if(Period()==5 ) PlaySound("alert.wav");bPlayS=False;
   if(Period()==1 ) PlaySound("alert.wav");bPlayS=False;
   } 
   if(GlobalVariableCheck("val")==False) {PlaySound(mus);GlobalVariableSet("val",1);}
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   
   if(reason==1) GlobalVariableDel("val");
   Comment("\n Total: ",GlobalVariablesTotal());
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   Comment("\n Total: ",GlobalVariablesTotal());
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+</code>


C:\Program Files\… MT4\Sounds — или там где установлен терминал — проверь в этой папке какие названия файлов есть и соответственно только сними и работай, если надо что то другое скачай… .wav или перемести в эту папку.
Редактирован: 26 июня 2019, 09:54
avatar

  9  Servir Сообщений: 84

  • 26 июня 2019, 09:52
+
0
аааа((((( что за *фигня*, первый раз скачал новый терминал и запустил на нём этот индикатор(предварительно поставил ТФ на MN)[дабы мелодия смены ТФ не сработала] ииии оо чудо, мелодия приветствия заиграло, но только один раз(да так и нужно но!!!)

закрыл я все графики, открыл новый пытаюсь повторить эффект иии… ничего!!!

далее я еще пару десятков раз попробывал получить первый результат но всё ни как, далее я решаю заного установить терминал и попробывать еще раз, в итоге!!! опять первая попытка удачная, а все остальне нет!!! что я только не пытался сделать, закрывал терминал со всеми вкладками, просто на чистую вкладку графика пытался кинуть, всё ни как… ЧТо за такое… Как это объяснить?? <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/017.gif' alt=' ;) '>&nbsp; )) у меня слов нету)))

P.S решил скачать новый терминал т.к подумал вдруг в моём что-то не то))) т.к не проигрывалось в моём, в итоге проблема не в терминале, а в чём)???
Редактирован: 26 июня 2019, 12:50
avatar

  6  vebster Автор Сообщений: 205

  • 26 июня 2019, 12:48
+
0
У вас получается 2 раза получить приветствие, путём загрузки 2-х раз индикатора?
avatar

  6  vebster Автор Сообщений: 205

  • 26 июня 2019, 12:53
+
0
Два одинаковых индикатора на один график — нет.
нажми F3 и посмотри переменную val если есть то удали (она отвечает за приветствие).
при ее отсутствии в этом списке работает
Хотя в коде прописано чтоб удалял при закрытии.
avatar

  9  Servir Сообщений: 84

  • 26 июня 2019, 13:56
+
0
ууу)) точно)))) дело в нём, он не удаляется, я в ручную удаляю его и все нормально, но как сделать чтобы удалялся он сам при удалении индикатора с графика?
avatar

  6  vebster Автор Сообщений: 205

  • 26 июня 2019, 14:04
+
0
Понял в чем дело, я с графика индикатор не удалял, а просто закрывал вкладку терминала, вкладку инструмента(фунт доллар) и val не удаляется так

а если же удалить индикатор с графика тогда всё ок

Собственно вопрос, как можно сделать так чтобы индикатор удалялся при удалении индикатора с графика + при закрытии вкладки фунт доллар(например)
avatar

  6  vebster Автор Сообщений: 205

  • 26 июня 2019, 14:12
+
0
Да это не индикатор не удаляется а переменная из списка
avatar

  9  Servir Сообщений: 84

  • 26 июня 2019, 14:32
+
0
т.е эту переменнтую ни как нельзя удалить, кроме как в ручную?
я имею ввиду если же я закинул индикатор на график и закрыл этот график то эта переменная останется, и я спрашиваю возможно ли как то её убрать так же как и если бы я убрал индикатор с графика
avatar

  6  vebster Автор Сообщений: 205

  • 26 июня 2019, 14:37
+
0
Надо подумать.
А пока можешь использовать скрипт.
Перед тем как загружать новый график индикаторами запусти
//+------------------------------------------------------------------+
//| Del-Gobal.mq4 |
//| GurenevDV |
//| 2019.01 |
//+------------------------------------------------------------------+
#property copyright «GurenevDV»
#property link «2019.01»
#property version «1.00»
#property strict
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
GlobalVariablesDeleteAll();
}
//+------------------------------------------------------------------+
avatar

  9  Servir Сообщений: 84

  • 26 июня 2019, 15:39
+
0
Пожалуйста подумайте, как можно заставить удаляться эту переменную
avatar

  6  vebster Автор Сообщений: 205

  • 26 июня 2019, 17:48
+
0
Привет всем Я бы предложил заменить строчку
int OnInit()
{
if(GlobalVariablesTotal()<1)
на

int OnInit()
{
if(GlobalVariableCheck(«val»)==False)
так как первая ищет все переменные и сравнивает их, но это не удобно а если в работе «других» тоже есть глобал
вторая же просто ищет среди всех нашу — это удобнее
и еще под замену, что бы не удалять все переменные
void OnDeinit(const int reason)
{
if(reason==1) GlobalVariableDel(«val»);
Редактирован: 26 июня 2019, 06:03
avatar

  9  Servir Сообщений: 84

  • 26 июня 2019, 06:00
+
0
Сравни с последним кодом и поменяй и будет тебе счастье
avatar

  9  Servir Сообщений: 84

  • 26 июня 2019, 06:05

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари