본문으로 건너뛰기

Pine Script를 바이너리로 판매하는 기능은 계획 중입니다

  1. strategy.pine
    내가 작성하는 전략입니다. 이걸 넘기면 모든 걸 넘기는 셈입니다.
  2. strategy.cpp
    트랜스파일러가 이 전략으로 생성하는 C++입니다. 지금 내 머신에서 할 수 있습니다.
  3. strategy.so
    구매자가 실행하게 될 컴파일된 라이브러리입니다. 여기에 붙는 라이선스 관리는 계획 단계입니다.

컴파일 바이너리 배포 모델

계획은 이렇습니다. PineScript v6를 네이티브 .so 라이브러리로 컴파일하고, 구매자는 소스를 보지 않고 자기 데이터로 실행하며, 라이선스 제한은 직접 정합니다. 아직 아무것도 만들어지지 않았습니다.

오늘 Pine 전략을 파는 문제는 Pine이 소스라는 점입니다. 누군가에게 .pine 파일을 넘기면 로직, 파라미터, 엣지까지 전부 넘기는 셈입니다. 구매자가 수정하든, 되팔든, 공개하든 막을 방법이 없습니다. TradingView는 공개 스크립트의 소스를 숨길 수 있지만(보호 스크립트와 초대 전용 스크립트), 그러면 그 스크립트는 TradingView에서만 돌아갑니다.

MetaQuotes는 MQL5에서 컴파일 방식을 택했습니다. MQL5 Market에서는 .ex5 바이너리를 팝니다. 구매자는 컴파일된 파일을 내려받아 소스 없이 MetaTrader에서 자기 계정으로 실행합니다. 라이선스는 구매자의 머신에 묶이고, 활성화 횟수는 판매자가 정하며, 전달과 결제는 마켓플레이스가 처리합니다.

PineForge는 같은 모델을 Pine에 적용하려고 합니다. 전략을 C++로 트랜스파일한 뒤 .so 공유 라이브러리로 컴파일하고, 이 파일을 배포하는 방식입니다. 구매자는 PineForge 런타임으로 자기 데이터에서 실행하고, 런타임은 실행 전에 라이선스를 확인하게 됩니다. 라이선스 서버는 아직 없습니다.

트랜스파일과 컴파일은 지금도 로컬에서 돌아가므로(pineforge-release 이미지), 소스를 내 머신 밖으로 내보낼 필요가 없습니다. 컴파일된 라이브러리는 네이티브 머신 코드라 Pine보다 훨씬 읽기 어렵지만, 작정한 엔지니어라면 여전히 로직을 리버스 엔지니어링할 수 있습니다.

MQL5 Market은 2011년부터 이 모델로 운영돼 왔습니다. PineForge는 Pine에서 같은 모델을 위한 인프라가 되려고 합니다.

계획상의 라이선스 제한

계획대로라면 전략을 게시할 때 라이선스를 정하고, 런타임이 이를 강제합니다. 제한은 여섯 가지입니다.

기한형.
라이선스가 정한 날짜에 만료됩니다. 결제할 때마다 갱신되는 월 구독이 한 예입니다.
머신 바인딩.
라이선스는 머신 한 대에 묶이고, 다른 머신으로 옮기려면 판매자가 승인해야 합니다.
브로커 바인딩.
지정한 브로커나 거래소의 데이터로만 실행할 수 있습니다.
심볼 바인딩.
허용한 심볼과 타임프레임에서만 실행할 수 있으므로, 1h BTC-USD용으로 만든 전략이 다른 시장에서 평가받는 일이 없습니다.
입력 범위 바인딩.
구매자는 허용한 범위 안에서만 입력값을 조정할 수 있어서, 정확한 파라미터 값은 비공개로 남습니다.
언제든 철회.
차지백이 발생했을 때처럼 필요하면 라이선스를 철회할 수 있습니다. 그러면 다음 라이선스 확인이 실패하고 전략 실행이 멈춥니다.

계획 요약은 여기에서 볼 수 있습니다: /sell 페이지.

출시일은 아직 없습니다

솔직히 말씀드리면, 마켓플레이스(탐색, 구매, 구독, 평가, 분쟁 처리)는 계획 단계이고 출시일이 없습니다. 여기에 필요한 라이선스 서버, 판매자 도구, 결제 시스템도 아직 없습니다.

현재 상황:

  • 현재: 로컬 컴파일. pineforge-release 이미지는 지원되는 Pine v6 전략이라면 무엇이든 내 머신에서 트랜스파일하고 컴파일합니다. 파이프라인의 이 부분은 실제로 동작합니다.
  • 계획: 라이선스. 라이선스 발급, 그리고 런타임의 라이선스 확인.
  • 계획: 마켓플레이스. 등록된 전략의 탐색, 결제, 평점, 패리티 리포트.

이미 고객을 상대로 전략을 팔고 있고 이 기능이 필요하다면 판매자 대기자 명단에 등록하세요. 누구와 먼저 이야기할지 정하는 데 도움이 됩니다.

다음 단계