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

 
rozline:



С сервера "MetaQuotes-Demo" сейчас раздаётся билд 1589. Подключитесь к серверу "MetaQuotes-Demo" и обновление начнёт скачиваться.

(Как открыть демо-счет на сервере MetaQuotes-Demo)

 
stringo:

Потому что нельзя приводить структуру одного типа к структуре совсем другого, неродственного, типа

С++?

Используйте простое копирование данных одной простой структутры в данные другой структуры. Эта возможность пока не отрезана

Что еще собираетесь отрезать? Вы же создали прецедент урезания возможностей языка (не API). Т.е. программист может столкнуться с ситуациями, когда его ранее полностью рабочий чистый код (написанный без использования API (который нежелательно, но может меняться)) может перестать работать.


Например, недавно была опубликована библиотека после жарких с Вами споров. Получила положительные отзывы и стала использоваться людьми. Однако, Вы своим решением сделали ее нерабочей! Причем сделали ее нерабочей не в части API, а чистого языка.

Init_Sync
Init_Sync
  • голосов: 13
  • 2017.04.17
  • fxsaber
  • www.mql5.com
Библиотека делает синхронизированными Init/Deinit индикаторов
 
stringo:

Используйте простое копирование данных одной простой структутры в данные другой структуры.

Такая возможность порождает кучу одинаковых Warnings
struct STRUCT1
{
  double d;
};

struct STRUCT2
{
  long l;
};

void OnStart()
{
  STRUCT1 Struct1 = {0};
  STRUCT2 Struct2 = Struct1; // Warning: implicit struct cast
  
  Struct2 = (STRUCT2)Struct1; // Error: cannot cast 'STRUCT1' to 'STRUCT2'
}
 

Что такое столбец Банк?

И где его можно увидеть заполненным?

 
fxsaber:

Что такое столбец Банк?

И где его можно увидеть заполненным?

только у тех брокеров, которые его заполняют

обычно это stp брокеры

 
Vladimir Karputov:


С сервера "MetaQuotes-Demo" сейчас раздаётся билд 1589. Подключитесь к серверу "MetaQuotes-Demo" и обновление начнёт скачиваться.

(Как открыть демо-счет на сервере MetaQuotes-Demo)


Спасибо. На этом бильде что-то кастомное задышало. Следую дальше....

Дышит, работает. Теперь надо брокера обновлять.... Сам не обновляется...

Заработало и у Брокера. Т.к. поначалу пробовал та отдельном MT5. Пойду обновлять агенты тестеров. - ни чёрта само не обновилось...

ОГРОМНОЕ СПАСИБО.

 

билд 1589

Как сделать,чтобы OnTimer в индикаторе переставал работать при смене счета/брокера при условии,что у того нет вообще такого тикера,или он не добавлен в обзор рынка, без использования IndicatorDelete ?

Ошибка в документации - функции IndicatorDelete нет, есть ChartIndicatorDelete!

https://www.mql5.com/ru/docs/standardlibrary/cchart/cchartindicatordelete

bool  IndicatorDelete(
   int            sub_win      // номер подокна
   const string   name         // короткое имя индикатора
   );

ситуация такая - запускаю на фьючерсе приложенный индикатор. переключаю на другого брокера, а таймер продолжает тикать,хотя чарт становится черным и не обновляется.

при этом он не пишет причину деинициализации 

REASON_ACCOUNT

6

Активирован другой счет либо произошло переподключение к торговому серверу вследствие изменения настроек счета


2017.04.21 12:10:31.810 TF through OnTimer (DDM7,M1)    Работаем
2017.04.21 12:10:31.810 TF through OnTimer (DDM7,M1)    Аккаунт = AMPGlobalClearing-Demo-CQG
тут сменили брокера,причины деинициализации нет
2017.04.21 12:10:36.809 TF through OnTimer (DDM7,M1)    Работаем
2017.04.21 12:10:36.809 TF through OnTimer (DDM7,M1)    Аккаунт = FXOpen-MT5
//+------------------------------------------------------------------+
//|                                           TF through OnTimer.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
string server;
//| 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[])
  {
//---
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   EventKillTimer();
   Print("Причина деинициализации = ",reason);
   
  }
//+------------------------------------------------------------------+
int OnInit()
  {
  server=AccountInfoString(ACCOUNT_SERVER);
   EventSetMillisecondTimer(5000);
   IndicatorSetString(INDICATOR_SHORTNAME,"name");
   
//--- indicator buffers mapping
//---
   return(INIT_SUCCEEDED);
  }  
  
  ////////////
  void OnTimer ()
  {
  Print("Работаем");
  Print("Аккаунт = ",AccountInfoString(ACCOUNT_SERVER));
//  if ( server!=AccountInfoString(ACCOUNT_SERVER) ) ChartIndicatorDelete(0,0,"name");
  }
Документация по MQL5: Стандартная библиотека / Ценовые графики / IndicatorDelete
Документация по MQL5: Стандартная библиотека / Ценовые графики / IndicatorDelete
  • www.mql5.com
Стандартная библиотека / Ценовые графики / IndicatorDelete - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
kaus_bonus:

билд 1589

OnDeinit не вызывается.
 
в смысле
fxsaber:
OnDeinit не вызывается.

в смысле? совсем не вызывается, или в данном коде?

 
kaus_bonus:

билд 1589

Как сделать,чтобы OnTimer в индикаторе переставал работать при смене счета/брокера при условии,что у того нет вообще такого тикера,или он не добавлен в обзор рынка, без использования IndicatorDelete ?

Ошибка в документации - функции IndicatorDelete нет, есть ChartIndicatorDelete!

https://www.mql5.com/ru/docs/standardlibrary/cchart/cchartindicatordelete

ситуация такая - запускаю на фьючерсе приложенный индикатор. переключаю на другого брокера, а таймер продолжает тикать,хотя чарт становится черным и не обновляется.

при этом он не пишет причину деинициализации 

REASON_ACCOUNT

6

Активирован другой счет либо произошло переподключение к торговому серверу вследствие изменения настроек счета



Загрузка и выгрузка индикаторов

Индикаторы загружаются в следующих случаях:

  • прикрепление индикатора к графику;
  • запуск терминала (если индикатор был прикреплен к графику перед предыдущим закрытием терминала);
  • загрузка шаблона (если в шаблоне указан прикрепленный к графику индикатор);
  • смена профиля (если индикатор прикреплен к одному из графиков профиля);
  • смена символа и/или периода графика, к которому прикреплен индикатор;
  • после удачной перекомпиляции индикатора, если данный индикатор был прикреплен к графику.
  • изменение входных параметров индикатора.

Индикаторы выгружаются в следующих случаях:

  • при откреплении индикатора от графика;
  • закрытие терминала (если индикатор был прикреплен к графику);
  • загрузка шаблона, если к графику прикреплен индикатор;
  • закрытие графика, к которому был прикреплен индикатор;
  • смена профиля, если индикатор прикреплен к одному из графиков сменяемого профиля;
  • смена символа и/или периода графика, к которому прикреплен индикатор;
  • изменение входных параметров индикатора.


Причины "смена счёта нет", значит индикатор при смене счёта не выгружается и следовательно OnDeinit() для индикатора при смене торгового счета тоже не будет.