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

거래 전략을 구축하는 시각화 모듈 - 고급 이해

저자:FMZ~리디아, 창작: 2022-12-13 14:11:36, 업데이트: 2023-09-20 09:53:59

img

거래 전략을 구축하는 시각화 모듈 - 고급 이해

우리는 트레이딩 전략을 구축하는 시각화 모듈을 배웠습니다. 첫 만남, 그리고 우리는 시각 모듈 구축과 접합에 대한 개념적 이해가 있습니다. 다음으로, 다른 모듈을 사용하는 법을 배우는 것이 쉽습니다. 좀 더 복잡한 함수를 조합할 수 있습니다.

거래 범주 모듈

이전 학습과 테스트에서 우리는 여러 가지 "거래 카테고리" 모듈에 노출되었습니다. 예를 들어: 이용하는 Get Ticker 모듈 교환 하 고 OHLC 모듈 ...

이미 사용되었던 것들이 여기에 반복되지 않을 것입니다.

1. 교환의 수를 얻으십시오.

img

로봇 거래를 위한 전략을 작성할 때 헤지 전략과 같은 하나 이상의 거래 대상을 추가할 수 있습니다. 또는 시장에 접근하기 위해 거래소를 가로질러 (횡단하는 것은 거래소를 하나씩 방문하는 것을 의미합니다). 여기서 교환의 수를 얻는 모듈이 작동합니다.

현재 구성된 교환의 수를 간단한 구조로 인쇄할 수 있습니다.

img

사실, 그것은 이러한 자바스크립트 전략 코드를 호출하는 것과 같습니다:

function main () {
    Log(exchanges.length)
}

이 복합 모듈의 실행 결과를 살펴 보겠습니다.

img img img

우리는 세 개의 다른 교환 계정을 나타내는 세 개의 교환 객체를 추가하고 백테스트 로그의 출력 결과가 3이라는 것을 볼 수 있습니다.

2. 거래소 이름

img

3개의 교환 객체를 추가할 때, 드롭다운 박스는 3개의 옵션을 표시합니다. 루프 타입의 루프 모듈을 미리 배우세요.

img

조건 판단 모듈을 미리 배우세요:

img

판단 조건은 다음과 같이 쓸 수 있습니다.

img

우리는 루프 모듈을 사용하여 추가된 교환 이름을 통과합니다. 우리는 상태 판단 모듈을 사용하여 현재 루프 수를 인쇄하려는 교환의 이름과 일치하는지 판단합니다.

img

백테스트 동작 결과:

img

자바스크립트 전략 코드처럼:

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())
        }
    }
}

3. 거래소의 현재 거래 쌍을 얻으십시오.

img

간단한 예로는 현재 설정된 첫 번째 교환 객체의 거래 쌍을 얻고 텍스트 변수에 할당하는 것입니다.

img

백테스트 결과:

img img img

자바스크립트 전략 코드를 호출하면

function main () {
    var text = exchange.GetCurrency()
    Log(text)
}

4. 주문 모듈

img

이 모듈은 주문 운영에 매우 중요합니다. 첫 번째 테논 (공각) 위치는 주문 가격을 지정하는 데 사용되는 가격 변수가 내장되어 있습니다. 또한 고정 값을 직접 입력할 수 있습니다. 두 번째 테논 (공각) 위치는 주문 양 변수와 함께 내장되어 있으며, 주문 양을 지정하는 데 사용됩니다.

예를 들어, 우리는 현재 틱 시장 데이터의 최신 가격에 기초하여 10 위안의 슬라이딩 가격을 추가하여 구매 주문을 배치하는 예를 니다. 주문 양이 0.1 동전으로 설정되어서 주문 ID를 인쇄합니다.

img

백테스트 동작 결과:

img

다음의 자바스크립트 전략 코드처럼:

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
    Log(id)
}

5. 현재 거래 쌍 모듈의 대기 주문을 얻으십시오

img

이 모듈은 현재 거래 쌍의 미완성 상태의 모든 대기 주문을 반환합니다. 목록 유형 모듈 (횡단 작업, 등) 에 의해 처리 될 수있는 목록 구조 (열) 를 반환합니다. 예를 들어, 위의 예제 주문 모듈[4]을 약간 수정하여 주문을 할 때 추가된 10 위안의 가격을 -10 위안으로 변경했습니다. 주문은 즉시 닫히지 않지만 거래의 깊이 (즉, 하나 사, 둘 사, N에서 특정 수준을 사) 에 배치됩니다. 그러면 우리는 현재 거래 쌍의 대기 주문을 얻으라는 모듈을 사용하여 PENDING 상태의 주문 목록을 얻습니다. 후속 시장에서 주문을 채우기 때문에 백테스트의 최종 관찰에 영향을 피하기 위해, 모듈 현재 거래 쌍의 대기 주문을 얻으십시오 실행 후, 우리는 주문 목록을 인쇄하고 모듈을 사용 합니다 제외를 던지십시오 즉시 프로그램을 중지합니다.

img

백테스트는 다음과 같은 결과를 보여줍니다.

img

구매 주문의 가격은 그 당시의 최신 가격보다 10 위안 낮았기 때문에 즉시 채우지 않을 것입니다. 그 다음 대기 중인 거래 상태에서 주문을 받아서 인쇄해 보세요. 마지막으로, 프로그램을 중지하기 위해 예외가 던져집니다.

