avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

거래 전략을 구축하기 위한 시각화 모듈 - 고급

만든 날짜: 2019-07-17 10:22:20, 업데이트 날짜: 2023-10-24 21:40:50
comments   3
hits   4351

거래 전략을 구축하기 위한 시각화 모듈 - 고급

거래 전략을 구축하기 위한 시각화 모듈 - 고급

시각적 모듈 구성의 거래 전략(소개 장)을 배우고 시각적 모듈의 구성과 스플라이싱에 대한 개념적 이해를 갖습니다. 그러면 다른 모듈을 사용하는 법을 쉽게 배울 수 있습니다. 좀 더 복잡한 기능을 결합할 수도 있습니다.

  • ## 거래 카테고리 모듈

이전 연구와 테스트에서 우리는 여러 가지 “거래 범주” 모듈을 접하게 되었습니다. 예를 들어: “견적 교환” 모듈 “교환 획득 K-라인” 모듈 …

이미 사용된 것들에 대해서는 자세히 설명하지 않겠습니다.

  • 1. 교환 횟수를 구하세요

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    로봇을 이용한 거래 전략을 작성할 때, 헤지 전략 등 여러 개의 거래 객체를 추가할 수 있습니다. 아니면 시장 상황을 파악하려면 거래소 객체를 탐색해야 합니다(탐색은 각 거래소를 하나하나 방문하는 것을 의미합니다). 이 시점에서는 교환 횟수를 얻기 위해 모듈을 사용해야 합니다.

    먼저 간단한 구조를 사용하여 현재 구성된 교환 수를 인쇄할 수 있습니다. 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    실제로 다음 JavaScript 정책 코드를 호출하는 것과 같습니다.

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

    이 결합된 모듈을 실행한 결과를 살펴보겠습니다. 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    3개의 서로 다른 거래소 계정을 나타내는 3개의 거래소 객체를 추가한 것을 볼 수 있으며, 백테스트 로그 출력 결과는 3입니다.

  • 2. 거래소 이름을 얻으세요

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    3개의 교환 개체를 추가할 때 드롭다운 상자에 3개의 옵션이 표시됩니다. 루프 유형의 루프 모듈을 미리 학습하세요. 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    조건 판단 모듈을 미리 학습해 보겠습니다. 거래 전략을 구축하기 위한 시각화 모듈 - 고급 판단 조건은 다음과 같이 작성할 수 있습니다. 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    추가된 교환 이름을 반복하기 위해 루프 모듈을 사용합니다. 조건 판단 모듈을 사용하여 현재 루프 수가 인쇄될 거래소 이름과 일치하는지 확인합니다.

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    백테스트 실행 결과: 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    JavaScript 전략 코드와 같습니다.

    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. 거래소의 현재 거래 쌍을 가져옵니다.

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    간단한 예제에서는 현재 설정된 첫 번째 거래소 객체의 거래 쌍을 가져와 텍스트 변수(미리 변수 카테고리에 생성)에 할당합니다.

    거래 전략을 구축하기 위한 시각화 모듈 - 고급 백테스팅 결과: 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    JavaScript 정책 코드를 호출하는 경우:

    function main () {
        var text = exchange.GetCurrency()
        Log(text)
    }
    
  • 4. 주문 모듈

    거래 전략을 구축하기 위한 시각화 모듈 - 고급 이 모듈은 매우 중요하며 주문 작업에 사용됩니다. 가격 변수는 주문 가격을 지정하기 위해 첫 번째 테넌(홈) 위치에 내장됩니다. 고정된 값을 직접 입력할 수도 있습니다. 두 번째 테넌(점) 위치에는 주문 수량 변수가 포함되며, 이는 주문 수량을 지정하는 데 사용됩니다.

    예를 들어, 현재 틱 시장 데이터의 최신 가격을 기준으로 10위안 슬리피지를 적용하여 매수 주문을 내고, 주문 수량을 0.1코인으로 설정하고, 주문 ID를 출력하는 예제를 만들어 보겠습니다. 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    백테스트 실행 결과: 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    다음 JavaScript 정책 코드와 같습니다.

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
        Log(id)
    }
    
  • 5. 현재 거래 쌍의 위탁 주문을 얻기 위한 모듈

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    이 모듈은 현재 거래 쌍에 대한 모든 미완료 주문을 반환합니다. 반환된 구조는 목록(배열)이며, 목록 유형 모듈(순회 작업 등)에서 처리할 수 있습니다. 예를 들어: 위의 주문 모듈 예제[4]를 약간 수정하여 주문 시 추가되는 10위안 가격을 10위안의 가격 차감으로 변경합니다. 주문은 즉시 실행되지 않고 매수 및 매도 심도(즉, 매수 1, 매수 2, 매수 N 중 특정 레벨)에서 보류 상태로 유지되므로, 주문은 실행을 기다리는 보류 주문이 됩니다. 그런 다음 “현재 거래 쌍의 위탁 주문 가져오기” 모듈을 사용하여 PENDING 상태(실행 대기 중)의 주문 목록을 가져옵니다. 이후 시장 상황에서 주문 실행을 피하고 백테스트의 최종 관찰에 영향을 미치기 위해 “현재 거래 쌍의 위탁 주문 가져오기” 모듈이 실행되고 주문 목록이 인쇄된 후 즉시 “예외 발생”을 사용합니다. “ 프로그램을 중지하는 모듈입니다.

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    백테스팅 결과: 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    매수 주문 가격은 당시 최신 가격보다 10위안 낮으므로 거래가 즉시 완료되지 않습니다. 그런 다음 실행을 기다리고 있는 주문을 받아 인쇄합니다. 마지막으로 프로그램을 중지하기 위해 예외가 발생합니다.

    조립된 전체 모듈은 JavaScript 전략을 호출하는 것과 같습니다.

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(id)
        Log(exchange.GetOrders())
        throw "stop"
    }
    
  • 6. 주문 취소 모듈

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

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

    정책을 작성할 때 이것이 필요한 시나리오는 다음과 같습니다.

    현재 보류 중인 모든 주문을 취소합니다.

    의심할 여지 없이 이를 위해서는 “주문 취소 모듈”을 사용해야 합니다. 주문 취소 모듈을 학습하는 동안 [5]를 사용하여 현재 거래 쌍의 위탁 주문에 대한 모듈을 얻고 이를 결합하여 이 기능을 달성할 수 있습니다.

    먼저, 모든 주문을 취소하는 것을 테스트하기 위해 주문을 하는 것은 그다지 명확하지 않습니다. 먼저 가격과 수량이 다른 두 개의 주문을 하여 두 주문을 구별합니다.

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    루프 유형 모듈의 “목록의 각 요소 탐색” 모듈을 사용하여 현재 보류 중인 주문 목록에 있는 주문을 탐색합니다. 거래 전략을 구축하기 위한 시각화 모듈 - 고급 탐색하는 동안 검색된 각 주문은 가변 모듈 주문에 할당됩니다(아래에 표시된 대로 가변 모듈 유형에서 생성됨): 거래 전략을 구축하기 위한 시각화 모듈 - 고급 도구 유형 모듈을 사용하세요: 거래 전략을 구축하기 위한 시각화 모듈 - 고급 주문 ID를 꺼내어 주문 취소 모듈의 테넌(오목한) 위치로 전달하면, 주문 취소 모듈이 주문 취소를 실행합니다.

    백테스트 실행: 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    JavaScript 정책 설명 사용:

    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를 기반으로 주문의 상세정보를 얻기 위한 모듈

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    이 모듈은 주문 ID 변수 모듈을 모티스와 테넌 위치에 연결하여 자세한 주문 정보를 반환할 수 있습니다.

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    실행 후 반환된 순서에 주의하세요: 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    [5] 예제의 실행 결과와 비교해보면, 인쇄된 주문은 별도의 주문 정보임을 알 수 있다.[] 대괄호로 묶었습니다. 예제 [5]는 목록을 반환하기 때문에 이 예제는 모듈에서 전달된 테넌 위치에 있는 ID 변수 모듈을 기반으로 얻은 단일 주문 정보를 반환합니다.

    위의 예는 JavaScript 정책을 실행하는 것과 동일합니다.

    function main () {
        var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
        Log(exchange.GetOrder(id))
    }
    
  • 8. 선물 거래 모듈

    위의 모듈을 하나씩 공부하고, 테스트 거래소를 상품 선물 거래로 설정하겠습니다.

    백테스팅 설정: 거래 전략을 구축하기 위한 시각화 모듈 - 고급 다음 예제에서는 이러한 설정을 백테스트합니다.

    • CTP상품선물과 선물회사 서버간의 연결상태를 판단하기 위한 모듈

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    상품 선물에는 개장 시간과 폐장 시간이 있습니다. 시장이 닫히면 연결할 수 없습니다.

    • 계약 모듈 설정

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    거래소 객체가 선물 거래소로 구성된 경우 계약을 설정하지 않고 시장 정보를 직접 가져오면 오류가 보고됩니다. 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    우리는 현재 메탄올의 주요 계약인 MA909로 계약을 설정했습니다. 거래 전략을 구축하기 위한 시각화 모듈 - 고급 이런 방식으로 MA909 계약의 현재 틱 시장에서 최신 가격 값을 얻을 수 있습니다.

    • 선물거래 주문방향 모듈 설정

    실행 순서 모듈에서 거래 전략을 구축하기 위한 시각화 모듈 - 고급
    선물 거래에는 다음과 같은 사항이 있으므로 주문 방향을 지정해야 합니다. 매수 : 롱 포지션을 오픈하다 매도 : 숏 포지션을 오픈하다 closebuy : 롱 포지션 종료 closesell : 숏 포지션 종료 4가지 방향(상품 선물에는 2가지 방향이 더 있습니다: closebuy_today는 오늘 롱 포지션을 마감하고, closesell_today는 오늘 숏 포지션을 마감합니다).

    예를 들어, 주문 모듈이 매수로 설정된 경우 롱 포지션을 열고 숏 포지션을 닫는다는 두 가지 의미가 있어 모호성이 발생합니다. 따라서 명확한 주문 방향을 설정하려면 “선물 거래 주문 방향 설정” 모듈이 필요합니다.

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

    백테스팅 결과: 거래 전략을 구축하기 위한 시각화 모듈 - 고급

    JavaScript 전략 코드와 같습니다.

      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("未连接商品期货前置机")
              }
              Sleep(1000)
          }
      }
    
  • 9. 암호화폐 선물 거래 모듈

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

    • OKEX를 예로 들면, 계약 코드는 다음과 같습니다.

      • this_week : 이번 주
      • next_week : 다음 주
      • 분기 : 분기
      • 스왑 : 영구
    • BitMEX :

      • XBTUSD
      • ETHUSD
    • 레버리지 모듈 설정

    거래 전략을 구축하기 위한 시각화 모듈 - 고급

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

      # 注意 : 回测不支持。
    

    JavaScript 전략에서와 같이:

      function main () {
          exchange.SetMarginLevel(10)
      }
    

시각화 예시 전략:

더 많은 전략은 https://www.fmz.com/square에서 확인할 수 있습니다.

이 시리즈의 다른 기사

지루한 프로그래밍도 빌딩 블록을 사용하면 쉽게 완성할 수 있습니다. 시도해보세요, 매우 흥미롭습니다!