本文へスキップ

Pine Scriptのバイナリ販売、計画中

  1. strategy.pine
    自分で書いた戦略。渡せば、すべてを渡すのと同じ。
  2. strategy.cpp
    トランスパイラが戦略から生成するC++。手元で今すぐ。
  3. strategy.so
    購入者が実行するバイナリ。ライセンス機能は計画中。

バイナリ配布モデル

構想はこうです。PineScript v6をネイティブの.soライブラリにコンパイルし、購入者はソースを見ることなく自分のデータで実行し、ライセンスの制限は販売者自身が設定します。ただし、まだ何も実装されていません。

今日Pine戦略を販売することの問題は、Pineがソースコードであるという点に尽きる。誰かに.pineファイルを渡せば、ロジックもパラメータもエッジも、すべてを渡したことになります。購入者がそれを改変したり、転売したり、公開したりするのを止める手段はありません。TradingViewでは公開スクリプトのソースを非表示にできますが(保護スクリプトと招待専用スクリプト)、その場合スクリプトはTradingView上でしか動きません。

MetaQuotesはMQL5でコンパイル方式を採用しました。MQL5マーケットでは、.ex5バイナリを販売します。購入者はコンパイル済みのファイルをダウンロードし、ソースを見ることなく、MetaTraderで自分の口座に対して実行します。ライセンスは購入者のマシンに紐付けられ、アクティベーション数は販売者が設定します。配信と支払いはマーケットプレイスが処理します。

PineForgeは、同じモデルをPineに適用することを計画しています。戦略はC++にトランスパイルされ、.so共有ライブラリにコンパイルされます。これが配布物になります。購入者はPineForgeのランタイムを使って自分のデータで実行し、ランタイムは実行前にライセンスを確認する想定です。ライセンスサーバーはまだ存在しません。

トランスパイルとコンパイルは、現在すでにローカルで実行できます(pineforge-releaseイメージ)。そのため、ソースが手元のマシンから出る必要はありません。コンパイル済みのライブラリはネイティブのマシンコードで、Pineよりはるかに読みにくくなりますが、本気で解析しようとするエンジニアなら、ロジックをリバースエンジニアリングすることも可能です。

MQL5マーケットは、2011年からこのモデルで運営されています。PineForgeは、同じモデルをPineで実現するためのインフラとなる構想です。

計画中のライセンス制限

計画では、戦略を公開する際に販売者がライセンスを定義し、ランタイムがそれを適用します。制限は次の6つです。

期限付き。
ライセンスは指定した日に失効します。たとえば、支払いのたびに更新する月額サブスクリプションに使えます。
マシン紐付け。
ライセンスは1台のマシンに紐付けられ、別のマシンに移すには販売者の承認が必要です。
ブローカー紐付け。
ライセンスは、指定したブローカーや取引所のデータでのみ有効です。
シンボル紐付け。
ライセンスは許可したシンボルと時間足でのみ有効なため、1時間足のBTC-USD向けに作った戦略が、ほかの市場で評価されることはありません。
入力範囲紐付け。
購入者が入力パラメータを調整できるのは許可した範囲内だけなので、正確なパラメータは非公開のままです。
いつでも失効。
チャージバックの後などに、ライセンスを失効させることができます。次回のライセンス確認が失敗し、戦略は実行されなくなります。

計画の概要については、/sellページ。

提供開始日は未定

率直に言うと、マーケットプレイス(閲覧、購入、サブスクリプション、評価、紛争対応)は計画段階で、提供開始日は決まっていません。必要となるライセンスサーバー、販売者向けツール、支払い機能は、まだ存在しません。

現状は次のとおりです。

  • 現在:ローカルでコンパイル。pineforge-releaseイメージは、対応しているPine v6の戦略であれば、お手元のマシンでトランスパイルとコンパイルを行います。パイプラインのこの部分は実際に動いています。
  • 計画中:ライセンス機能。ライセンスの発行と、ランタイムでのライセンス確認。
  • 計画中:マーケットプレイス。出品された戦略の検索、支払い、評価、パリティレポート。

すでにオーディエンスに向けて戦略を販売していて、この仕組みを使いたい方は、販売者向けウェイトリストにご登録ください。最初にお話しする相手を決める参考にします。

次のステップ