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

 
Evgeny Chernyshev:
Добрый день!

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

Ошибка при выполнении в результате компиляции

#define MACRO( x )      #x
void OnStart()
{
        Print( MACRO( "1\0" )); //равносильно Print( "\"1\\0\"" );
}

Результат  : 1

Ожидалось: "1\0"

т.е. 2-ве ошибки: пропущены кавычки " и неправильно интерпретирован символ \

и далее 

void OnStart()
{
        Print( MACRO( 1\0 )); //Error: '\' - illegal escape sequence
}
ошибка при компиляции в то время как ожидался результат: 1\0
 
Vladislav Andruschenko:

 

да , но клиентам то это не обьяснишь?

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

Помогает повторный запуск с небольшой задержкой, что-то вроде:

int err=-1;
      int count=5;
      {while((err!=0)&&(count>0))
      {
         ResetLastError();
         EventSetMillisecondTimer(MSTimerSet);                    //Установка таймера XXX миллисекунд
         err=GetLastError();
         Print("EventSetMillisecondTimer n=",count," err >>",err);
         {if(err!=0){Sleep(50);}}
      }}//while((err!=0)&&(count>0))
 
Yury Kirillov:

Помогает повторный запуск с небольшой задержкой, что-то вроде:

int err=-1;
      int count=5;
      {while((err!=0)&&(count>0))
      {
         ResetLastError();
         EventSetMillisecondTimer(MSTimerSet);                    //Установка таймера XXX миллисекунд
         err=GetLastError();
         Print("EventSetMillisecondTimer n=",count," err >>",err);
         {if(err!=0){Sleep(50);}}
      }}//while((err!=0)&&(count>0))
Опытным путем удалось выяснить, что таймер вешается когда глючит инета. Терминал замирает и таймер слетает.  Т.е. Он может слетать просто так. Когда инета тормозит.

Поэтому я сделал по другому, а именно. Запуск таймера в тике. 
 

Ошибка при выполнении

typedef void (*fn)();
class A { public:
        fn a;
};
class B : public A { public:
        void a() { Print( __FUNCSIG__ ); }
};
void OnStart()
{
        B b;
        b.a();
}

Результат: invalid function pointer call; ожидалось выполнение B::a()

и здесь же -> ошибка при компиляции

typedef void (*fn)( int );
class A { public:
        fn a;
};
class B : public A { public:
        void a() { Print( __FUNCSIG__ );  }
};
void OnStart()
{
        B b;
        b.a(); //Error: 'a' - wrong parameters count
}
 
МТ4 пропускает пользовательские события пачками. Это фича или баг?
 
Andrey Dik:
МТ4 пропускает пользовательские события пачками. Это фича или баг?

 


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

 
Vladislav Andruschenko:

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

Я запустил шпионов на несколько символов, а советник получает события от этих шпионов когда приходят тики. На МТ5 все события успевают приходить, а на МТ4 видны замирания иногда на секунду и больше.
Ничего тяжёлого не выполняется, открыт один график.
 
Не могу получить адекватное значение требуемой маржи на открытие позиции. По всем инструментам получаю одинаковое значение, на разных брокеров по разному, у одного показывает по всем символам 0.0, у другого 100000.0.

Что такое творится с МТ4? Win 10 64, МТ4 build 1031

делаю так:

void OnStart()
{
  Print(MarketInfo (Symbol (), MODE_MARGININIT));
  Print(MarketInfo (Symbol (), MODE_MARGINMAINTENANCE));
  Print(MarketInfo (Symbol (), MODE_MARGINHEDGED));
  Print(MarketInfo (Symbol (), MODE_MARGINREQUIRED));
  Print(SymbolInfoDouble (Symbol (),SYMBOL_MARGIN_INITIAL));
}
Или МТ4 совсем поламался, или я вообще разучился и перестал понимать МТ4.

Вот значения полученные у 2-х брокеров:


2017.01.31 22:15:59.312    Script MarginReq AUDCHF,M15: removed
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: uninit reason 0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.309    MarginReq AUDCHF,M15: initialized
2017.01.31 22:15:59.300    MarginReq AUDCHF,M15 inputs: Input1=0;
2017.01.31 22:15:57.899    Script MarginReq AUDCHF,M15: loaded successfully
2017.01.31 22:13:38.077    Script MarginReq AUDCHF,M15: removed
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: uninit reason 0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 0.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: initialized
2017.01.31 22:13:38.066    MarginReq AUDCHF,M15 inputs: Input1=0;
2017.01.31 22:13:36.806    Script MarginReq AUDCHF,M15: loaded successfully
Фигня какая то.
 
Andrey Dik:
Не могу получить адекватное значение требуемой маржи на открытие позиции. По всем инструментам получаю одинаковое значение, на разных брокеров по разному, у одного показывает по всем символам 0.0, у другого 100000.0.

Что такое творится с МТ4? Win 10 64, МТ4 build 1031

делаю так:

void OnStart()
{
  Print(MarketInfo (Symbol (), MODE_MARGININIT));
  Print(MarketInfo (Symbol (), MODE_MARGINMAINTENANCE));
  Print(MarketInfo (Symbol (), MODE_MARGINHEDGED));
  Print(MarketInfo (Symbol (), MODE_MARGINREQUIRED));
  Print(SymbolInfoDouble (Symbol (),SYMBOL_MARGIN_INITIAL));
}
Или МТ4 совсем поламался, или я вообще разучился и перестал понимать МТ4.

Вот значения полученные у 2-х брокеров:


2017.01.31 22:15:59.312    Script MarginReq AUDCHF,M15: removed
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: uninit reason 0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.310    MarginReq AUDCHF,M15: 0.0
2017.01.31 22:15:59.309    MarginReq AUDCHF,M15: initialized
2017.01.31 22:15:59.300    MarginReq AUDCHF,M15 inputs: Input1=0;
2017.01.31 22:15:57.899    Script MarginReq AUDCHF,M15: loaded successfully
2017.01.31 22:13:38.077    Script MarginReq AUDCHF,M15: removed
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: uninit reason 0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 1000.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 0.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: 100000.0
2017.01.31 22:13:38.075    MarginReq AUDCHF,M15: initialized
2017.01.31 22:13:38.066    MarginReq AUDCHF,M15 inputs: Input1=0;
2017.01.31 22:13:36.806    Script MarginReq AUDCHF,M15: loaded successfully
Фигня какая то.

 попроьбуйте

AccountFreeMarginCheck 

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