리소스 로딩... 로딩...

반자동화 양적 거래 도구를 신속하게 구현합니다.

저자:선함, 2020-08-30 10:11:02, 업데이트: 2023-10-08 19:54:06

Quickly implement a semi-automatic quantitative trading tool

반자동화 양적 거래 도구를 신속하게 구현합니다.

재화 선물 거래에서, 임시 중재는 일반적인 거래 방법이다. 이 유형의 중재는 위험하지 않습니다. 스프레드의 일방적인 방향이 계속 확장되면 중재 지위는 부동 손실 상태에있을 것입니다. 그러나 중재 지위가 적절히 제어되는 한, 그것은 여전히 매우 운영되고 실행 가능합니다.

이 기사에서는, 우리는 완전히 자동화된 거래 전략을 구축하는 대신 다른 거래 전략으로 전환하려고 노력합니다.

개발 플랫폼은 FMZ 퀀트 플랫폼을 사용할 것입니다. 이 문서의 초점은 상호 작용 함수와 반 자동 전략을 구축하는 방법에 있습니다.

시간 간 중재는 매우 간단한 개념입니다.

시간 간 중재 개념

  • 위키백과에서 인용


# Strategy Design

The strategy framework is as follows:

함수 주식 사실입니다. if(exchange.IO(status)) { // CTP 프로토콜의 연결 상태를 결정합니다. 로그Status ((_D(), 이미 CTP에 연결!) // 시장 오픈 시간, 로그인 연결은 정상입니다. 다른 것 LogStatus(_D(), CTP 연결되지 않습니다!) // 거래 프론트엔드에 로그인하지 않았습니다. } } }


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(status)) { // CTP 프로토콜의 연결 상태를 결정합니다. exchange.SetContractType ((rb2001) // 먼 달 계약을 설정 Var tickerA = exchange.GetTicker() // 먼 달 계약 코팅 데이터 exchange.SetContractType ((rb1910) // 가까운 달 계약을 설정 Var tickerB = exchange.GetTicker() // 거의 한 달 계약 코팅 데이터 Var diff = 티커A.Last - 티커B.Last $.PlotLine ((diff, diff)

로그Status ((_D(), 이미 CTP에 연결!) // 시장 오픈 시간, 로그인 연결은 정상입니다. 다른 것 LogStatus(_D(), CTP 연결되지 않습니다!) // 거래 프론트엔드에 로그인하지 않았습니다. } } }


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 (() if (cmd) { if (cmd == plusHedge) { q.pushTask (교류, rb2001, sell, 1, 기능 (Task, ret) { 로그 (task.desc, ret) if (ret) { q.pushTask (거래소, rb1910, buy, 1, 123, 기능 (task, ret) { 로그 ((q, task.desc, ret, task.arg) }) } }) } 다른 경우 (cmd == 마이너스 헤지) { q.pushTask (거래소, rb2001, buy, 1, 기능, ret) { 로그 (task.desc, ret) if (ret) { q.pushTask (거래소, rb1910, sell, 1, 123, 기능, ret) { 로그 ((q, task.desc, ret, task.arg) }) } }) 다른 경우 (cmd == coverPlus) { q.pushTask (교류, rb2001, closesell, 1, 기능 (Task, ret) { 로그 (task.desc, ret) if (ret) { q.pushTask (거래소, rb1910, closebuy, 1, 123, 기능 (task, ret) { 로그 ((q, task.desc, ret, task.arg) }) } }) 다른 경우 (cmd == cover 마이너스) { q.pushTask (거래, rb2001, closebuy, 1, 기능 (Task, ret) { 로그 (task.desc, ret) if (ret) { q.pushTask (교류, rb1910, closesell, 1, 123, 기능 (Task, ret) { 로그 ((q, task.desc, ret, task.arg) }) } }) } } q.poll (() `


관련 내용

더 많은 내용