전체 집적된 모듈은 자바스크립트 전략에 대한 호출과 같습니다:

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
    Log(id)
    Log(exchange.GetOrders())
    throw "stop"
}

6. 주문 모듈을 취소

img

이 모듈은 주문을 취소하는 데 사용됩니다.

전략을 작성할 때 이러한 작업을 필요로 하는 많은 시나리오가 있습니다.

현재 대기 중인 모든 주문을 취소합니다.

Cancel order module을 사용해야 한다는 것은 의심의 여지가 없다. cancel order module를 배우는 동안, 우리는 현재 거래 쌍 모듈의 대기 주문을 얻기 위해 [5]을 사용할 수 있으며, 이 기능을 달성하기 위해 결합할 수 있다.

우선, 모든 주문의 취소 테스트를 위해, 그것은 주문을 하는 것이 명백하지 않습니다. 우리는 2 주문을 배치하기 시작합니다, 그들의 가격과 양은 두 주문을 구별하기 위해 다릅니다.

img

Loop 모듈의 list 모듈의 모든 요소를 Traverse로 이동하여 현재 대기 중인 주문 목록의 주문을 니다.

img

탐색 도중 검색된 각 순서는 변수 모듈 순서에 값을 부여합니다. (아래의 그림과 같이 변수 모듈 타입에서 생성됩니다.)

img

Util 모듈을 사용하세요:

img

주문 ID를 꺼내서 Cancel order 모듈의 텐온 (공각) 위치로 전달하면 Cancel order 모듈이 주문 취소 작업을 실행합니다.

백테스트 동작:

img

자바스크립트 전략 설명서를 사용하세요:

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))
    }
}

7. 주문 ID를 기반으로 주문의 세부 정보를 얻기 위한 모듈

img

모듈의 테논 (공각) 위치는 주문 ID 변수 모듈과 연결되어 있으며, 주문 세부 정보를 반환할 수 있습니다.

img

실행 후 반환 된 순서를 참고하십시오:

img

예제 [5]의 실행 결과와 비교하면 인쇄된 주문은 [] 대괄호 없이 별도의 주문 정보입니다. 예제 [5]에서 목록이 반환되지만 이 예제에서는 별도의 순서 정보가 반환됩니다. (모듈에 의해 전달된 테논 위치에 대한 ID 변수 모듈을 기반으로 얻습니다.)

위의 예제에서는 자바스크립트 전략을 실행하는 것과 비슷합니다.

function main () {
    var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
    Log(exchange.GetOrder(id))
}

8. 선물 거래 모듈

우리는 위의 모듈을 하나씩 배우게 될 것입니다. 그리고 우리는 상품 선물로 테스트 교환을 설정합니다.

백테스트 설정:

img

다음 예제에서는 설정에 기반한 백테스트를 수행합니다.

  • CTP 상품 선물과 선물 회사 서버 사이의 연결 상태 모듈을 판단

img

재화 선물은 개시시간과 폐쇄시간을 가지고 있습니다. 시장이 닫히면 연결할 수 없습니다.

  • 세트 계약 모듈

img

거래소의 대상이 선물 거래소로 구성되면 거래소가 계약을 설정하지 않고 직접 시장 정보를 얻으면 오류가 보고됩니다.

우리는 MA909로 계약을 설정했습니다. 현재 메탄올의 주요 계약입니다.

이렇게 하면 MA909 계약의 현재 틱 시장에서 가장 최근의 가격 값을 얻습니다.

  • 선물 거래에 대한 주문 방향 모듈을 설정

실행 명령어 모듈에서

img

주문 방향은 지정되어야 합니다. 왜냐하면 선물은 다음과 같습니다. 구매: 긴 포지션을 오픈 팔기: 오픈한 포지션 closebuy: 긴 포지션을 닫습니다. 클로저셀: 짧은 포지션을 닫습니다. 네 개의 방향 (상품 선물에는 두 개의 방향이 더 있습니다: 오늘 긴 포지션을 닫는 데 closebuy_today 및 오늘 짧은 포지션을 닫는 데 closesell_today).

예를 들어, 오더 모듈이 buy로 설정되면, 긴 포지션을 열고 짧은 포지션을 닫는 두 가지 의미가 있습니다. 이것은 모호합니다. 따라서, 예약 거래에 대한 명령 방향 모듈을 설정하라 모듈은 명확한 명령 방향을 설정하기 위해 필요합니다.

img

백테스팅 표시:

img

자바스크립트 전략 코드처럼:

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)
    }
}

9. 디지털 통화 선물 거래 모듈

디지털 화폐 선물의 사용은 기본적으로 [8] 위의 상품 선물과 동일합니다.

  • 예를 들어 OKEX를 들자면 계약 코드는 다음과 같습니다.
    • this_week: 이번 주
    • next_week: 다음 주
    • 분기: 분기
    • 교환: 영구
  • BitMEX:
    • XBTUSD
    • ETHUSD
  • 세트 레버리지 모듈

img

디지털 화폐 선물의 레버리지를 설정하는 데 사용됩니다.

#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

이 시리즈의 다른 제품


관련

더 많은