Заявки в AmiSharp из внешних программ

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

Выставления заявки в AmiSharp из универсального языка программирования. Для примера взят язык autoit. То же самое можно исполнять из любого языка программирования, поддерживающего COM-технологию.

 

#include-Once

; Выставление ордера
; Если TransactionPrice == 0 - исполняется заявка "по рынку"
; Неисполненное количество снимается
; Возвращает массив с ответом торговой системы

Func AmiSharp_Send_Transaction($TransactionOper, $TransactionPrice, $TransactionSize, $ClassCode, $SecCode, $Account,$ClientCode, $TTP_Table, $dde_ttp_seccode="CODE", $dde_ttp_classcode="CLASS_CODE", $dde_ttp_step="SEC_PRICE_STEP")
   local $result,$Oper,$str

   if $ClassCode == "" Then ; Устанавливаем код класса
      $ClassCode = AmiSharp_GetClassCode($TTP_Table, $SecCode, $m4_dde_ttp_seccode, $dde_ttp_classcode)
   EndIf
   if $TransactionPrice <> 0 Then ; Лимитированный ордер: округляем до шага цены
      $TransactionPrice = Round_To_Step($TransactionPrice, Number_Regional(AmiSharp_GetParameter($dde_ttp_step, $TTP_Table, $ClassCode, $SecCode, $dde_ttp_classcode, $dde_ttp_seccode)))
   EndIf

   $TransactionOper = StringUpper($TransactionOper)
      Select
      case $TransactionOper = "SELL" or $TransactionOper = "SHORT"
         $Oper = "S"
         if $TransactionPrice = 0 AND $ClassCode = "SPBFUT" Then
            $TransactionPrice = AmiSharp_MinPrice($TTP_Table,$ClassCode,$Seccode)
         EndIf
      case $TransactionOper = "BUY" or $TransactionOper = "COVER"
         $Oper = "B"
            if $TransactionPrice = 0 AND $ClassCode = "SPBFUT" Then
               $TransactionPrice = AmiSharp_MaxPrice($TTP_Table,$ClassCode,$Seccode)
            EndIf
      EndSelect

   $str = "ACTION=NEW_ORDER;"
   $str &= "OPERATION=" & $Oper & ";"
   $str &= "TRANS_ID=" & $AmiSharp.Generate_TransID() & ";"
   $str &= "SECCODE=" & $Seccode & ";"
   $str &= "QUANTITY=" & $TransactionSize & ";"
   $str &= "CLASSCODE=" & $Classcode & ";"
   $str &= "ACCOUNT=" & $Account & ";"
   If $ClassCode == "SPBFUT" Then
      $str &= "TYPE=L;"
      $str &= "PRICE=" & $TransactionPrice & ";"
   ;~ $str &= "EXECUTION_CONDITION=KILL_BALANCE;"
   Else
      $str &= "TYPE=M;"
      $str &= "PRICE=0;"
   EndIf
   If $ClientCode <> "" Then
      $str &= "CLIENT_CODE=" & $ClientCode & ";"
   EndIf

   $result = StringSplit($AmiSharp.QuikSendSyncTransaction($str),",")
   _ArrayAdd($result,$str)
   $result[0] += 1
   Return $result
EndFunc

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

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


Защитный код
Обновить