最近,多くの取引所が,先駆的な形でデジタル通貨オプションの取引機能を開設している.従来のオプションと同様に,オプション取引と先行取引は,多くの取引戦略と方法を形成するために組み合わせることができる.市場には多くのオープンソースの定量取引ツールがあるにもかかわらず,これらのツールには,基礎的なフレームワークを理解し,フレームワークを書くためのプログラミング言語を熟知し,または手動で複雑なデバッグ,構成,修正を実行する必要があることが多い.プログラム取引と定量取引の初心者にとっては非常に便利ではありません. 取引戦略に多くの時間を費やすべきであり,取引アイデアはプログラムデバッグとプログラミング言語学習に投資されています.
初期建築設計では,FMZ Quant (FMZ.COMFMZのプラットフォームは,ForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとForexとF
例えば,当期オプション契約のインデックス価格を得る必要があります.
Go言語で実装された:
package main
import "net/http"
import "io/ioutil"
import "fmt"
import "encoding/json"
func main() {
// Get ticker, access interface: https://www.deribit.com/api/v2/public/ticker?instrument_name=BTC-27DEC19-7250-P
resp, err := http.Get("https://www.deribit.com/api/v2/public/ticker?instrument_name=BTC-27DEC19-7250-P")
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
ret := string(body)
fmt.Println("This is just string data ticker:", ret)
fmt.Println("Need to convert to JSON format")
type js struct {
data interface{}
}
ticker := new(js)
json.Unmarshal([]byte(ret), &ticker.data)
fmt.Println("ticker:", ticker)
fmt.Println("index_price, marked price data in ticker:", ticker.data.(map[string]interface{})["result"].(map[string]interface{})["index_price"])
}
FMZのプラットフォームを使って 2つの簡単な文で完成しました
function main() {
exchange.IO("base", "https://test.deribit.com") # Switch to the demo offered by the exchange
exchange.SetContractType("BTC-3JAN20-7250-P") # Set up options contracts
var ticker = exchange.GetTicker() # Get options ticker
Log(ticker.Info.result.index_price) # Print the required data and observe
}
必要なデータをコードのほんの数行で入手するのは とても簡単です
これは,交換所の非署名公開 API インターフェイスにアクセスするだけです.署名されたプライベート インターフェイスにアクセスすることは,より複雑になります.
各インターフェースは 署名やパラメータ処理などを たくさん行う必要があります
strBody := ""
strQuery := ""
ts := toString(time.Now().UnixNano() / 1e6)
nonce := toString(time.Now().UnixNano() / 1e6)
uri := resource
if httpMethod == "GET" {
strQuery = encodeParams(params, false)
uri = fmt.Sprintf("%s?%s", resource, strQuery)
} else if httpMethod == "POST" {
if len(raw) > 0 && len(raw[0]) > 0 {
strBody = raw[0]
} else {
strBody = json_encode(params)
}
}
strRequestDate := fmt.Sprintf("%s\n%s\n%s\n", httpMethod, uri, strBody)
strToSign := fmt.Sprintf("%s\n%s\n%s", ts, nonce, strRequestDate)
h := hmac.New(sha256.New, []byte(p.secretKey))
h.Write([]byte(strToSign))
strSign := hex.EncodeToString(h.Sum(nil))
req := Request{
Method: httpMethod,
Uri: fmt.Sprintf("%s%s", p.apiBase, uri),
Timeout: p.timeout,
Body: strBody,
}
それだけでなく,市場,オーダー操作,およびコードライブラリへの同時同期アクセスを同期処理するために使用する必要がある場合,より複雑な同期同期処理ロジックを書く必要があります.注意を怠るとロックなどの論理設計問題も引き起こします.またチャート表示を使用する必要がある場合は,多くのライブラリを使用する方法を知る必要があります.プログラミング基盤を持つ定量トレーダーでさえ学ぶのに時間がかかります.しかし,これらの機能がカプセル化されており,設計されたコールインターフェースが非常にシンプルで使いやすいため,FMZ Quantプラットフォームを使用することははるかに簡単です.さまざまな要件の機能を実装するために非常に少ないコードを使用できます.
function main(){
exchange.IO("base", "https://test.deribit.com")
exchange.SetContractType("BTC-27DEC19-7250-P")
while(1){
var records = exchange.GetRecords()
Log(records)
$.PlotRecords(records, "K")
Sleep(1000)
}
}
プラットフォームが提供するテンプレートライブラリ"Plot Library"を使用して,K線グラフを簡単に描くことができます.
探求し開発すべき機能が もっとあります
上記のように直接go言語 (or python, etc) に実装される場合,新しい学生は直接落ち込む可能性があります>_< 例えば,Deribit オプション運用の戦略については,以下を参照してください.https://www.fmz.com/strategy/179475