Асинхронность работы эксперта

 
Разработчикам

Есть ли возможность из ЭКСПЕРТА симулировать ручное выставление ордера, т.е. не ждать очередного тика от сервера, а самому запрашивать котировки и, самое главное, выставлять ордера не с приходом очередной котировки, а по сигналу, генерируемому извне.
Если нет прямого решение, то подскажите "кривое". Например, написать скрипт и вызывать его из внешней программы.

Заранее благодарю за ответ.
 
такой возможности нет.
существует прямое решение Ваших проблем - писать на MTAPI
 
"Кривое" решение.

В виндах есть возможность послать некоторому приложению цепочку символов.
Если вы можете определить и записать эту цепочку, и если вы сами на этом приложении в этот момент не будете ничего делать, тогда можн.

Так к примеру загрузка истории в Омегу у Forexite сделана.
(Подаются команды в GS чтобы он имтортировал загруженную историю с винта)
 
Не могу понять, почему разработчики так упираются и до сих пор не дуют возможность МКЛ полностью эмулировать живого чела за монитором.

Slawa 14.04.05 10:59 
такой возможности нет.
существует прямое решение Ваших проблем - писать на MTAPI 



Уважаемые разработчики если вас не затруднит - подскажите пожалуйста фришный софт для корректной работы с вашим MTAPI, хотя это и не решает поставленой задачи.
Жаль.

Если я не ошибаюсь - пользователи вас неоднократно просили отвязать исполнение экспертов от тиков, что бы была возможность запускать его через заданный пользователем промежуток времени. Кому надо пусть запускает его по приходу нового тика (как и сейчас), кому нужно - пусть запускает его по времени, а кому надо - пусть запускает его когда тиков нет заданное время.

Если то ,что я написал глупость - подскажите плс, как мне это сделать.
Спасибо.

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

Это можно сделать добавив событие (Timer к примеру), и функцию типа SetTimer(milisec).
Через заданное время вызывается функция Timer.

Или еще лучше функцию SetTimer(milisec, "func1");
 
оформите Вашего эксперта в виде скрипта, оформите запуск нужной логики в нужное время и киньте его на график. и Вы не будете зависеть от прихода тиков.


Будте любезны приведите, пожалуйств, простенький (работающий) пример реализации Вашего предложения.
 
оформите Вашего эксперта в виде скрипта, оформите запуск нужной логики в нужное время и киньте его на график. и Вы не будете зависеть от прихода тиков.


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

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


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

Будьте любезны, пожалуйста, попробуйте сами.


Я попросил Вашей помощи, т.к. никогда скриптами не пользовался и не понял Вашего предложения.
В моем представлении, скрипт запускается один раз по запросу пользователя и как им можно заменить эксперт, который отслеживает сосотояние рынка и принимает решения на выдачу ордеров мне не понятно.
Поясните, пожалуйста, свою мысль (если не затруднит на простеньком примере).

Заранее спасибо.
 
Пример (не проверял)
int interval = 1000;  //  интервал запуска функции пользователя в миллисек.

//  Функция пользователя, которая запускается с заданным интервалом.
void YouFunc()
{
   ............
}

void start()
{
   while (true)   //  бесконечный цикл
   {
      YouFunc();  //  Вызов функции
      sleep(interval);  // поспать (interval) мс.
   }
}


Можно добавить функцию, которая будет задавать время перезапуска.

void SetTimer(int tm)
{
   if (tm < 100) interval = 100;
   else  interval = tm;
}

   ..................

void YouFunc()
{
   ............
   SetTimer(500);
}
 
int interval = 100;  


void YouFunc()
{
   Comment("" + TimeToStr(CurTime(),TIME_DATE|TIME_MINUTES|TIME_SECONDS));
}

void start()
{
   while (true)   
   {
      YouFunc();  
      Sleep(interval);  
   }
}



Ожидал увидеть на графике в верхнем левом углу часы с СЕКУНДНЫМ отсчетом.
Но часов не получилось. Время показывается правильное, но ОБНОВЛЕНИЕ времени происходит с приходом ОЧЕРЕДНОГО ТИКА.
Что это:
- проблема обновления экрана (обновляется с приходом нового тика, а скрипт работает корректно)
- скрипт работает не правильно?