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

 
Rashid Umarov:

Здесь ваше сообщение не увидят - нужно писать в Сервисдеск. Не знаю - можно ли восстановить

Неприлично много заявок в СД у меня. Создал еще одну, но она не критичная все же.

 

Ошибка 4109 не исчезает со временем

Тестовый код эксперта

//Test1.mq5
void OnInit() { if ( f() != ERR_SUCCESS ) EventSetTimer( 10 ); }
void OnTimer()
{
        int   last_error = f();
        if (  last_error == ERR_SUCCESS ) EventKillTimer();
static int count = 1;
        Print( "Повтор (", count++, ")… результат: ", last_error );
}
int f( long value=-1 ) { return ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0,value) ? ERR_SUCCESS : GetLastError(); }

при запуске терминала в ряде случаев дает следующий результат (*): Ошибка 4109 не исчезает вовсе

2018.02.09 00:25:24.200 Test1 (ETHUSD,W1)  Повтор (1)… результат: 0
2018.02.09 00:25:24.204 Test1 (EURUSD,D1)   Повтор (1)… результат: 0
2018.02.09 00:25:24.204 Test1 (BTCUSD,M15) Повтор (1)… результат: 4109
2018.02.09 00:25:24.204 Test1 (BTCUSD,H1)   Повтор (1)… результат: 4109
2018.02.09 00:25:24.205 Test1 (ZECUSD,D1)   Повтор (1)… результат: 0
2018.02.09 00:25:24.205 Test1 (BTCUSD,M15) Повтор (1)… результат: 0
2018.02.09 00:25:24.343 Test1 (BTCUSD,D1)   Повтор (1)… результат: 4109
2018.02.09 00:25:24.439 Test1 (BTCUSD,W1)  Повтор (1)… результат: 4109
2018.02.09 00:25:34.195 Test1 (BTCUSD,H1)   Повтор (2)… результат: 4109
2018.02.09 00:25:34.195 Test1 (BTCUSD,M15) Повтор (2)… результат: 4109
2018.02.09 00:25:34.348 Test1 (BTCUSD,D1)   Повтор (2)… результат: 4109
2018.02.09 00:25:34.444 Test1 (BTCUSD,W1)  Повтор (2)… результат: 4109
2018.02.09 00:25:44.203 Test1 (BTCUSD,M15) Повтор (3)… результат: 4109
2018.02.09 00:25:44.204 Test1 (BTCUSD,H1)   Повтор (3)… результат: 4109
2018.02.09 00:25:44.367 Test1 (BTCUSD,D1)   Повтор (3)… результат: 4109
2018.02.09 00:25:44.452 Test1 (BTCUSD,W1)  Повтор (3)… результат: 4109
2018.02.09 00:25:54.214 Test1 (BTCUSD,M15) Повтор (4)… результат: 4109
2018.02.09 00:25:54.214 Test1 (BTCUSD,H1)   Повтор (4)… результат: 4109
2018.02.09 00:25:54.381 Test1 (BTCUSD,D1)   Повтор (4)… результат: 4109
2018.02.09 00:25:54.467 Test1 (BTCUSD,W1)  Повтор (4)… результат: 4109
2018.02.09 00:26:04.221 Test1 (BTCUSD,M15) Повтор (5)… результат: 4109
2018.02.09 00:26:04.221 Test1 (BTCUSD,H1)   Повтор (5)… результат: 4109
2018.02.09 00:26:04.395 Test1 (BTCUSD,D1)   Повтор (5)… результат: 4109
2018.02.09 00:26:04.459 Test1 (BTCUSD,W1)  Повтор (5)… результат: 4109
2018.02.09 00:26:14.247 Test1 (BTCUSD,M15) Повтор (6)… результат: 4109
2018.02.09 00:26:14.247 Test1 (BTCUSD,H1)   Повтор (6)… результат: 4109
2018.02.09 00:26:14.402 Test1 (BTCUSD,D1)   Повтор (6)… результат: 4109
2018.02.09 00:26:14.464 Test1 (BTCUSD,W1)  Повтор (6)… результат: 4109
2018.02.09 00:26:24.265 Test1 (BTCUSD,M15) Повтор (7)… результат: 4109
2018.02.09 00:26:24.267 Test1 (BTCUSD,H1)   Повтор (7)… результат: 4109
2018.02.09 00:26:24.399 Test1 (BTCUSD,D1)   Повтор (7)… результат: 4109
2018.02.09 00:26:24.468 Test1 (BTCUSD,W1)  Повтор (7)… результат: 4109 и т.д. до бесконечности

При том что часто результат вполне себе нормальный (**): Ошибка исчезла уже на 2-ой итерации

2018.02.09 00:29:45.470 Test1 (BTCUSD,D1)   Повтор (1)… результат: 0
2018.02.09 00:30:14.215 Test1 (BTCUSD,M15) Повтор (1)… результат: 4109
2018.02.09 00:30:14.215 Test1 (BTCUSD,D1)   Повтор (1)… результат: 0
2018.02.09 00:30:24.209 Test1 (BTCUSD,M15) Повтор (2)… результат: 0

Но это только в простом тестовом примере она исчезла, в реальном эксперте даже если сделать задержку  EventSetTimer( 100 ) - то это ничего не изменит. Ошибка может исчезнуть если выбрать вкладку соответствующего проблемного графика и щелкнуть по нему мышью (а почему это влияет???), например выбор BTCUSD,W1 и щелчок на нем дал бы на следующей итерации успешный результат:

                                      Test1 (BTCUSD,W1)  Повтор (8)… результат: 0

Тестовый профиль выглядел так:


Макс. баров в окне 100000.

Для получения результата (*) достаточно бывает добавить в профиле пару новых графиков с присоединенным экспертом и перезапустить терминал

Запуск платформы - Для продвинутых пользователей - MetaTrader 5
Запуск платформы - Для продвинутых пользователей - MetaTrader 5
  • www.metatrader5.com
По завершении установки в меню "Пуск" создается группа программ торговой платформы, а на рабочем столе дополнительно помещается ярлык программы. Используйте их для запуска. Нельзя запускать одновременно две копии платформы из одной директории. Чтобы одновременно запустить несколько копий, установите соответствующее количество программ в разные...
 

Всем привет! 

кто-нибудь задавался вопросом : как получить список внешних переменных внутри эксперта? чтобы не перечислять их в массиве повторно? тоесть при установке на график эксперт читает сам себя и смотрит свои внешние настройки. 

только через шаблон? 

 

Билд 1755 МТ5

при использовании шрифта ROBOTO и размер 9 - половина текста не прорисовывается.


при 8 размере вообще проблема


при Arial более менее, но совсем ужасный шрифт

 

Дублирование сделок при использовании стороннего ВПС 

Проблема сессий. Когда предыдущая не была закрыта и открывается новая. старые терминалы работают, и новые терминалы работают. получается дубликат. :-) 

@fxsaber  где то вы писали про то как отследить это. не могу найти 

 
Vladislav Andruschenko:

Всем привет! 

кто-нибудь задавался вопросом : как получить список внешних переменных внутри эксперта? чтобы не перечислять их в массиве повторно? тоесть при установке на график эксперт читает сам себя и смотрит свои внешние настройки. 

только через шаблон? 

Да, через шаблон.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

input string Input1 = "Hello World!";
input int Input2 = 123;

string GetExpertData( const ulong Chart = 0 ) 
{ 
  string Str = NULL; 

  MqlParam Parameters[]; 
  string Names[]; 

  if (EXPERT::Parameters(Chart, Parameters, Names)) 
  { 
    Str += "\n" + ChartSymbol(Chart) + " " + EnumToString(ChartPeriod(Chart)) + " " + Parameters[0].string_value + "\n"; 

    const int Amount = ArraySize(Names); 

    for (int i = 0; i < Amount; i++) 
      Str += (string)i + ": "+ Names[i] + " = " + Parameters[i + 1].string_value + "\n"; 
  } 

  return(Str); 
}

void OnInit()
{
  Print(GetExpertData());
}


Результат

0: Input1 = Hello World!
1: Input2 = 123


или так

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

input string Input1 = "Hello World!";
input int Input2 = 123;

void OnInit()
{
  MqlParam Parameters[];
  string Names[];   
  
  if (EXPERT::Parameters(0, Parameters, Names))
    ArrayPrint(Parameters);
}


Результат

    [type] [integer_value] [double_value]      [string_value]
[0]    ...               0        0.00000 "Experts\Test2.ex5"
[1]    ...               0        0.00000 "Hello World!"     
[2]    ...             123      123.00000 "123"              
 
Vladislav Andruschenko:

Дублирование сделок при использовании стороннего ВПС 

Проблема сессий. Когда предыдущая не была закрыта и открывается новая. старые терминалы работают, и новые терминалы работают. получается дубликат. :-) 

@fxsaber  где то вы писали про то как отследить это. не могу найти 

Это проблема юзера, за сессиями надо следить. Сделать тут ничего нельзя. Есть дубли надо закрывать сесию по другому никак.
 
Vladislav Andruschenko:

Дублирование сделок при использовании стороннего ВПС 

Проблема сессий. Когда предыдущая не была закрыта и открывается новая. старые терминалы работают, и новые терминалы работают. получается дубликат. :-) 

@fxsaber  где то вы писали про то как отследить это. не могу найти 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2018.02.06 07:41

OnTradeTransaction позволяет написать неторговый советник (Сервис), отслеживающий наличие запущенного на счете торгового "клона"-советника. Такие ситуации иногда случаются по невнимательности.

ЗЫ

 
fxsaber:

Да, через шаблон.


Результат


или так


Результат


огромнейшее спасибо. 

 

не возможно сохраниться в сторадже, мт 5