{"id":37367,"date":"2024-11-01T09:57:01","date_gmt":"2024-11-01T09:57:01","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=37367"},"modified":"2024-11-01T11:51:06","modified_gmt":"2024-11-01T11:51:06","slug":"python-automated-trading-development-python-console","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/37367\/","title":{"rendered":"Python Automated Trading Development, Python Console"},"content":{"rendered":"<p>The automated trading system is an algorithm that buys and sells assets through a series of trading mechanisms without human intervention in financial transactions. Today, we will learn in detail how to develop an automated trading system using Python. In this post, we will provide a process for building a simple automated trading program using the Python Console and sample code.<\/p>\n<h2>1. What is Automated Trading?<\/h2>\n<p>Automated trading makes investment decisions and executes trades based on specific algorithms and strategies. This process can enhance the accuracy and speed of trades, enabling consistent trading without being swayed by emotions. Typically, automated trading includes the following elements:<\/p>\n<ul>\n<li><strong>Signal Generation:<\/strong> An algorithm that determines the timing of trades.<\/li>\n<li><strong>Order Execution:<\/strong> A function that executes trades based on generated signals.<\/li>\n<li><strong>Monitoring:<\/strong> Continuously checking market conditions and portfolio performance.<\/li>\n<\/ul>\n<h2>2. Building an Automated Trading System with Python<\/h2>\n<p>Python is a highly suitable language for automated trading development. The Python ecosystem contains various libraries for data analysis, financial data processing, and web data collection. In this example, we will implement automated trading on a cryptocurrency exchange using the <strong>ccxt<\/strong> library.<\/p>\n<h3>2.1. Getting Started<\/h3>\n<p>Before starting, you need to install the required packages. Let&#8217;s install the <code>ccxt<\/code> library. Enter the following command in the console:<\/p>\n<pre><code>pip install ccxt<\/code><\/pre>\n<h3>2.2. Setting Up Exchange API Key and Secret<\/h3>\n<p>To allow the automated trading program to access the exchange, you need an API key and secret. After creating an account on the exchange, generate the API and set the necessary permissions. Keep this information safe.<\/p>\n<h3>2.3. Developing a Simple Trading Strategy<\/h3>\n<p>Now, let&#8217;s develop a simple trading strategy. For example, we will demonstrate how to generate buy and sell signals using a moving average crossover strategy. Use the code below to create an automated trading program based on the moving average crossover strategy:<\/p>\n<pre><code>import ccxt\nimport time\nimport pandas as pd\nimport numpy as np\n\n# Connecting to the exchange\nexchange = ccxt.binance({\n    'apiKey': 'your_api_key',\n    'secret': 'your_api_secret'\n})\n\nsymbol = 'BTC\/USDT'\n\ndef fetch_ohlcv(symbol):\n    # Fetch recent 1-hour OHLCV data\n    ohlcv = exchange.fetch_ohlcv(symbol, timeframe='1h', limit=100)\n    return pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])\n\ndef moving_average(data, period):\n    return data['close'].rolling(window=period).mean()\n\ndef buy(symbol, amount):\n    order = exchange.create_market_buy_order(symbol, amount)\n    print(f\"Buy order executed: {order}\")\n\ndef sell(symbol, amount):\n    order = exchange.create_market_sell_order(symbol, amount)\n    print(f\"Sell order executed: {order}\")\n\n# Executing the trading strategy\nwhile True:\n    data = fetch_ohlcv(symbol)\n    data['short_ma'] = moving_average(data, 5)  # 5-hour moving average\n    data['long_ma'] = moving_average(data, 20)   # 20-hour moving average\n\n    # Buy signal\n    if data['short_ma'].iloc[-1] > data['long_ma'].iloc[-1] and data['short_ma'].iloc[-2] <= data['long_ma'].iloc[-2]:\n        buy(symbol, 0.001)  # Buy 0.001 BTC\n\n    # Sell signal\n    elif data['short_ma'].iloc[-1] < data['long_ma'].iloc[-1] and data['short_ma'].iloc[-2] >= data['long_ma'].iloc[-2]:\n        sell(symbol, 0.001)  # Sell 0.001 BTC\n\n    time.sleep(3600)  # Execute every hour<\/code><\/pre>\n<h3>2.4. Program Explanation<\/h3>\n<p>The code above consists of the following components:<\/p>\n<ul>\n<li><strong>fetch_ohlcv:<\/strong> Fetches recent OHLCV data for the given symbol.<\/li>\n<li><strong>moving_average:<\/strong> Calculates the moving average for a given period.<\/li>\n<li><strong>buy and sell:<\/strong> Functions that execute buy and sell orders.<\/li>\n<li><strong>while True:<\/strong> A loop that continuously executes the trading strategy.<\/li>\n<\/ul>\n<p>This program executes every hour, generates buy and sell signals based on moving averages, and places orders with the exchange.<\/p>\n<h2>3. Error Handling and Monitoring<\/h2>\n<p>When the automated trading program operates in reality, it is important to prepare for potential issues that may arise. Therefore, it is crucial to add error handling and result monitoring features.<\/p>\n<h3>3.1. Error Handling<\/h3>\n<p>The program may be interrupted due to various issues, such as network errors or API call limits. To handle this, you can use try-except statements to catch errors and automatically retry.<\/p>\n<pre><code>try:\n    data = fetch_ohlcv(symbol)\nexcept Exception as e:\n    print(f\"Error fetching data: {e}\")\n    time.sleep(60)  # Wait for 1 minute before retrying<\/code><\/pre>\n<h3>3.2. Logging<\/h3>\n<p>Recording trading results or system status greatly helps improve reliability and stability. Let&#8217;s learn how to log using Python&#8217;s logging module.<\/p>\n<pre><code>import logging\n\n# Log settings\nlogging.basicConfig(filename='trading_log.log', level=logging.INFO)\n\ndef log_trade(action, amount):\n    logging.info(f\"{time.strftime('%Y-%m-%d %H:%M:%S')} - {action} {amount} BTC\")<\/code><\/pre>\n<h3>3.3. Adding Logging to the Example<\/h3>\n<p>Let&#8217;s add logging to the buy and sell functions.<\/p>\n<pre><code>def buy(symbol, amount):\n    order = exchange.create_market_buy_order(symbol, amount)\n    log_trade(\"Buy\", amount)\n    print(f\"Buy order executed: {order}\")\n\ndef sell(symbol, amount):\n    order = exchange.create_market_sell_order(symbol, amount)\n    log_trade(\"Sell\", amount)\n    print(f\"Sell order executed: {order}\") \n<\/code><\/pre>\n<h2>4. Performance and Optimization<\/h2>\n<p>To develop a successful automated trading algorithm, you need to consider performance and optimization. This includes validating and optimizing strategies through backtesting (performance verification on historical data).<\/p>\n<h3>4.1. Backtesting<\/h3>\n<p>Backtesting is the process of validating how effective a set strategy is using historical data. This helps to preemptively block incorrect investment strategies.<\/p>\n<pre><code>def backtest_strategy(data):\n    buy_signals = []\n    sell_signals = []\n    \n    for i in range(1, len(data)):\n        if data['short_ma'].iloc[i] > data['long_ma'].iloc[i] and data['short_ma'].iloc[i-1] <= data['long_ma'].iloc[i-1]:\n            buy_signals.append(data['close'].iloc[i])\n            sell_signals.append(np.nan)\n        elif data['short_ma'].iloc[i] < data['long_ma'].iloc[i] and data['short_ma'].iloc[i-1] >= data['long_ma'].iloc[i-1]:\n            buy_signals.append(np.nan)\n            sell_signals.append(data['close'].iloc[i])\n        else:\n            buy_signals.append(np.nan)\n            sell_signals.append(np.nan)\n    \n    data['buy'] = buy_signals\n    data['sell'] = sell_signals\n    return data<\/code><\/pre>\n<h3>4.2. Optimization<\/h3>\n<p>It is important to find the optimal performance combinations by adjusting various parameters on historical data. This can be achieved through mathematical modeling and machine learning techniques.<\/p>\n<h2>5. Conclusion<\/h2>\n<p>We have explored the basic content of developing automated trading using Python. We demonstrated generating trading signals and API calls through a simple example based on the moving average crossover strategy. Additionally, various trading strategies can be applied, and advanced automated trading systems can be built by incorporating machine learning algorithms.<\/p>\n<p>We hope this post helps you take your first steps in Python automated trading development. Coding requires practice, so try several times and challenge yourself to develop your own strategies!<\/p>\n<h3>Appendix: Recommended Resources<\/h3>\n<ul>\n<li><a href=\"https:\/\/ccxt.readthedocs.io\/en\/latest\/\">CCXT Documentation<\/a><\/li>\n<li><a href=\"https:\/\/docs.python.org\/3\/library\/logging.html\">Python Logging Documentation<\/a><\/li>\n<li><a href=\"https:\/\/towardsdatascience.com\/backtesting-trading-strategies-in-python-9bd39490a55e\">Backtesting Trading Strategies<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The automated trading system is an algorithm that buys and sells assets through a series of trading mechanisms without human intervention in financial transactions. Today, we will learn in detail how to develop an automated trading system using Python. In this post, we will provide a process for building a simple automated trading program using &hellip; <a href=\"https:\/\/atmokpo.com\/w\/37367\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Python Automated Trading Development, Python Console&#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-37367","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>Python Automated Trading Development, Python Console - \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\/37367\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Automated Trading Development, Python Console - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"The automated trading system is an algorithm that buys and sells assets through a series of trading mechanisms without human intervention in financial transactions. Today, we will learn in detail how to develop an automated trading system using Python. In this post, we will provide a process for building a simple automated trading program using &hellip; \ub354 \ubcf4\uae30 &quot;Python Automated Trading Development, Python Console&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/37367\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:57:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:51:06+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=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/37367\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37367\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Python Automated Trading Development, Python Console\",\"datePublished\":\"2024-11-01T09:57:01+00:00\",\"dateModified\":\"2024-11-01T11:51:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37367\/\"},\"wordCount\":654,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"Python Auto Trading\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/37367\/\",\"url\":\"https:\/\/atmokpo.com\/w\/37367\/\",\"name\":\"Python Automated Trading Development, Python Console - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:57:01+00:00\",\"dateModified\":\"2024-11-01T11:51:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37367\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/37367\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/37367\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python Automated Trading Development, Python Console\"}]},{\"@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":"Python Automated Trading Development, Python Console - \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\/37367\/","og_locale":"ko_KR","og_type":"article","og_title":"Python Automated Trading Development, Python Console - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"The automated trading system is an algorithm that buys and sells assets through a series of trading mechanisms without human intervention in financial transactions. Today, we will learn in detail how to develop an automated trading system using Python. In this post, we will provide a process for building a simple automated trading program using &hellip; \ub354 \ubcf4\uae30 \"Python Automated Trading Development, Python Console\"","og_url":"https:\/\/atmokpo.com\/w\/37367\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:57:01+00:00","article_modified_time":"2024-11-01T11:51:06+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":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/37367\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/37367\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Python Automated Trading Development, Python Console","datePublished":"2024-11-01T09:57:01+00:00","dateModified":"2024-11-01T11:51:06+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/37367\/"},"wordCount":654,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["Python Auto Trading"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/37367\/","url":"https:\/\/atmokpo.com\/w\/37367\/","name":"Python Automated Trading Development, Python Console - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:57:01+00:00","dateModified":"2024-11-01T11:51:06+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/37367\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/37367\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/37367\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Python Automated Trading Development, Python Console"}]},{"@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\/37367","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=37367"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37367\/revisions"}],"predecessor-version":[{"id":37368,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37367\/revisions\/37368"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=37367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=37367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=37367"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}