{"id":85,"date":"2025-06-16T06:37:46","date_gmt":"2025-06-16T06:37:46","guid":{"rendered":"https:\/\/blog.alltick.co\/ja-jp\/?p=85"},"modified":"2025-06-16T06:37:48","modified_gmt":"2025-06-16T06:37:48","slug":"algo-trading-strategies-in-cryptocurrency","status":"publish","type":"post","link":"https:\/\/blog.alltick.co\/ja-jp\/algo-trading-strategies-in-cryptocurrency\/","title":{"rendered":"\u4eee\u60f3\u901a\u8ca8\u306b\u304a\u3051\u308b\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u53d6\u5f15\u6226\u7565"},"content":{"rendered":"\n<p>\u4eee\u60f3\u901a\u8ca8\u53d6\u5f15\u306b\u304a\u3044\u3066\u3001\u30af\u30aa\u30f3\u30c4\uff08\u91cf\u7684\uff09\u6226\u7565\u306f\u5e83\u304f\u8b70\u8ad6\u3055\u308c\u3066\u3044\u308b\u30c8\u30d4\u30c3\u30af\u3067\u3059\u3002\u53d6\u5f15\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u5316\u30fb\u30b7\u30b9\u30c6\u30e0\u5316\u3059\u308b\u3053\u3068\u3067\u3001\u30c8\u30ec\u30fc\u30c0\u30fc\u306f\u3088\u308a\u52b9\u7387\u7684\u306b\u53d6\u5f15\u3092\u5b9f\u884c\u3057\u3001\u5e02\u5834\u306e\u5909\u52d5\u306b\u3082\u7d20\u65e9\u304f\u5bfe\u5fdc\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u4eee\u60f3\u901a\u8ca8\u306e\u6587\u8108\u306b\u304a\u3051\u308b\u9ad8\u983b\u5ea6\u53d6\u5f15\uff08HFT\uff09\u6226\u7565\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>HFT\u306f\u3001\u8d85\u9ad8\u901f\u306a\u6ce8\u6587\u57f7\u884c\u3068\u8cb7\u5024\u30fb\u58f2\u5024\u306e\u30b9\u30d7\u30ec\u30c3\u30c9\uff08\u5dee\uff09\u3092\u5229\u7528\u3057\u3066\u5229\u76ca\u3092\u5f97\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u304a\u308a\u3001\u4eee\u60f3\u901a\u8ca8\u306e\u4e16\u754c\u3067\u3082\u6700\u3082\u6ce8\u76ee\u3055\u308c\u3066\u3044\u308b\u6226\u7565\u306e\u4e00\u3064\u3067\u3059\u3002\u672c\u8a18\u4e8b\u3067\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u4e00\u822c\u7684\u306a\u9ad8\u983b\u5ea6\u53d6\u5f15\u6226\u7565\u3092\u53d6\u308a\u4e0a\u3052\u3001\u7406\u89e3\u3068\u5b9f\u88c5\u3092\u52a9\u3051\u308b\u305f\u3081\u306e\u30b3\u30fc\u30c9\u4f8b\u3082\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. \u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ad\u30f3\u30b0\u6226\u7565<\/strong><\/h2>\n\n\n\n<p>\u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ad\u30f3\u30b0\u306f\u3001\u9ad8\u983b\u5ea6\u53d6\u5f15\u6226\u7565\u306e\u4e00\u7a2e\u3067\u3042\u308a\u3001\u6d41\u52d5\u6027\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u5229\u76ca\u3092\u4e0a\u3052\u308b\u3053\u3068\u3092\u76ee\u7684\u3068\u3057\u3066\u3044\u307e\u3059\u3002\u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ab\u30fc\u306f\u3001\u8cb7\u3044\u6ce8\u6587\u3068\u58f2\u308a\u6ce8\u6587\u3092\u540c\u6642\u306b\u51fa\u3059\u3053\u3068\u3067\u5e02\u5834\u306e\u53d6\u5f15\u3092\u6d3b\u6027\u5316\u3055\u305b\u3001\u8cb7\u5024\u3068\u58f2\u5024\u306e\u30b9\u30d7\u30ec\u30c3\u30c9\u304b\u3089\u5229\u76ca\u3092\u5f97\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ad\u30f3\u30b0\u306e\u6838\u3068\u306a\u308b\u8003\u3048\u65b9\u306f\u3001\u8cb7\u3044\u624b\u3068\u58f2\u308a\u624b\u306e\u9593\u306b\u7acb\u3063\u3066\u4e21\u30b5\u30a4\u30c9\u306e\u4fa1\u683c\u3092\u63d0\u793a\u3057\u3001\u53d6\u5f15\u3092\u6210\u7acb\u3055\u305b\u308b\u300c\u6a4b\u6e21\u3057\u300d\u306e\u5f79\u5272\u3092\u679c\u305f\u3059\u3053\u3068\u3067\u3059\u3002\u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ab\u30fc\u306f\u3001\u6d41\u52d5\u6027\u3092\u4fdd\u3061\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u304b\u3089\u306e\u5229\u76ca\u3092\u6700\u5927\u5316\u3059\u308b\u305f\u3081\u306b\u3001\u6ce8\u6587\u4fa1\u683c\u3084\u6570\u91cf\u3092\u983b\u7e41\u306b\u8abf\u6574\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u4e3b\u306a\u7279\u5fb4\uff1a<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u9ad8\u901f\u306a\u6ce8\u6587\u57f7\u884c<\/strong>\uff1a\u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ab\u30fc\u306f\u3001\u4fa1\u683c\u3084\u6ce8\u6587\u91cf\u3092\u8fc5\u901f\u306b\u8abf\u6574\u3067\u304d\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u9ad8\u3044\u81ea\u52d5\u5316<\/strong>\uff1a\u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ad\u30f3\u30b0\u6226\u7565\u306f\u901a\u5e38\u3001\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306b\u57fa\u3065\u304d\u9ad8\u3044\u81ea\u52d5\u5316\u304c\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30b9\u30d7\u30ec\u30c3\u30c9\u306b\u3088\u308b\u5229\u76ca<\/strong>\uff1a\u8cb7\u5024\u3068\u58f2\u5024\u306e\u5dee\u304b\u3089\u5229\u76ca\u3092\u5f97\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u5b9f\u88c5\u30b9\u30c6\u30c3\u30d7\uff1a<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u5e02\u5834\u4fa1\u683c\u306e\u53d6\u5f97<\/strong>\uff1a\u5e02\u5834\u30c7\u30fc\u30bf\u3092\u76e3\u8996\u3057\u3066\u6700\u65b0\u306e\u8cb7\u5024\u30fb\u58f2\u5024\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u4fa1\u683c\u6226\u7565\u306e\u8a2d\u5b9a<\/strong>\uff1a\u5e02\u5834\u72b6\u6cc1\u3084\u6226\u7565\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u57fa\u3065\u3044\u3066\u3001\u8cb7\u5024\u30fb\u58f2\u5024\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u6ce8\u6587\u306e\u51fa\u3057\u5165\u308c<\/strong>\uff1a\u7b97\u51fa\u3055\u308c\u305f\u4fa1\u683c\u3068\u6570\u91cf\u306b\u57fa\u3065\u3044\u3066\u6ce8\u6587\u3092\u5e02\u5834\u306b\u51fa\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u76e3\u8996\u3068\u8abf\u6574<\/strong>\uff1a\u5e02\u5834\u306e\u5909\u5316\u3092\u7d99\u7d9a\u7684\u306b\u8ffd\u8de1\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6ce8\u6587\u3092\u8abf\u6574\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1.1 \u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ad\u30f3\u30b0\u6226\u7565\u306eJava\u30b3\u30fc\u30c9\u4f8b<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.util.Random;\n\npublic class MarketMakerStrategy {\n    private double buyPrice; \n    private double sellPrice; \n    private double spread; \n    private double midPrice; \n    private double minSpread; \n    private double maxSpread; \n    private double minQty; \n    private double maxQty; \n    private Random random;\n\n    public MarketMakerStrategy(double initialBuyPrice, double initialSellPrice, double minSpread, double maxSpread, double minQty, double maxQty) {\n        this.buyPrice = initialBuyPrice;\n        this.sellPrice = initialSellPrice;\n        this.minSpread = minSpread;\n        this.maxSpread = maxSpread;\n        this.minQty = minQty;\n        this.maxQty = maxQty;\n        this.random = new Random();\n        updateMidPrice();\n        updateSpread();\n    }\n\n    private void updateMidPrice() {\n        midPrice = (buyPrice + sellPrice) \/ 2;\n    }\n\n    private void updateSpread() {\n        spread = random.nextDouble() * (maxSpread - minSpread) + minSpread;\n    }\n\n    private double generateQty() {\n        return random.nextDouble() * (maxQty - minQty) + minQty;\n    }\n\n    public void updateBuyPrice(double newBuyPrice) {\n        buyPrice = newBuyPrice;\n        updateMidPrice();\n        updateSpread();\n    }\n\n    public void updateSellPrice(double newSellPrice) {\n        sellPrice = newSellPrice;\n        updateMidPrice();\n        updateSpread();\n    }\n\n    public void generateBuyOrder() {\n        double buyQty = generateQty();\n        double buyOrderPrice = midPrice - spread \/ 2; \n        System.out.println(\"Generated Buy Order - Price: \" + buyOrderPrice + \", Quantity: \" + buyQty);\n    }\n\n    public void generateSellOrder() {\n        double sellQty = generateQty();\n        double sellOrderPrice = midPrice + spread \/ 2; \n        System.out.println(\"Generated Sell Order - Price: \" + sellOrderPrice + \", Quantity: \" + sellQty);\n    }\n\n    public static void main(String[] args) {\n        MarketMakerStrategy strategy = new MarketMakerStrategy(100, 102, 0.5, 1.5, 10, 50);\n\n        for (int i = 0; i &lt; 10; i++) {\n            double newBuyPrice = strategy.buyPrice + (strategy.random.nextDouble() - 0.5) * 2;\n            double newSellPrice = strategy.sellPrice + (strategy.random.nextDouble() - 0.5) * 2;\n            strategy.updateBuyPrice(newBuyPrice);\n            strategy.updateSellPrice(newSellPrice);\n            strategy.generateBuyOrder();\n            strategy.generateSellOrder();\n        }\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1.2 \u30de\u30fc\u30b1\u30c3\u30c8\u30e1\u30a4\u30ad\u30f3\u30b0\u6226\u7565\u306ePython\u30b3\u30fc\u30c9\u4f8b<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import random\n\nclass MarketMakerStrategy:\n    def __init__(self, initial_buy_price, initial_sell_price, min_spread, max_spread, min_qty, max_qty):\n        self.buy_price = initial_buy_price\n        self.sell_price = initial_sell_price\n        self.min_spread = min_spread\n        self.max_spread = max_spread\n        self.min_qty = min_qty\n        self.max_qty = max_qty\n        self.random = random.Random()\n        self.mid_price = (self.buy_price + self.sell_price) \/ 2\n        self.spread = self.random.uniform(self.min_spread, self.max_spread)\n\n    def update_prices(self, new_buy_price, new_sell_price):\n        self.buy_price = new_buy_price\n        self.sell_price = new_sell_price\n        self.mid_price = (self.buy_price + self.sell_price) \/ 2\n        self.spread = self.random.uniform(self.min_spread, self.max_spread)\n\n    def generate_buy_order(self):\n        buy_qty = self.random.uniform(self.min_qty, self.max_qty)\n        buy_order_price = self.mid_price - self.spread \/ 2\n        print(f\"Generated Buy Order - Price: {buy_order_price}, Quantity: {buy_qty}\")\n\n    def generate_sell_order(self):\n        sell_qty = self.random.uniform(self.min_qty, self.max_qty)\n        sell_order_price = self.mid_price + self.spread \/ 2\n        print(f\"Generated Sell Order - Price: {sell_order_price}, Quantity: {sell_qty}\")\n\nstrategy = MarketMakerStrategy(100, 102, 0.5, 1.5, 10, 50)\n\nfor i in range(10):\n    new_buy_price = strategy.buy_price + (strategy.random.random() - 0.5) * 2\n    new_sell_price = strategy.sell_price + (strategy.random.random() - 0.5) * 2\n    strategy.update_prices(new_buy_price, new_sell_price)\n    strategy.generate_buy_order()\n    strategy.generate_sell_order()<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. \u30a2\u30fc\u30d3\u30c8\u30e9\u30fc\u30b8\u53d6\u5f15\uff08\u88c1\u5b9a\u53d6\u5f15\uff09<\/strong><\/h2>\n\n\n\n<p>\u30a2\u30fc\u30d3\u30c8\u30e9\u30fc\u30b8\u53d6\u5f15\u3068\u306f\u3001\u7570\u306a\u308b\u53d6\u5f15\u6240\u3084\u901a\u8ca8\u30da\u30a2\u9593\u306e\u4fa1\u683c\u5dee\u3092\u5229\u7528\u3057\u3066\u5229\u76ca\u3092\u5f97\u308b\u624b\u6cd5\u3067\u3059\u3002\u4eee\u60f3\u901a\u8ca8\u5e02\u5834\u3067\u306f\u3001\u8907\u6570\u306e\u53d6\u5f15\u6240\u9593\u3067\u4fa1\u683c\u306b\u3070\u3089\u3064\u304d\u304c\u751f\u3058\u308b\u3053\u3068\u304c\u3088\u304f\u3042\u308a\u3001\u3053\u306e\u5dee\u3092\u5229\u7528\u3057\u3066\u300c\u5b89\u304f\u8cb7\u3063\u3066\u9ad8\u304f\u58f2\u308b\u300d\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u5b9f\u88c5\u30b9\u30c6\u30c3\u30d7\uff1a<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fa1\u683c\u30c7\u30fc\u30bf\u306e\u521d\u671f\u5316<\/strong>\uff1a2\u3064\u306e\u53d6\u5f15\u6240\u306e\u4fa1\u683c\u30c7\u30fc\u30bf\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30b7\u30e7\u30f3\u3057\u307e\u3059\u3002\u5b9f\u969b\u306e\u904b\u7528\u3067\u306f\u3001\u53d6\u5f15\u6240API\u304b\u3089\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3001Map\u306a\u3069\u306e\u30c7\u30fc\u30bf\u69cb\u9020\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u4fa1\u683c\u306e\u6bd4\u8f03<\/strong>\uff1a\u5404\u4eee\u60f3\u901a\u8ca8\u306b\u3064\u3044\u3066\u30012\u3064\u306e\u53d6\u5f15\u6240\u9593\u3067\u4fa1\u683c\u5dee\u304c\u3042\u308b\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30a2\u30fc\u30d3\u30c8\u30e9\u30fc\u30b8\u306e\u6a5f\u4f1a\u3092\u8a08\u7b97<\/strong>\uff1a\u3042\u308b\u30b3\u30a4\u30f3\u304c\u53d6\u5f15\u6240A\u3067\u5b89\u304f\u3001\u53d6\u5f15\u6240B\u3067\u9ad8\u3044\u5834\u5408\u3001\u7406\u8ad6\u4e0a\u306e\u5229\u76ca\u3092\u8a08\u7b97\u3057\u3001\u30ec\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h4 class=\"wp-block-heading\">\u5b9f\u884c\u30d7\u30ed\u30bb\u30b9\uff1a<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u53d6\u5f15\u6240A\u306e\u30c7\u30fc\u30bf\u3092\u30eb\u30fc\u30d7\u3057\u3001\u540c\u3058\u8cc7\u7523\u304c\u53d6\u5f15\u6240B\u306b\u3082\u5b58\u5728\u3059\u308b\u304b\u78ba\u8a8d\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5b58\u5728\u3059\u308b\u5834\u5408\u3001\u4fa1\u683c\u5dee\uff08\u53d6\u5f15\u6240B\u306e\u4fa1\u683c \u2212 \u53d6\u5f15\u6240A\u306e\u4fa1\u683c\uff09\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5dee\u304c\u6b63\uff08\u5229\u76ca\u304c\u51fa\u308b\uff09\u3067\u3042\u308c\u3070\u3001\u305d\u306e\u30b3\u30a4\u30f3\u540d\u3001\u4e21\u53d6\u5f15\u6240\u306e\u4fa1\u683c\u3001\u60f3\u5b9a\u3055\u308c\u308b\u5229\u76ca\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2.1 \u30a2\u30fc\u30d3\u30c8\u30e9\u30fc\u30b8\u53d6\u5f15\u306eJava\u30b3\u30fc\u30c9\u4f8b<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.util.HashMap;\nimport java.util.Map;\n\npublic class ArbitrageTradingStrategy {\n    private Map&lt;String, Double> exchangeA; \n    private Map&lt;String, Double> exchangeB; \n\n    public ArbitrageTradingStrategy() {\n        this.exchangeA = new HashMap&lt;>();\n        this.exchangeB = new HashMap&lt;>();\n        exchangeA.put(\"BTC\", 10000.0);\n        exchangeA.put(\"ETH\", 500.0);\n        exchangeB.put(\"BTC\", 10100.0);\n        exchangeB.put(\"ETH\", 510.0);\n    }\n\n    public void executeArbitrage() {\n        for (String currency : exchangeA.keySet()) {\n            if (exchangeB.containsKey(currency)) {\n                double priceDifference = exchangeB.get(currency) - exchangeA.get(currency);\n                if (priceDifference > 0) {\n                    System.out.println(\"Arbitrage Opportunity: Buy \" + currency + \" on Exchange A, Sell on Exchange B. Profit: \" + priceDifference);\n                }\n            }\n        }\n    }\n\n    public static void main(String[] args) {\n        ArbitrageTradingStrategy strategy = new ArbitrageTradingStrategy();\n        strategy.executeArbitrage();\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2.2 \u30a2\u30fc\u30d3\u30c8\u30e9\u30fc\u30b8\u53d6\u5f15\u306ePython\u30b3\u30fc\u30c9\u4f8b<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.util.HashMap;\nimport java.util.Map;\n\npublic class ArbitrageTradingStrategy {\n    private Map&lt;String, Double> exchangeA;\n    private Map&lt;String, Double> exchangeB;\n\n    public ArbitrageTradingStrategy() {\n        this.exchangeA = new HashMap&lt;>();\n        this.exchangeB = new HashMap&lt;>();\n        exchangeA.put(\"BTC\", 10000.0);\n        exchangeA.put(\"ETH\", 500.0);\n        exchangeB.put(\"BTC\", 10100.0);\n        exchangeB.put(\"ETH\", 510.0);\n    }\n\n    public void executeArbitrage() {\n        for (String currency : exchangeA.keySet()) {\n            if (exchangeB.containsKey(currency)) {\n                double priceDifference = exchangeB.get(currency) - exchangeA.get(currency);\n                if (priceDifference > 0) {\n                    System.out.println(\"Arbitrage Opportunity: Buy \" + currency + \" on Exchange A, Sell on Exchange B. Profit: \" + priceDifference);\n                }\n            }\n        }\n    }\n\n    public static void main(String[] args) {\n        ArbitrageTradingStrategy strategy = new ArbitrageTradingStrategy();\n        strategy.executeArbitrage();\n    }\n}<\/pre>\n\n\n\n<p>\u30a2\u30fc\u30d3\u30c8\u30e9\u30fc\u30b8\u53d6\u5f15\u6226\u7565\u30af\u30e9\u30b9\uff08<code>ArbitrageTradingStrategy<\/code>\uff09\u3067\u306f\u30012\u3064\u306e\u53d6\u5f15\u6240\u306b\u304a\u3051\u308b\u4fa1\u683c\u30c7\u30fc\u30bf\u3092\u521d\u671f\u5316\u3057\u3001<code>execute_arbitrage<\/code> \u30e1\u30bd\u30c3\u30c9\u3092\u7528\u3044\u3066\u5229\u76ca\u306e\u51fa\u308b\u30a2\u30fc\u30d3\u30c8\u30e9\u30fc\u30b8\u6a5f\u4f1a\u304c\u3042\u308b\u304b\u3069\u3046\u304b\u3092\u30c1\u30a7\u30c3\u30af\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. \u677f\u60c5\u5831\u306e\u30a2\u30f3\u30d0\u30e9\u30f3\u30b9\uff08\u4e0d\u5747\u8861\uff09\u76e3\u8996<\/strong><\/h2>\n\n\n\n<p>\u677f\u60c5\u5831\u306e\u30a2\u30f3\u30d0\u30e9\u30f3\u30b9\u76e3\u8996\u3068\u306f\u3001\u8cb7\u3044\u6ce8\u6587\u3068\u58f2\u308a\u6ce8\u6587\u306e\u91cf\u3092\u76e3\u8996\u3057\u3001\u305d\u306e\u4e0d\u5747\u8861\u306b\u57fa\u3065\u3044\u3066\u58f2\u8cb7\u3092\u884c\u3046\u6226\u7565\u3067\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u8cb7\u3044\u6ce8\u6587\u304c\u58f2\u308a\u6ce8\u6587\u3092\u5927\u304d\u304f\u4e0a\u56de\u3063\u3066\u3044\u308b\u5834\u5408\u3001\u4fa1\u683c\u306e\u4e0a\u6607\u304c\u4e88\u6e2c\u3055\u308c\u308b\u305f\u3081\u3001\u8cb7\u3044\u6ce8\u6587\u3092\u51fa\u3059\u5224\u65ad\u6750\u6599\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3.1 Java\u30b3\u30fc\u30c9\u4f8b<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.util.Random;\n\npublic class OrderBookImbalanceTrackingStrategy {\n    private double buyOrders;\n    private double sellOrders;\n    private double imbalanceThreshold;\n    private Random random;\n\n    public OrderBookImbalanceTrackingStrategy(double imbalanceThreshold) {\n        this.imbalanceThreshold = imbalanceThreshold;\n        this.random = new Random();\n        this.buyOrders = random.nextDouble() * 100;\n        this.sellOrders = random.nextDouble() * 100;\n    }\n\n    public void updateOrderBook() {\n        this.buyOrders = random.nextDouble() * 100;\n        this.sellOrders = random.nextDouble() * 100;\n        checkImbalance();\n    }\n\n    private void checkImbalance() {\n        if (buyOrders > sellOrders + imbalanceThreshold) {\n            System.out.println(\"Imbalance detected: Buy orders significantly higher than sell orders. Execute buy trade.\");\n        } else if (sellOrders > buyOrders + imbalanceThreshold) {\n            System.out.println(\"Imbalance detected: Sell orders significantly higher than buy orders. Execute sell trade.\");\n        } else {\n            System.out.println(\"Order book is balanced. No trade execution needed.\");\n        }\n    }\n\n    public static void main(String[] args) {\n        OrderBookImbalanceTrackingStrategy strategy = new OrderBookImbalanceTrackingStrategy(10);\n\n        for (int i = 0; i &lt; 5; i++) {\n            strategy.updateOrderBook();\n        }\n    }\n}<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">\u5b9f\u88c5\u30b9\u30c6\u30c3\u30d7\uff1a<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u521d\u671f\u5316<\/strong>\uff1a\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u5185\u3067\u30a2\u30f3\u30d0\u30e9\u30f3\u30b9\u306e\u3057\u304d\u3044\u5024\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u677f\u304c\u300c\u4e0d\u5747\u8861\u300d\u3068\u307f\u306a\u3055\u308c\u308b\u57fa\u6e96\u3092\u6c7a\u3081\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u677f\u60c5\u5831\u306e\u66f4\u65b0\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8<\/strong>\uff1a<code>updateOrderBook<\/code> \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u677f\u60c5\u5831\u306e\u66f4\u65b0\u3092\u30b7\u30df\u30e5\u30ec\u30fc\u30c8\u3057\u307e\u3059\u3002\u5b9f\u969b\u306e\u53d6\u5f15\u3067\u306f\u3001\u53d6\u5f15\u6240\u306eAPI\u3084WebSocket\u306a\u3069\u304b\u3089\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u30a2\u30f3\u30d0\u30e9\u30f3\u30b9\u306e\u30c1\u30a7\u30c3\u30af<\/strong>\uff1a<code>checkImbalance<\/code> \u30e1\u30bd\u30c3\u30c9\u306b\u3088\u308a\u3001\u8cb7\u3044\u6ce8\u6587\u3068\u58f2\u308a\u6ce8\u6587\u306e\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u6bd4\u8f03\u3057\u307e\u3059\u3002\u8cb7\u3044\u6ce8\u6587\u304c\u5927\u304d\u304f\u4e0a\u56de\u3063\u3066\u3044\u308c\u3070\u300c\u8cb7\u3044\u300d\u30b7\u30b0\u30ca\u30eb\u3001\u9006\u306b\u58f2\u308a\u6ce8\u6587\u304c\u591a\u3051\u308c\u3070\u300c\u58f2\u308a\u300d\u30b7\u30b0\u30ca\u30eb\u3068\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u53d6\u5f15\u306e\u5b9f\u884c<\/strong>\uff1a\u691c\u51fa\u3055\u308c\u305f\u30a2\u30f3\u30d0\u30e9\u30f3\u30b9\u306b\u5fdc\u3058\u3066\u58f2\u8cb7\u3092\u884c\u3044\u307e\u3059\u3002\u3053\u306e\u7c21\u6613\u7684\u306a\u4f8b\u3067\u306f\u3001\u5b9f\u969b\u306e\u6ce8\u6587\u3067\u306f\u306a\u304f\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u51fa\u529b\u306b\u3068\u3069\u3081\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u7e70\u308a\u8fd4\u3057\u51e6\u7406<\/strong>\uff1a\u677f\u60c5\u5831\u3092\u7d99\u7d9a\u7684\u306b\u76e3\u8996\u30fb\u66f4\u65b0\u3057\u3001\u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\u5185\u3067\u4e0d\u5747\u8861\u306e\u30c1\u30a7\u30c3\u30af\u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3.2 Python\u30b3\u30fc\u30c9\u4f8b<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import random\n\nclass OrderBookImbalanceTrackingStrategy:\n    def __init__(self, imbalance_threshold):\n        self.imbalance_threshold = imbalance_threshold\n        self.random = random.Random()\n        self.buy_orders = self.random.uniform(50, 100)\n        self.sell_orders = self.random.uniform(50, 100) \n\n\n    def update_order_book(self):\n        self.buy_orders = self.random.uniform(50, 100) \n        self.sell_orders = self.random.uniform(50, 100) \n        self.check_imbalance()\n\n    def check_imbalance(self):\n        if self.buy_orders > self.sell_orders + self.imbalance_threshold:\n            print(\"Imbalance detected: Buy orders significantly higher than sell orders. Execute buy trade.\")\n        elif self.sell_orders > self.buy_orders + self.imbalance_threshold:\n            print(\"Imbalance detected: Sell orders significantly higher than buy orders. Execute sell trade.\")\n        else:\n            print(\"Order book is balanced. No trade execution needed.\")\n\nstrategy = OrderBookImbalanceTrackingStrategy(10)  \n\nfor i in range(5):\n    strategy.update_order_book()<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. \u30c6\u30af\u30cb\u30ab\u30eb\u6307\u6a19\u306b\u57fa\u3065\u304f\u53d6\u5f15\u6226\u7565<\/strong><\/h2>\n\n\n\n<p>\u3053\u306e\u6226\u7565\u3067\u306f\u3001\u79fb\u52d5\u5e73\u5747\uff08MA\uff09\u3084\u76f8\u5bfe\u529b\u6307\u6570\uff08RSI\uff09\u306a\u3069\u306e\u30c6\u30af\u30cb\u30ab\u30eb\u6307\u6a19\u3092\u7528\u3044\u3066\u4fa1\u683c\u30d1\u30bf\u30fc\u30f3\u3092\u7279\u5b9a\u3057\u3001\u53d6\u5f15\u306e\u610f\u601d\u6c7a\u5b9a\u3092\u884c\u3044\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u6307\u6a19\u306b\u6025\u6fc0\u306a\u5909\u5316\u304c\u898b\u3089\u308c\u305f\u5834\u5408\u3001\u8fc5\u901f\u306a\u58f2\u8cb7\u3092\u884c\u3046\u304d\u3063\u304b\u3051\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u5b9f\u88c5\u30b9\u30c6\u30c3\u30d7\uff1a<\/h4>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>\u4fa1\u683c\u30c7\u30fc\u30bf\u306e\u6e96\u5099<\/strong>\uff1a<br>\u3000\u904e\u53bb\u306e\u4fa1\u683c\u30c7\u30fc\u30bf\uff08\u4f8b\uff1aAlltick API\u3092\u901a\u3058\u3066\u53d6\u5f97\uff09\u3092\u914d\u5217\u306b\u4fdd\u5b58\u3057\u3001\u5404\u7a2e\u6307\u6a19\u306e\u8a08\u7b97\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u79fb\u52d5\u5e73\u5747\u306e\u8a08\u7b97<\/strong>\uff1a<br>\u3000\u30b9\u30e9\u30a4\u30c7\u30a3\u30f3\u30b0\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u4f7f\u3063\u3066\u4fa1\u683c\u30c7\u30fc\u30bf\u3092\u5e73\u6ed1\u5316\u3057\u3001\u30c8\u30ec\u30f3\u30c9\u3092\u8b58\u5225\u3057\u307e\u3059\u3002\u5404\u30bf\u30a4\u30e0\u30b9\u30c6\u30c3\u30d7\u306b\u304a\u3051\u308b\u5e73\u5747\u4fa1\u683c\u3092\u7b97\u51fa\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>RSI\u306e\u8a08\u7b97<\/strong>\uff1a<br>\u3000RSI\u306f\u3001\u4fa1\u683c\u5909\u52d5\u306e\u901f\u5ea6\u3068\u5927\u304d\u3055\u3092\u6e2c\u5b9a\u3059\u308b\u6307\u6a19\u3067\u3001\u4e00\u5b9a\u671f\u9593\u5185\u306e\u4e0a\u6607\u3068\u4e0b\u843d\u3092\u3082\u3068\u306b\u8a08\u7b97\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u53d6\u5f15\u30eb\u30fc\u30eb\u306e\u5b9a\u7fa9<\/strong>\uff1a<br>\u3000\u30c6\u30af\u30cb\u30ab\u30eb\u6307\u6a19\u306e\u5024\u306b\u57fa\u3065\u3044\u3066\u58f2\u8cb7\u30eb\u30fc\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u79fb\u52d5\u5e73\u5747\u306e\u30af\u30ed\u30b9\u30aa\u30fc\u30d0\u30fc\u3084\u3001RSI\u306e\u8cb7\u308f\u308c\u3059\u304e\uff0f\u58f2\u3089\u308c\u3059\u304e\u306e\u6c34\u6e96\u306a\u3069\u3067\u3059\u3002<\/li>\n\n\n\n<li><strong>\u58f2\u8cb7\u306e\u5b9f\u884c<\/strong>\uff1a<br>\u3000\u5b9a\u7fa9\u3057\u305f\u53d6\u5f15\u30eb\u30fc\u30eb\u306b\u5f93\u3063\u3066\u3001API\u3092\u901a\u3058\u3066\u58f2\u8cb7\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u624b\u6570\u6599\u3001\u6ce8\u6587\u91cf\u3001\u53d6\u5f15\u983b\u5ea6\u3001\u30ea\u30b9\u30af\u7ba1\u7406\u306a\u3069\u3082\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li><strong>\u76e3\u8996\u3068\u8abf\u6574<\/strong>\uff1a<br>\u3000\u5e02\u5834\u306e\u52d5\u5411\u3084\u53d6\u5f15\u306e\u5b9f\u884c\u72b6\u6cc1\u3092\u5e38\u6642\u76e3\u8996\u3057\u3001\u7d50\u679c\u3068\u5e02\u5834\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u6226\u7565\u3092\u8abf\u6574\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4.1 \u30c6\u30af\u30cb\u30ab\u30eb\u6307\u6a19\u306eJava\u30b3\u30fc\u30c9\u4f8b<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class TechnicalIndicatorTradingStrategy {\n    private double[] priceData;\n    private int windowSize; \n    private double[] movingAverage; \n    private double[] rsi;\n\n    public TechnicalIndicatorTradingStrategy(double[] priceData, int windowSize) {\n        this.priceData = priceData;\n        this.windowSize = windowSize;\n        this.movingAverage = calculateMovingAverage();\n        this.rsi = calculateRSI();\n    }\n\n    private double[] calculateMovingAverage() {\n        double[] ma = new double[priceData.length - windowSize + 1];\n        for (int i = 0; i &lt; ma.length; i++) {\n            double sum = 0;\n            for (int j = i; j &lt; i + windowSize; j++) {\n                sum += priceData[j];\n            }\n            ma[i] = sum \/ windowSize;\n        }\n        return ma;\n    }\n\n    private double[] calculateRSI() {\n        double[] rsi = new double[priceData.length - windowSize + 1];\n        double[] priceChange = new double[priceData.length - 1];\n        for (int i = 0; i &lt; priceChange.length; i++) {\n            priceChange[i] = priceData[i + 1] - priceData[i];\n        }\n        for (int i = 0; i &lt; rsi.length; i++) {\n            double sumGain = 0, sumLoss = 0;\n            for (int j = i; j &lt; i + windowSize; j++) {\n                if (priceChange[j] > 0) {\n                    sumGain += priceChange[j];\n                } else {\n                    sumLoss -= priceChange[j];\n                }\n            }\n            double avgGain = sumGain \/ windowSize;\n            double avgLoss = sumLoss \/ windowSize;\n            double rs = avgGain \/ avgLoss;\n            rsi[i] = 100 - (100 \/ (1 + rs));\n        }\n        return rsi;\n    }\n\n    public void executeStrategy() {\n    }\n\n    public static void main(String[] args) {\n        double[] priceData = {100, 105, 110, 115, 120, 115, 110, 105, 100};\n        int windowSize = 3;\n\n        TechnicalIndicatorTradingStrategy strategy = new TechnicalIndicatorTradingStrategy(priceData, windowSize);\n        strategy.executeStrategy();\n    }\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4.2 \u30c6\u30af\u30cb\u30ab\u30eb\u6307\u6a19\u306ePython\u30b3\u30fc\u30c9\u4f8b<\/strong><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import numpy as np\n\nclass TechnicalIndicatorTradingStrategy:\n    def __init__(self, price_data, window_size):\n        self.price_data = price_data\n        self.window_size = window_size\n        self.moving_average = self.calculate_moving_average()\n        self.rsi = self.calculate_rsi()\n\n    def calculate_moving_average(self):\n        moving_average = np.convolve(self.price_data, np.ones(self.window_size) \/ self.window_size, mode='valid')\n        return moving_average\n\n    def calculate_rsi(self):\n        deltas = np.diff(self.price_data)\n        gain = deltas.copy()\n        loss = deltas.copy()\n        gain[gain &lt; 0] = 0\n        loss[loss > 0] = 0\n        avg_gain = np.mean(gain[:self.window_size])\n        avg_loss = -np.mean(loss[:self.window_size])\n        rsi = np.zeros_like(self.price_data)\n        rsi[:self.window_size] = 100. - 100. \/ (1. + avg_gain \/ avg_loss)\n        for i in range(self.window_size, len(self.price_data)):\n            delta = deltas[i - 1]  # price change\n            gain_value = max(0, delta)\n            loss_value = -min(0, delta)\n            avg_gain = (avg_gain * (self.window_size - 1) + gain_value) \/ self.window_size\n            avg_loss = (avg_loss * (self.window_size - 1) + loss_value) \/ self.window_size\n            rs = avg_gain \/ avg_loss\n            rsi[i] = 100. - 100. \/ (1. + rs)\n        return rsi\n\n\n    def execute_strategy(self):\n\n        pass\n\nprice_data = np.array([100, 105, 110, 115, 120, 115, 110, 105, 100])\nwindow_size = 3\n\nstrategy = TechnicalIndicatorTradingStrategy(price_data, window_size)\nstrategy.execute_strategy()<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4eee\u60f3\u901a\u8ca8\u53d6\u5f15\u306b\u304a\u3044\u3066\u3001\u30af\u30aa\u30f3\u30c4\uff08\u91cf\u7684\uff09\u6226\u7565\u306f\u5e83\u304f\u8b70\u8ad6\u3055\u308c\u3066\u3044\u308b\u30c8\u30d4\u30c3\u30af\u3067\u3059\u3002\u53d6\u5f15\u30d7\u30ed\u30bb\u30b9\u3092\u81ea\u52d5\u5316\u30fb\u30b7\u30b9\u30c6\u30e0\u5316\u3059\u308b\u3053\u3068\u3067\u3001\u30c8\u30ec\u30fc\u30c0\u30fc\u306f\u3088\u308a\u52b9\u7387\u7684\u306b\u53d6\u5f15\u3092\u5b9f\u884c\u3057\u3001\u5e02\u5834\u306e\u5909\u52d5\u306b\u3082\u7d20\u65e9\u304f\u5bfe\u5fdc\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u4eee\u60f3 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":87,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-85","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide"],"featured_image_src":"https:\/\/i0.wp.com\/blog.alltick.co\/ja-jp\/wp-content\/uploads\/sites\/2\/2025\/06\/tether-btc-1.jpg?fit=1200%2C675&ssl=1","author_info":{"display_name":"admin","author_link":"https:\/\/blog.alltick.co\/ja-jp\/author\/admin\/"},"_links":{"self":[{"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/posts\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":1,"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/posts\/85\/revisions"}],"predecessor-version":[{"id":86,"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/posts\/85\/revisions\/86"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/media\/87"}],"wp:attachment":[{"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/media?parent=85"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/categories?post=85"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alltick.co\/ja-jp\/wp-json\/wp\/v2\/tags?post=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}