Germany | Finland | Saint Petersburg | Drive

Подача транзакций в разные терминалы

Опубликовано в AmiSharp

Несмотря на то, что API, реализованный в библиотеке trans2quik.dll, позволяет работать одномоментно лишь с одним терминалом QUIK, AmiSharp может выступать в роли диспетчера и позволять одновременно работать с несколькими терминалами. Иллюстрация механизма на языке autoit в случае использования AmiSharp:

; Осуществляет подсоединение Dll к указанному терминалу quik
; Возвращает "0" в случае ошибки и "1" при успехе

Func AmiSharp_ConnectDllToQuik($InfoExePath)
    Static $Last_Quik_Connected = "?"
    Local $result

    If $InfoExePath == $Last_Quik_Connected Then Return "1"

    If $AmiSharp.QuikIsDllConnected() == "1" Then
        $AmiSharp.QuikDisconnect()
        $Last_Quik_Connected = "?"
    EndIf

    $result = $AmiSharp.QuikConnect($InfoExePath)
    If $result == "1" Then $Last_Quik_Connected = $InfoExePath
    Return($result)
EndFunc

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

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

В большинстве случаев, если робот создается не в качестве коммерческого объекта, такой ситуацией можно пренебречь. Ничего особо страшного не произойдет - транзакция не пройдет с соответствующей диагностикой. 


Сегодня на одной богом забытой окраине города обратил внимание на  сплошь расписанный забор.  Cреди Deep Purple и слов из трех букв удобно устроился Марк Нопфлер.  (??)

 

Добавить комментарий