Быстро внедрить полуавтоматический инструмент количественной торговли
В товарных фьючерсных сделках межвременный арбитраж является распространенным методом торговли. Этот вид арбитража не является безрисковым. Когда одностороннее направление спреда продолжает расширяться, арбитражная позиция будет находиться в состоянии плавающей потери.
В этой статье мы попытаемся переключиться на другую торговую стратегию, вместо того, чтобы построить полностью автоматизированную торговую стратегию, мы реализовали интерактивный полуавтоматический инструмент количественной торговли, чтобы облегчить межвременный арбитраж в товарной фьючерсной торговле.
Платформа разработки мы будем использовать платформу FMZ Quant. Основное внимание в этой статье уделяется созданию полуавтоматических стратегий с интерактивными функциями.
Межвременный арбитраж - очень простая концепция.
# Strategy Design
The strategy framework is as follows:
Функция основной
В то время как ((правда) {
If(exchange.IO(
If the CTP protocol is connected properly, then we need to set up the trading contract and then get the market quote. After obtaining the quotes, we can use the FMZ Quant platform build-in "line drawing" library to draw the difference.
Функция основной
В то время как ((правда) {
If(exchange.IO(
LogStatus(_D(),
Get the market data, calculate the difference, and draw the graph to record. let it simply reflects the recent fluctuations in the price difference.
Use the function of "line drawing" library ```$.PlotLine```
![Quickly implement a semi-automatic quantitative trading tool](/upload/asset/6e286fea238b8266dd13.png)
# Interactive part
On the strategy editing page, you can add interactive controls directly to the strategy:
![Quickly implement a semi-automatic quantitative trading tool](/upload/asset/6e9b91112616d444b964.png)
Use the function ```GetCommand``` in the strategy code to capture the command that was sent to the robot after the above strategy control was triggered.
After the command is captured, different commands can be processed differently.
The trading part of the code can be packaged using the "Commodity Futures Trading Class Library" function. First, use ```var q = $.NewTaskQueue()``` to generate the transaction control object ```q``` (declared as a global variable).
var cmd = GetCommand (()
если (cmd) {
если (cmd ==