IsConnected() или IsTradeAllowed() всегда false ! Глюк в системе ?.. или в моем уме ?.. - страница 3

 
Prival:
С time.windows.com не проходит синхронизация времени, (покрайней мере мне это не удалось зделать). Где то про это в хелпах винды написано.

А как это внешне проявляется?

У меня сейчас пишет "Время было успешно синхронизировано с time. windows.com на 02.01.2008 в 14:31. Следующее выполнение синхронизации: 09. 01.2008 в 14:31".

 
KimIV:
Prival:
С time.windows.com не проходит синхронизация времени, (покрайней мере мне это не удалось зделать). Где то про это в хелпах винды написано.

А как это внешне проявляется?

У меня сейчас пишет "Время было успешно синхронизировано с time. windows.com на 02.01.2008 в 14:31. Следующее выполнение синхронизации: 09. 01.2008 в 14:31".

А у меня такой фразы "Время было успешно синхронизировано ... никак не появлялось. Рылся по нэту гдето нашол, что надо поставить такую настройку, попробовал и все получилось, эта фраза появилась. И теперь появляется все время как только нажму синхронизировать. Щас ищу как зделать что бы принудительно хотябы 1 раз в сутки автоматом запускалась синхронизация
 
Prival писал (а):
Щас ищу как зделать что бы принудительно хотябы 1 раз в сутки автоматом запускалась синхронизации

Можно в шедулер закинуть команду:

w32tm /resync

NTP - атомные часы на каждом столе

 

KimIV

Спасибо, понял. Вроде да заработало как нужно. Я тут по нету порылся ищя ответ на этот вопрос. Понатыкался на разные проги синхронизации времени. Штук 5 перепробовал, одна очень понравилась, все в одном флаконе. синхронизация времени+русифицирована+календарь можно настроить новости на неделю (даже больше). Протестил вроде номрально все работает. 1st Clokc, файл прилагаю мне очень понравилась, ничего лишнего и удобная. Может кому и прогодиться.

Файлы:
1st.zip  1525 kb
 
MaxsiM:
komposter:
MaxsiM:

Странная ситуация какая-то...

Посмотрите похожую тему - Проверка состояния IsTradeAllowed()


komposter большое спасибо что откликнулись. Тему прочитал, но к сожалению, там совсем о другом пишется. В указанной Вами теме просто рассматривается для чего нужна функция IsTradeAllowed() и как она работает. Это я вроде объективно понимаю (по крайней мере я на это надеюсь))). Меня больше тревожит нетривиальность ошибки (более правильно будет написать её формальное отсутствие) в моём случае.

На другом форуме, по поисковому запросу IsTradeAllowed(), нашел следующее высказывание

"И ещё не забудьте учесть в Вашем алгоритме автоматическую перезагрузку терминала. А то когда ДЦ сервер перезагружает, у клиента терменал начинает "глючить" типа: при отправке ордера сообщение появляеться что, "нет связи" хотя видно что на графике цена меняеться, да и експерт вроде как прочитываеться, значит тики поступают. И это будет продолжаться пока не перезагрузишь терменал. Так что такая например ситуация, Вам не 70% просадки сделает а все 170%"...

Вот это, к моему превеликому сожалению, больше подходит под мой случай.

Я бы хотел верить, что написанное это не правда.

Потому как если автор данного абзаца действительно прав и я наблюдал у себя именно эти ситуации, то это похоже полный пипец для существования МТС как таковых. Так как в подобном случае не остается даже теоретической возможности для автоматического ведения торгов.

Какие есть соображения ?

С подобной ситуацией встречался. Причем иногда несколько дней проблем нет(и на демке и на реале).
Выделить, когда это происходит и по какой причине(но точно не по моей вине) не смог.
Отнес это к особенностям работы брокера. Неприятно. Но что делать?
Перезапускать терминал через какое-то время из внешнего приложения на всякий пожарный. Грубо, но помогает.
Лучше бы, конечно, этот момент(момент перезапуска брокера или еще что там у них со стороны сервера, неважно) как-то вовремя диагностировать.
По каким-то косвенным признакам? Может кто подскажет как лучше?
 

ну ситуация же описана:
- IsConnected возвращает false
- тики идут
вот так можно сделать рестарт приложения:

#import "shell32.dll"
int ShellExecuteA( int hwnd,    // handle to parent window
    string lpOperation,    // pointer to string that specifies operation to perform
    string lpFile,    // pointer to filename or folder name string
    string lpParameters,    // pointer to string that specifies executable-file parameters 
    string lpDirectory,    // pointer to string that specifies default directory
    int nShowCmd     // whether file is shown when opened
   ); 
#import "user32.dll"
   int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
   int GetParent( int hWnd);   
#define WM_CLOSE                       0x0010
 
#import
 
void RestartApp(){
   int hwnd=WindowHandle(Symbol(),Period());
   int hwnd_parent=0;
//----
   while(!IsStopped())
     {
      hwnd=GetParent(hwnd);
      if(hwnd==0) break;
      hwnd_parent=hwnd;
     }
   if(hwnd_parent!=0)
      PostMessageA(hwnd_parent,WM_CLOSE,0,0);
   ShellExecuteA( NULL, "open", "terminal.exe", NULL, TerminalPath(), 1);
   return(0);
}
datetime curBarTime=0;
bool bStopTrading = false;
// ======================================= START ======================

int start()
  {
   
     if( (curBarTime == Time[0]) || bStopTrading) return(0);
     curBarTime = Time[0];
     
     // новые данные поступили, но IsConnected возвращает false
     if( !IsConnected() && !IsTesting()){ 
        bStopTrading = true;
        RestartApp();
       }
 // *************** остальной код *****************
}
 
VBAG:
С подобной ситуацией встречался. Причем иногда несколько дней проблем нет(и на демке и на реале).
Выделить, когда это происходит и по какой причине(но точно не по моей вине) не смог.
Отнес это к особенностям работы брокера. Неприятно. Но что делать?
Перезапускать терминал через какое-то время из внешнего приложения на всякий пожарный. Грубо, но помогает.
Лучше бы, конечно, этот момент(момент перезапуска брокера или еще что там у них со стороны сервера, неважно) как-то вовремя диагностировать.
По каким-то косвенным признакам? Может кто подскажет как лучше?

Вот вот...

Я и о том же...

Очень неприятный и очень опасный для МТС момент...

Два раза за две недели попал в эту ситуацию... (тики идут, а IsConnected() == false).

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

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

Незадача...

P.S. Антивирус в моем случае думаю не виноват. У меня стоит только Каспер шестой версии. Фаерволы никаких производителей не использую.

 
TedBeer:

ну ситуация же описана:
- IsConnected возвращает false
- тики идут

Ну, не так просто по двум условиям, похоже, можно будет решить эту проблему. Что-то мне подсказывает, что порыдать придется. Да ну ничего, на пару недель поставить советник с принтом в лог по разным условиям должно прояснить картину. По рестарту системы много материала было, читал, но все равно спасибо.
 
Рекомендую всем, кто наблюдал подобную проблему, повесить на терминал эксперта IsConnected.
И, по крайней мере, собрать статистику.
 
komposter:
Рекомендую всем, кто наблюдал подобную проблему, повесить на терминал эксперта IsConnected.
И, по крайней мере, собрать статистику.

Интересно... а если вообще не использовать в коде советника функцию IsConnected()... возможно проблему удастся обойти ?.. Или её НЕ использование все одно не поможет советнику получать вновь поступающие тики при повторении такой проблемы ?

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