{"id":37409,"date":"2024-11-01T09:57:21","date_gmt":"2024-11-01T09:57:21","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=37409"},"modified":"2024-11-01T11:50:56","modified_gmt":"2024-11-01T11:50:56","slug":"automatic-trading-development-with-python-kiwoom-securities-api-introduction-to-pyqt","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/37409\/","title":{"rendered":"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt"},"content":{"rendered":"<p><body><\/p>\n<p>\n    Recently, automatic trading systems in the stock market have attracted attention among many investors.<br \/>\n    In particular, Python has established itself as a suitable language for financial data processing and<br \/>\n    automatic trading system development due to its simplicity and powerful libraries. In this article, we will<br \/>\n    explore how to develop an automatic trading system using the <strong>Kiwoom Securities API<\/strong> and<br \/>\n    how to utilize <strong>PyQt<\/strong> for building a user interface.\n<\/p>\n<h2>1. Self Diagnosis: Why Use an Automatic Trading System?<\/h2>\n<p>\n    An automatic trading system allows trading to be executed automatically based on predefined algorithms,<br \/>\n    free from human emotions and momentary judgments. This increases the possibility of maximizing profits<br \/>\n    by maintaining consistency in trading and optimizing trading time.\n<\/p>\n<h2>2. Overview of Kiwoom Securities API<\/h2>\n<p>\n    The Kiwoom Securities API is a tool provided by Kiwoom Securities that helps to perform trading programmatically.<br \/>\n    Through this API, users can access real-time stock data, create orders, and manage trading history.\n<\/p>\n<h3>2.1. Installing Kiwoom API<\/h3>\n<p>\n    To use the Kiwoom API, you must first install Kiwoom Securities&#8217; Open API+. After installation, you can set up<br \/>\n    the API through the following steps.\n<\/p>\n<pre>\n1. Download 'Open API+' from the Kiwoom Securities homepage.\n2. After installation, run 'OPKorea_1.2.0.exe' in the 'Kiwoom Securities Open API' folder.\n3. Enter the API key and password to authenticate.\n4. Check if the API is functioning properly.\n<\/pre>\n<h3>2.2. Key Features of Kiwoom API<\/h3>\n<ul>\n<li>Stock Search<\/li>\n<li>Real-Time Price Inquiry<\/li>\n<li>Order and Trade Execution<\/li>\n<li>Transaction History Inquiry<\/li>\n<li>Portfolio Management<\/li>\n<\/ul>\n<h2>3. Integrating Python with Kiwoom Securities API<\/h2>\n<p>\n    To integrate the Kiwoom Securities API using Python, you can use a GUI framework like PyQt5.<br \/>\n    Let&#8217;s look at example code using the Kiwoom API and PyQt5.\n<\/p>\n<h3>3.1. Installing PyQt5<\/h3>\n<pre>\npip install PyQt5\npip install PyQt5-tools\n<\/pre>\n<h3>3.2. Implementing Login via Kiwoom API<\/h3>\n<p>Below is the basic code for logging into the Kiwoom Securities API.<\/p>\n<pre>\nimport sys\nfrom PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton\nfrom PyQt5.QtCore import pyqtSlot\nimport win32com.client\n\nclass Kiwoom(QMainWindow):\n    def __init__(self):\n        super().__init__()\n        self.setWindowTitle(\"Kiwoom Securities Automatic Trading System\")\n        self.setGeometry(300, 300, 400, 300)\n        self.login_button = QPushButton(\"Login\", self)\n        self.login_button.clicked.connect(self.login)\n        self.login_button.resize(100, 40)\n        self.login_button.move(150, 130)\n\n        self.kiwoom = win32com.client.Dispatch(\"KHOpenAPI.KHOpenAPICtrl.1\")\n    \n    @pyqtSlot()\n    def login(self):\n        self.kiwoom.CommConnect()\n\nif __name__ == \"__main__\":\n    app = QApplication(sys.argv)\n    kiwoom = Kiwoom()\n    kiwoom.show()\n    sys.exit(app.exec_())\n<\/pre>\n<h2>4. Real-Time Stock Data Inquiry<\/h2>\n<p>\n    Now, after adding the login feature, let&#8217;s add the real-time data inquiry functionality.<br \/>\n    To access real-time prices, we need to write a function for data requests.\n<\/p>\n<pre>\nclass Kiwoom(QMainWindow):\n    # ... Previous code omitted ...\n    def retrieve_stock_data(self, stock_code):\n        self.kiwoom.SetInputValue(\"\uc885\ubaa9\ucf54\ub4dc\", stock_code)\n        self.kiwoom.CommRqData(\"Basic Stock Information\", \"opt10001\", 0, \"0101\")\n\n    def OnReceiveTrData(self, scrno, rqname, trcode, recordname, prevnext, \n                       dataLength, errorCode, message, splm):\n        print(\"Data Received\")\n        self.current_price = self.kiwoom.GetCommData(trcode, rqname, 0, \"Current Price\")\n        print(f\"Current Price: {self.current_price.strip()}\")\n<\/pre>\n<h3>4.1. Adding Real-Time Data Reception Functionality<\/h3>\n<p>\n    We added the `OnReceiveTrData` method to the basic code above.<br \/>\n    In this method, we will implement the logic for processing the received data.\n<\/p>\n<h2>5. Implementing Order Functionality<\/h2>\n<p>\n    Now, let&#8217;s add a simple order functionality.<br \/>\n    Let&#8217;s look at a code example for handling buy and sell orders.\n<\/p>\n<pre>\ndef buy_stock(self, stock_code, quantity):\n    self.kiwoom.SetInputValue(\"Stock Code\", stock_code)\n    self.kiwoom.SetInputValue(\"Order Quantity\", quantity)\n    self.kiwoom.SetInputValue(\"Price\", 0)  # Market Price\n    self.kiwoom.SetInputValue(\"Order Type\", 1)  # Buy\n    self.kiwoom.CommRqData(\"Stock Order\", \"opt00001\", 0, \"0101\")\n\ndef sell_stock(self, stock_code, quantity):\n    self.kiwoom.SetInputValue(\"Stock Code\", stock_code)\n    self.kiwoom.SetInputValue(\"Order Quantity\", quantity)\n    self.kiwoom.SetInputValue(\"Price\", 0)  # Market Price\n    self.kiwoom.SetInputValue(\"Order Type\", 2)  # Sell\n    self.kiwoom.CommRqData(\"Stock Order\", \"opt00001\", 0, \"0101\")\n<\/pre>\n<h2>6. Optimizing GUI Design<\/h2>\n<p>\n    You can design a more intuitive and user-friendly GUI using PyQt5.<br \/>\n    By using various widgets, user experience can be enhanced.\n<\/p>\n<pre>\nself.quantity_input = QLineEdit(self)\nself.quantity_input.move(150, 50)\nself.quantity_input.resize(100, 30)\n\nself.stock_code_input = QLineEdit(self)\nself.stock_code_input.move(150, 90)\nself.stock_code_input.resize(100, 30)\n\nself.buy_button = QPushButton(\"Buy\", self)\nself.buy_button.move(150, 130)\nself.buy_button.clicked.connect(self.on_buy_click)\n<\/pre>\n<h3>6.1. Handling Click Events for the Order Button<\/h3>\n<pre>\ndef on_buy_click(self):\n    stock_code = self.stock_code_input.text()\n    quantity = int(self.quantity_input.text())\n    self.buy_stock(stock_code, quantity)\n<\/pre>\n<h2>7. Developing an Automatic Trading Algorithm<\/h2>\n<p>\n    Now, let&#8217;s implement the core algorithm of automatic trading.<br \/>\n    A simple strategy to consider is the moving average crossover strategy.\n<\/p>\n<pre>\ndef moving_average_strategy(self):\n    short_window = 5\n    long_window = 20\n    prices = self.get_past_prices(stock_code)\n\n    short_ma = prices[-short_window:].mean()\n    long_ma = prices[-long_window:].mean()\n\n    if short_ma > long_ma:\n        self.buy_stock(stock_code, 1)\n    elif short_ma < long_ma:\n        self.sell_stock(stock_code, 1)\n<\/pre>\n<h3>7.1. Getting Historical Price Data<\/h3>\n<pre>\ndef get_past_prices(self, stock_code):\n    # Implement the method to retrieve historical price data\n    pass\n<\/pre>\n<h2>8. Termination and Continuous Trading<\/h2>\n<p>\n    When managing assets, it is very important to monitor trading history after orders are executed and<br \/>\n    take necessary actions. After a trade is completed, the process of updating the portfolio is necessary.\n<\/p>\n<pre>\ndef update_portfolio(self):\n    # Implement the method to update portfolio status\n    pass\n<\/pre>\n<h2>Conclusion<\/h2>\n<p>\n    In this article, we explored how to implement a simple automatic trading system using the<br \/>\n    Kiwoom Securities API with Python. By adding a user interface through PyQt, we were able to<br \/>\n    create a more intuitive and user-friendly system. Next, it is recommended to build upon this<br \/>\n    foundation by adding more complex and diverse algorithms to create a personalized automatic trading system.\n<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently, automatic trading systems in the stock market have attracted attention among many investors. In particular, Python has established itself as a suitable language for financial data processing and automatic trading system development due to its simplicity and powerful libraries. In this article, we will explore how to develop an automatic trading system using the &hellip; <a href=\"https:\/\/atmokpo.com\/w\/37409\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[147],"tags":[],"class_list":["post-37409","post","type-post","status-publish","format-standard","hentry","category-python-auto-trading"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/37409\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Recently, automatic trading systems in the stock market have attracted attention among many investors. In particular, Python has established itself as a suitable language for financial data processing and automatic trading system development due to its simplicity and powerful libraries. In this article, we will explore how to develop an automatic trading system using the &hellip; \ub354 \ubcf4\uae30 &quot;Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/37409\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:57:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:50:56+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/37409\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37409\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt\",\"datePublished\":\"2024-11-01T09:57:21+00:00\",\"dateModified\":\"2024-11-01T11:50:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37409\/\"},\"wordCount\":502,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Python Auto Trading\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/37409\/\",\"url\":\"https:\/\/atmokpo.com\/w\/37409\/\",\"name\":\"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:57:21+00:00\",\"dateModified\":\"2024-11-01T11:50:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37409\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/37409\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/37409\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/37409\/","og_locale":"ko_KR","og_type":"article","og_title":"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Recently, automatic trading systems in the stock market have attracted attention among many investors. In particular, Python has established itself as a suitable language for financial data processing and automatic trading system development due to its simplicity and powerful libraries. In this article, we will explore how to develop an automatic trading system using the &hellip; \ub354 \ubcf4\uae30 \"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt\"","og_url":"https:\/\/atmokpo.com\/w\/37409\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:57:21+00:00","article_modified_time":"2024-11-01T11:50:56+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/37409\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/37409\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt","datePublished":"2024-11-01T09:57:21+00:00","dateModified":"2024-11-01T11:50:56+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/37409\/"},"wordCount":502,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Python Auto Trading"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/37409\/","url":"https:\/\/atmokpo.com\/w\/37409\/","name":"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:57:21+00:00","dateModified":"2024-11-01T11:50:56+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/37409\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/37409\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/37409\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Automatic Trading Development with Python, Kiwoom Securities API, Introduction to PyQt"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=37409"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37409\/revisions"}],"predecessor-version":[{"id":37410,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37409\/revisions\/37410"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=37409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=37409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=37409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}