우리는 트레이딩 전략을 구축하는 시각화 모듈을 배웠습니다. 첫 만남, 그리고 우리는 시각 모듈 구축과 접합에 대한 개념적 이해가 있습니다. 다음으로, 다른 모듈을 사용하는 법을 배우는 것이 쉽습니다. 좀 더 복잡한 함수를 조합할 수 있습니다.
이전 학습과 테스트에서 우리는 여러 가지 "거래 카테고리" 모듈에 노출되었습니다.
예를 들어:
이미 사용되었던 것들이 여기에 반복되지 않을 것입니다.
로봇 거래를 위한 전략을 작성할 때 헤지 전략과 같은 하나 이상의 거래 대상을 추가할 수 있습니다. 또는 시장에 접근하기 위해 거래소를 가로질러 (횡단하는 것은 거래소를 하나씩 방문하는 것을 의미합니다). 여기서 교환의 수를 얻는 모듈이 작동합니다.
현재 구성된 교환의 수를 간단한 구조로 인쇄할 수 있습니다.
사실, 그것은 이러한 자바스크립트 전략 코드를 호출하는 것과 같습니다:
function main () {
Log(exchanges.length)
}
이 복합 모듈의 실행 결과를 살펴 보겠습니다.
우리는 세 개의 다른 교환 계정을 나타내는 세 개의 교환 객체를 추가하고 백테스트 로그의 출력 결과가 3이라는 것을 볼 수 있습니다.
3개의 교환 객체를 추가할 때, 드롭다운 박스는 3개의 옵션을 표시합니다. 루프 타입의 루프 모듈을 미리 배우세요.
조건 판단 모듈을 미리 배우세요:
판단 조건은 다음과 같이 쓸 수 있습니다.
우리는 루프 모듈을 사용하여 추가된 교환 이름을 통과합니다. 우리는 상태 판단 모듈을 사용하여 현재 루프 수를 인쇄하려는 교환의 이름과 일치하는지 판단합니다.
백테스트 동작 결과:
자바스크립트 전략 코드처럼:
function main () {
for (var i = 1 ; i <= exchanges.length ; i++) {
if (i == 1) {
Log(exchanges[0].GetName())
} else if (i == 2) {
Log(exchanges[1].GetName())
} else {
Log(exchanges[2].GetName())
}
}
}
간단한 예로는 현재 설정된 첫 번째 교환 객체의 거래 쌍을 얻고 텍스트 변수에 할당하는 것입니다.
백테스트 결과:
자바스크립트 전략 코드를 호출하면
function main () {
var text = exchange.GetCurrency()
Log(text)
}
이 모듈은 주문 운영에 매우 중요합니다. 첫 번째 테논 (공각) 위치는 주문 가격을 지정하는 데 사용되는 가격 변수가 내장되어 있습니다. 또한 고정 값을 직접 입력할 수 있습니다. 두 번째 테논 (공각) 위치는 주문 양 변수와 함께 내장되어 있으며, 주문 양을 지정하는 데 사용됩니다.
예를 들어, 우리는 현재 틱 시장 데이터의 최신 가격에 기초하여 10 위안의 슬라이딩 가격을 추가하여 구매 주문을 배치하는 예를
백테스트 동작 결과:
다음의 자바스크립트 전략 코드처럼:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
이 모듈은 현재 거래 쌍의 미완성 상태의 모든 대기 주문을 반환합니다. 목록 유형 모듈 (횡단 작업, 등) 에 의해 처리 될 수있는 목록 구조 (열) 를 반환합니다.
예를 들어, 위의 예제 주문 모듈[4]을 약간 수정하여 주문을 할 때 추가된 10 위안의 가격을 -10 위안으로 변경했습니다. 주문은 즉시 닫히지 않지만 거래의 깊이 (즉, 하나 사, 둘 사, N에서 특정 수준을 사) 에 배치됩니다.
그러면 우리는 현재 거래 쌍의 대기 주문을 얻으라는 모듈을 사용하여 PENDING 상태의 주문 목록을 얻습니다.
후속 시장에서 주문을 채우기 때문에 백테스트의 최종 관찰에 영향을 피하기 위해, 모듈
백테스트는 다음과 같은 결과를 보여줍니다.
구매 주문의 가격은 그 당시의 최신 가격보다 10 위안 낮았기 때문에 즉시 채우지 않을 것입니다. 그 다음 대기 중인 거래 상태에서 주문을 받아서 인쇄해 보세요. 마지막으로, 프로그램을 중지하기 위해 예외가 던져집니다.
전체 집적된 모듈은 자바스크립트 전략에 대한 호출과 같습니다:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}
이 모듈은 주문을 취소하는 데 사용됩니다.
전략을 작성할 때 이러한 작업을 필요로 하는 많은 시나리오가 있습니다.
현재 대기 중인 모든 주문을 취소합니다.
우선, 모든 주문의 취소 테스트를 위해, 그것은 주문을 하는 것이 명백하지 않습니다. 우리는 2 주문을 배치하기 시작합니다, 그들의 가격과 양은 두 주문을 구별하기 위해 다릅니다.
탐색 도중 검색된 각 순서는 변수 모듈 순서에 값을 부여합니다. (아래의 그림과 같이 변수 모듈 타입에서 생성됩니다.)
주문 ID를 꺼내서
백테스트 동작:
자바스크립트 전략 설명서를 사용하세요:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
Log(id2)
var orders = exchange.GetOrders()
Log(orders)
for (var i in orders) {
var order = orders[i]
Log(exchange.CancelOrder(order.Id))
}
}
모듈의 테논 (공각) 위치는 주문 ID 변수 모듈과 연결되어 있으며, 주문 세부 정보를 반환할 수 있습니다.
실행 후 반환 된 순서를 참고하십시오:
예제 [5]의 실행 결과와 비교하면 인쇄된 주문은 [] 대괄호 없이 별도의 주문 정보입니다. 예제 [5]에서 목록이 반환되지만 이 예제에서는 별도의 순서 정보가 반환됩니다. (모듈에 의해 전달된 테논 위치에 대한 ID 변수 모듈을 기반으로 얻습니다.)
위의 예제에서는 자바스크립트 전략을 실행하는 것과 비슷합니다.
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
우리는 위의 모듈을 하나씩 배우게 될 것입니다. 그리고 우리는 상품 선물로 테스트 교환을 설정합니다.
백테스트 설정:
다음 예제에서는 설정에 기반한 백테스트를 수행합니다.
재화 선물은 개시시간과 폐쇄시간을 가지고 있습니다. 시장이 닫히면 연결할 수 없습니다.
거래소의 대상이 선물 거래소로 구성되면 거래소가 계약을 설정하지 않고 직접 시장 정보를 얻으면 오류가 보고됩니다.
우리는 MA909로 계약을 설정했습니다. 현재 메탄올의 주요 계약입니다.
이렇게 하면 MA909 계약의 현재 틱 시장에서 가장 최근의 가격 값을 얻습니다.
실행 명령어 모듈에서
주문 방향은 지정되어야 합니다. 왜냐하면 선물은 다음과 같습니다. 구매: 긴 포지션을 오픈 팔기: 오픈한 포지션 closebuy: 긴 포지션을 닫습니다. 클로저셀: 짧은 포지션을 닫습니다. 네 개의 방향 (상품 선물에는 두 개의 방향이 더 있습니다: 오늘 긴 포지션을 닫는 데 closebuy_today 및 오늘 짧은 포지션을 닫는 데 closesell_today).
예를 들어, 오더 모듈이
백테스팅 표시:
자바스크립트 전략 코드처럼:
function main () {
while (true) {
if (exchange.IO("status")) {
exchange.SetContractType("MA909")
Log(exchange.GetTicker().Last)
exchange.SetDirection("buy")
Log(exchange.Buy(1000, 1))
throw "stop"
} else {
Log("The commodity futures front-end processor is not connected")
}
Sleep(1000)
}
}
디지털 화폐 선물의 사용은 기본적으로 [8] 위의 상품 선물과 동일합니다.
디지털 화폐 선물의 레버리지를 설정하는 데 사용됩니다.
#Note: Backtesting is not supported.
자바스크립트 전략처럼:
function main () {
exchange.SetMarginLevel(10)
}
시각화 전략의 예:
https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318더 많은 전략은 참조하십시오:https://www.fmz.com/square
이 시리즈의 다른 제품