Ошибки, баги, вопросы - страница 2958

 
Mikhail Mishanin:

https://www.mql5.com/ru/search#!author=Vladimir%20Karputov&module=mql5_module_codebase


По вашему запросу ничего не найдено

Это Вы о чем?
 
Vladimir Karputov:
Это Вы о чем?

Поиск работает кривовато, хотел отфильтровать Ваши индикаторы в CodeBase по дате публикации

https://www.mql5.com/ru/search#!keyword=Vladimir%20Karputov&module=mql5_module_codebase&method=2

https://www.mql5.com/ru/search#!keyword=%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80&module=mql5_module_codebase&method=2&author=Vladimir%20Karputov

крайний ближе всего к желаемому. 

 
Mikhail Mishanin:

Поиск работает кривовато, хотел отфильтровать Ваши индикаторы в CodeBase по дате публикации

https://www.mql5.com/ru/search#!keyword=Vladimir%20Karputov&module=mql5_module_codebase&method=2

https://www.mql5.com/ru/search#!keyword=%D0%B8%D0%BD%D0%B4%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80&module=mql5_module_codebase&method=2&author=Vladimir%20Karputov

крайний ближе всего к желаемому. 

Вот эти две ссылки работают. Возможно старый формат ссылки был или было обновление баз сайта.

 
Vladimir Karputov:

Вот эти две ссылки работают. Возможно старый формат ссылки был или было обновление баз сайта.

Конечно работают, только выдают, по моему мнению, совсем не то что ожидаю.

в первой думал увижу первым по дате  https://www.mql5.com/ru/code/33553

во второй затесались другие авторы.

Мелочи это конечно.

 

 Хочется простого. Нужно при набрасывании на чарт нового символа из "Обзора рынка" (то есть при смене символа) распознать это и произвести действие.

#property indicator_chart_window

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

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[])
  {
   return(rates_total);
  }

void OnDeinit(const int reason)
  {
   string old_symbol=_Symbol;
   string new_symbol;

   Print("The current symbol is ",old_symbol,".");

   if(_UninitReason==REASON_CHARTCHANGE)
   {
      new_symbol=_Symbol;
      Print("Was: ",old_symbol,", now: ",new_symbol,".");
   }

   return;
  }

 Набрасываю на USDCHF пару EURUSD, пишет:

2021.02.14 17:56:26.700 test (USDCHF,M20)       The current symbol is USDCHF.
2021.02.14 17:56:26.700 test (USDCHF,M20)       Was: USDCHF, now: USDCHF.

при этом на чарте пара, разумеется, сменяется на EURUSD.  При снятии индикатора с чарта пишет (что уже слишком поздно):

2021.02.14 18:02:54.006 test (EURUSD,M20)       The current symbol is EURUSD.

А ожидается сразу:

2021.02.14 18:00:44.660 test (USDCHF,M20)       The current symbol is USDCHF.
2021.02.14 18:00:44.660 test (USDCHF,M20)       Was: USDCHF, now: EURUSD.

 Что я делаю не так?

EURUSD - Euro vs US Dollar - Курс валют сегодня — Форекс курсы валют
EURUSD - Euro vs US Dollar - Курс валют сегодня — Форекс курсы валют
  • www.mql5.com
EURUSD - Euro vs US Dollar - Графики с курсом по самым популярным валютным парам. Используйте фильтр снизу, чтобы отбирать нужные вам курсы валют. Внутри каждого графика показываются цены спроса и предложения, а также прирост за день.
 
x572intraday:

 Хочется простого. Нужно при набрасывании на чарт нового символа из "Обзора рынка" (то есть при смене символа) распознать это и произвести действие.

 Набрасываю на USDCHF пару EURUSD, пишет:

при этом на чарте пара, разумеется, сменяется на EURUSD.  При снятии индикатора с чарта пишет (что уже слишком поздно):

А ожидается:

 Что я делаю не так?

То что в 

OnDeinit(

поставьте ещё в OnInit и всё станет ясно.

 
x572intraday:

Хочется простого. Нужно при набрасывании на чарт нового символа из "Обзора рынка" (то есть при смене символа) распознать это и произвести действие.

В индикаторе нужно в OnDeinit сохранить символ (например, в глобальных). В OnInit ДОЖДАТЬСЯ выполнения OnDeinit предыдущего индикатора и считать сохраненный символ.
#property indicator_chart_window
#property indicator_plots   0

#include <Init_Sync.mqh> // https://www.mql5.com/ru/code/18138

int OnInit()
{  
  // https://www.mql5.com/ru/forum/189649#comment_4854618
  if (GlobalVariableCheck((string)ChartID()))
  {
    const string PrevSymb = _GlobalVariableGet<string>((string)ChartID());
    
    if (PrevSymb != _Symbol)
      Alert(PrevSymb + " -> " + _Symbol);
    
    _GlobalVariableDel((string)ChartID());  
  }
    
  return(INIT_SUCCEEDED);
}

void OnDeinit( const int Reason )
{
  if (Reason == REASON_CHARTCHANGE)
    _GlobalVariableSet((string)ChartID(), _Symbol + "");
}

void OnChartEvent( const int id,
                   const long& lparam,
                   const double& dparam,
                   const string& sparam )
{
}

void OnTimer()
{
}

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[] )
{
  return(rates_total);
}
В этом примере создается глобальная со (string)ChartID()-именем. Если на чарте несколько индикаторов, то логика должны быть несколько сложнее.
 
fxsaber:
В индикаторе нужно в OnDeinit сохранить символ (например, в глобальных). В OnInit ДОЖДАТЬСЯ выполнения OnDeinit предыдущего индикатора и считать сохраненный символ. В этом примере создается глобальная со (string)ChartID()-именем. Если на чарте несколько индикаторов, то логика должны быть несколько сложнее.

 TypeToBytes.mqh и crc64.mqh скомпилировались удачно, однако при компиляции Init_Sync.mqh выдало гору ошибок. То есть до компиляции примера дело даже не дошло. Да и с ужасом подумываю о том, что такая пустяковая задачка требует нескольких пухленьких библиотек, некоторые из которых ещё и компилироваться не хотят. Просто никогда раньше ничего не подключал стороннее, кроме собственного кастомного индикатора.

 
x572intraday:

 TypeToBytes.mqh и crc64.mqh скомпилировались удачно, однако при компиляции Init_Sync.mqh выдало гору ошибок.

У меня компилируется.

Файлы:
 
fxsaber:

У меня компилируется.

 Угу, так сработало.

Причина обращения: