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

 
Актуально

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

Ошибки, баги, вопросы

fxsaber, 2018.02.07 15:48

Обобщу вопрос. Какой смысл в CAccountInfo, COrderInfo, CSymbolInfo, CPositionInfo и CTerminalInfo?

Посмотрел их исходники. В чем удобство их использования?


CDealInfo и CHistoryOrderInfo - эти написаны еще и с логическими ошибками. В чем суть их использования?


Вот есть CTrade. С ним все понято, где может быть удобен и т.д. А с Info-классами что?

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

Ошибки, баги, вопросы

fxsaber, 2018.02.07 15:53

Почти все методы в Info-классах должны быть static. По какой причине это не так?
 
Классная фишка!
2018.02.08 10:59:53.209 Network '8491779': no connection to MetaQuotes-Demo
2018.02.08 10:59:53.329 Network '8491779': authorization on MetaQuotes-Demo failed (Invalid account)
2018.02.08 10:59:53.904 Network current demo account '8491779' was deleted on trade server, new demo will be allocated
2018.02.08 10:59:53.904 Network demo account '8782677' was allocated on MetaQuotes-Demo


Только у меня был Netting-счет, а создали Hedge. Могли бы пересоздавать счет с прежними настройками?

 
Комментарии, не относящиеся к этой теме, были перенесены в "Отклонение от темы".
 
fxsaber:
Классная фишка!


Только у меня был Netting-счет, а создали Hedge. Могли бы пересоздавать счет с прежними настройками?

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

 
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"              
Причина обращения: