' Функция отправки заявки на покупку/продажу
FUNC SEND_ORDER(Operation, Price, Type, SecCode, ClassCode, Quantity)
TRANS_PARAMS = CREATE_MAP()
trans_params = set_value (trans_params, «TRANS_ID», TransID)
trans_params = set_value (trans_params, «ACTION», «NEW_ORDER»)
trans_params = set_value (trans_params, «CLASSCODE», ClassCode)
trans_params = set_value (trans_params, «SecCode», SecCode)
trans_params = set_value (trans_params, «ACCOUNT», Account)
trans_params = set_value (trans_params, «OPERATION», Operation)
trans_params = set_value (trans_params, «PRICE», Price)
trans_params = set_value (trans_params, «Quantity», Quantity)
trans_params = set_value (trans_params, «CLIENT_CODE», ClientCode)
trans_params = set_value (trans_params, «TYPE», Type)
trans_result = SEND_TRANSACTION(Order_Timer, trans_params)
FOR while FROM 0 TO 1 ' Ожидаем пока заявка будет выставлена
'while=0
IF GET_VALUE(trans_result, «RESULT_EX») = «3»
OrderNumber = 0+GET_VALUE(trans_result, «ORDER_NUMBER»)
FlagOrder=1
WRITELN(test, DATE &" "& curtime &" Ордер выставлен: "&OrderNumber&" QTY: "&Quantity)
RETURN
END IF
END FOR
RETURN
END FUNC
обновление чего 1 секунда? стаканы поставляются до 100 раз в секунду, да и заявки быстро уходят… от брокера зависит еще. Можно еще на QLua переписать, вдруг быстрее будет. Сам выставляю через trans2quik.dll, из C#. Работает быстро. Но надо понимать, что на мгновение цена может коснуться требуемой и так же уйти. И может создаться ощущение что робот тормозит, а он не может выполнить заявку если цена второй раз не коснется требуемой.
PORTFOLIO_EX ТЕСТ;
DESCRIPTION ОПИСАНИЕ;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;
USE_CASE_SENSITIVE_CONSTANTS;
PROGRAM
FOR XXX FROM 0 TO 0
MESSAGE(«Раз в секунду, ага»,1)
IF 1 = 1
XXX = -1
CONTINUE
END IF
END FOR
END_PROGRAM
PARAMETER COLUMN;
PARAMETER_TITLE Робот;
PARAMETER_DESCRIPTION Описание столбца;
PARAMETER_TYPE STRING(10);
END
END_PORTFOLIO_EX
Хочешь быстрее — разбирай API, и прикручивай сквозь него.
Ещё быстрее — пиши под плазу… ну или как она там сейчас… FAST.
ХФТ в квике всё равно не сделаешь
Хотя у меня квиковые боты крутятся — меня скорость устраивает))))
Или давай ещё раз опиши, что требуется.
Вписывай просто-напросто при формировании вот этой строки в сендордере не Price, а Price+100
Ну или сколько пунктов ты готов отдать, чтобы стопудово исполниться.))))
FOR while FROM 0 TO 1 — если сделать вместо 1, 100 в секундах или миллисекундах будет измеряться проверка функции. И если поменять на 100 как это отразится, до этого стояло 100, поменял на 1, но так и не понял на что влияет.
trans_result = SEND_TRANSACTION(Order_Timer, trans_params)
Order_Timer=10
я как понимаю, он будет ждать 10 секунд отправить заявку брокеру и чтобы пришел ответ ?