помогите разобраться! Работает корректно только с исходником - страница 3

 
SanAlex:

это плеер он не удаляется

как мне сделать так чтобы при смене периода мелодия не проигрывалась по новой?

 
vebster005:

как мне сделать так чтобы при смене периода мелодия не проигрывалась по новой?

тут уже нужно смотреть - что у Вас за функция

-------------------

тут как я понимаю - это не вставляют 

int OnInit()
  {
   PlaySound(sound_Privet);
  }
потому-что всё время будет работать звук 
 
SanAlex:

тут уже нужно смотреть - что у Вас за функция

-------------------

тут как я понимаю - это не вставляют 

потому-что всё время будет работать звук 

простите, но я вас немного не понимаю, могли бы ответить что не так? 

 
vebster005:

простите, но я вас немного не понимаю, могли бы ответить что не так? 

например открылась позиция - сработал звук, или от рисовалась горизонтальная линия - сработал звук,

- а Вы что пытаетесь - от звука ?   

 
vebster005:

простите, но я вас немного не понимаю, могли бы ответить что не так? 

может что то так  в Индикаторе - это если Вы переключите период графика PERIOD_D1 сработает звук 

bool     glabal_error   = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
   if(Period()>=PERIOD_D1)
     {
      string err_text=(TerminalInfoString(TERMINAL_LANGUAGE)=="Russian")?
                      "Период графика не может быть равен или больше 'D1'!":
                      "The chart period cannot be equal to or greater than 'D1'!";
               PlaySound("expert.wav");
      glabal_error=true;
     }
  }
//---- 

---------------------------------------------

а ещё я попытался озвучить сигнал в Индикаторе - только пока добился что он квакает - пока не сойдёт с бара.

           {
            if(OldTrend>0)
               SellBuffer[bar]=high[bar]+ATR[bar]*3/8;
            if(bar!=0)
               OldTrend=-1;
            if(OldTrend>0 && SellBuffer[bar]!=0)
               PlaySound("expert.wav");
            if(bar!=0)
               OldTrend=-1;
           }
 
SanAlex:

может что то так  в Индикаторе - это если Вы переключите период графика PERIOD_D1 сработает звук 

---------------------------------------------

а ещё я попытался озвучить сигнал в Индикаторе - только пока добился что он квакает - пока не сойдёт с бара.

звук нужен только при запуске на график 1 раз

 
vebster005:

звук нужен только при запуске на график 1 раз

я так понимаю, Ваш эксперт в какое то время устанавливает Индикатор на график, если так? то Вам нужно, в эксперте в этой функции прописать звук

--------------------------------------

вот слепил пример - через минуту выставится ваш индикатор и создаст звук

//+------------------------------------------------------------------+
//|                                                      Minutes.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
input int      Minutes      = 1;                        // Minutes
input string   InpIndi_name = "Examples\\ZigzagColor";  // Installation Indicator Name
//---
datetime ExTime=0;
int      indicator_handle=INVALID_HANDLE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   datetime times=TimeLocal();
   if(ExTime==0 || times>ExTime+60)
     {
      ExTime=times+60*Minutes;
     }
   if(times>=ExTime && times<ExTime+60)
     {
      ExTime=times+60*Minutes;
      AddIndicator();
      PlaySound("ok.wav");
      ExpertRemove();
     }
  }
//+------------------------------------------------------------------+
//| Функция проверки и добавления индикатора на график               |
//+------------------------------------------------------------------+
bool AddIndicator(void)
  {
//--- выводимое сообщение
   string message;
//--- проверим на совпадение символ индикатора и символ графика
   if(Symbol()!=_Symbol)
     {
      message="Демонстрация использования функции Demo_ChartIndicatorAdd():";
      message=message+"\r\n";
      message=message+"Нельзя на график добавить индикатор, рассчитанный на другом символе.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта символ графика - "+_Symbol+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- проверим на совпадение таймфрейм индикатора и таймфрейм графика
   if(Period()!=_Period)
     {
      message="Нельзя на график добавить индикатор, рассчитанный на другом таймфрейме.";
      message=message+"\r\n";
      message=message+"Укажите в свойствах эксперта таймфрейм графика - "+EnumToString(_Period)+".";
      Alert(message);
      //--- досрочный выход, не будем добавлять индикатор на график
      return false;
     }
//--- все проверки прошли, символ и период индикатора соответствуют графику
   if(indicator_handle==INVALID_HANDLE)
     {
      Print(__FUNCTION__,"  Создаем индикатор");
      indicator_handle=iCustom(Symbol(),Period(),InpIndi_name);
      if(indicator_handle==INVALID_HANDLE)
        {
         Print("Не удалось создать индикатор. Код ошибки ",GetLastError());
        }
     }
//--- сбросим код ошибки
   ResetLastError();
//--- накладываем индикатор на график
   Print(__FUNCTION__,"  Добавляем индикатор на график");
   Print("Индикатор построен на ",Symbol(),"/",EnumToString(Period()));
//--- получим номер нового подокна, в которое добавим индикатор
   int subwindow=NULL;
   PrintFormat("Добавляем индикатор на окно %d графика",subwindow);
   if(!ChartIndicatorAdd(0,subwindow,indicator_handle))
     {
      PrintFormat("Не удалось добавить индикатор на окно %d графика. Код ошибки  %d",
                  subwindow,GetLastError());
     }
//--- добавление индикатора на график прошло успешно
   return(true);
  }
//+------------------------------------------------------------------+


 

 
SanAlex:

я так понимаю, Ваш эксперт в какое то время устанавливает Индикатор на график, если так? то Вам нужно, в эксперте в этой функции прописать звук 

у меня индикатор, нету эксперта

 
vebster005:

у меня индикатор, нету эксперта

нужно чтобы звук был когда мы кидаем индикатор на график и всё, он должен сработать 1 раз и всё

 
vebster005:

нужно чтобы звук был когда мы кидаем индикатор на график и всё, он должен сработать 1 раз и всё

Проанализируйте код последней деинициализации в OnInit():

int OnInit()
{
   if (UninitializeReason() != REASON_CHARTCHANGE)
      PlaySound("ok.wav");

   return INIT_SUCCEEDED;
}
Причина обращения: