Skip to content

Instantly share code, notes, and snippets.

@tej87681088
Created October 24, 2023 02:44
Show Gist options
  • Select an option

  • Save tej87681088/aac61698c312a70fce778b903911464a to your computer and use it in GitHub Desktop.

Select an option

Save tej87681088/aac61698c312a70fce778b903911464a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "11d3d427",
"metadata": {},
"outputs": [],
"source": [
"import tejapi\n",
"api_key = 'your key'\n",
"tejapi.ApiConfig.api_base=\"http://api.tej.com.tw\"\n",
"tejapi.ApiConfig.api_key = api_key\n",
"tejapi.ApiConfig.ignoretz = True\n",
"\n",
"\n",
"def get_stock_price(gte, lte, ticker):\n",
"\n",
" stock = tejapi.get('TWN/APRCD',\n",
" mdate = {'gte':gte, 'lte':lte},\n",
" coid = ticker,\n",
" chinese_column_name = True\n",
" )\n",
" return stock"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1bf90626",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import openai\n",
"os.environ['OPENAI_API_KEY'] = 'your key'\n",
"openai.api_key = os.environ['OPENAI_API_KEY']"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "bc0bdcb5",
"metadata": {},
"outputs": [],
"source": [
"from langchain.chat_models import ChatOpenAI\n",
"from langchain.chains import ConversationChain\n",
"from langchain.memory import ConversationBufferWindowMemory"
]
},
{
"cell_type": "code",
"execution_count": 104,
"id": "0c15aa3f",
"metadata": {},
"outputs": [],
"source": [
"llm_model = 'gpt-3.5-turbo-0301'\n",
"llm = ChatOpenAI(temperature=0.0, model=llm_model)\n",
"memory = ConversationBufferWindowMemory(k=5) # 設定只保留五次對話以前的紀錄\n",
"\n",
"# 建立對話鏈\n",
"conversation = ConversationChain(\n",
" llm=llm, \n",
" memory = memory,\n",
" verbose=False\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 105,
"id": "0da47c1a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"幫我分析市場波動趨勢,以下為股價資料:\n",
"date: 2023-05-22 open: 532.0 close: 531.0\n",
"date: 2023-05-23 open: 530.0 close: 530.0\n",
"date: 2023-05-24 open: 527.0 close: 525.0\n",
"date: 2023-05-25 open: 542.0 close: 543.0\n",
"date: 2023-05-26 open: 568.0 close: 566.0\n",
"date: 2023-05-29 open: 574.0 close: 568.0\n",
"date: 2023-05-30 open: 566.0 close: 566.0\n",
"date: 2023-05-31 open: 560.0 close: 558.0\n",
"date: 2023-06-01 open: 550.0 close: 551.0\n",
"date: 2023-06-02 open: 559.0 close: 562.0\n",
"date: 2023-06-05 open: 560.0 close: 555.0\n",
"date: 2023-06-06 open: 554.0 close: 560.0\n",
"date: 2023-06-07 open: 561.0 close: 568.0\n",
"date: 2023-06-08 open: 562.0 close: 559.0\n",
"date: 2023-06-09 open: 561.0 close: 565.0\n",
"date: 2023-06-12 open: 574.0 close: 574.0\n",
"date: 2023-06-13 open: 593.0 close: 593.0\n",
"date: 2023-06-14 open: 590.0 close: 590.0\n",
"date: 2023-06-15 open: 590.0 close: 591.0\n",
"date: 2023-06-16 open: 590.0 close: 589.0\n",
"date: 2023-06-19 open: 583.0 close: 583.0\n",
"date: 2023-06-20 open: 579.0 close: 583.0\n",
"date: 2023-06-21 open: 582.0 close: 581.0\n",
"date: 2023-06-26 open: 576.0 close: 574.0\n",
"date: 2023-06-27 open: 570.0 close: 572.0\n",
"date: 2023-06-28 open: 579.0 close: 574.0\n",
"date: 2023-06-29 open: 578.0 close: 573.0\n",
"date: 2023-06-30 open: 570.0 close: 576.0\n",
"幫我用繁體中文分析\n"
]
}
],
"source": [
"gte = '2023-05-20'\n",
"lte = '2023-06-30'\n",
"stock = get_stock_price(gte, lte, '2330')\n",
"\n",
"# 時間 開收盤價格\n",
"date_price = ''\n",
"for i in range(len(stock)):\n",
" date = stock['年月日'][i].strftime('%Y-%m-%d')\n",
"# opens = stock['開盤價(元)'][i]\n",
" closes = stock['收盤價(元)'][i]\n",
" open_price = stock['開盤價(元)'][i]\n",
" date_price += f'date: {date} '\n",
"# date_price += f'開盤價: {opens} '\n",
" date_price += (f'open: {open_price} ' + f'close: {closes}\\n')\n",
" \n",
"\n",
"prompt = f'幫我分析市場波動趨勢,以下為股價資料:\\n'+ date_price + '幫我用繁體中文分析'\n",
"print(prompt)"
]
},
{
"cell_type": "code",
"execution_count": 106,
"id": "88ba7421",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"根據這些股價資料,市場波動趨勢似乎是不穩定的。從5月22日到5月25日,股價有所上漲,但在5月29日之後,股價開始下跌。然後在6月12日,股價再次上漲,但在6月16日之後,股價再次下跌。從這些數據來看,市場波動趨勢似乎是不穩定的,並且可能會繼續波動。\n"
]
}
],
"source": [
"print(conversation.predict(input=prompt))"
]
},
{
"cell_type": "code",
"execution_count": 107,
"id": "918ac2c5",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"好的,以下是從6月開始每次收盤當天的乖離率表格:\n",
"\n",
"日期 | 收盤價 | 三天移動平均 | 乖離率\n",
"--- | --- | --- | ---\n",
"2023-06-01 | 551.0 | 547.33 | 0.66%\n",
"2023-06-02 | 562.0 | 547.67 | 2.68%\n",
"2023-06-05 | 555.0 | 559.0 | -0.72%\n",
"2023-06-06 | 560.0 | 559.0 | 0.18%\n",
"2023-06-07 | 568.0 | 561.0 | 1.25%\n",
"2023-06-08 | 559.0 | 562.67 | -0.65%\n",
"2023-06-09 | 565.0 | 564.33 | 0.12%\n",
"2023-06-12 | 574.0 | 566.0 | 1.41%\n",
"2023-06-13 | 593.0 | 577.33 | 2.71%\n",
"2023-06-14 | 590.0 | 579.0 | 1.91%\n",
"2023-06-15 | 591.0 | 591.33 | -0.56%\n",
"2023-06-16 | 589.0 | 590.0 | -0.17%\n",
"2023-06-19 | 583.0 | 587.67 | -0.80%\n",
"2023-06-20 | 583.0 | 585.0 | -0.34%\n",
"2023-06-21 | 581.0 | 582.33 | -0.23%\n",
"2023-06-26 | 574.0 | 579.33 | -0.93%\n",
"2023-06-27 | 572.0 | 575.67 | -0.64%\n",
"2023-06-28 | 574.0 | 573.33 | 0.11%\n",
"2023-06-29 | 573.0 | 573.0 | 0.00%\n",
"2023-06-30 | 576.0 | 574.33 | 0.29%\n"
]
}
],
"source": [
"print(conversation.predict(input='用三天的移動平均,幫我計算全部的收盤當天乖離率但只顯示從六月開始每次收盤當天的乖離率,產出表格'))"
]
},
{
"cell_type": "code",
"execution_count": 108,
"id": "9be76723",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"好的,以下是根據您提供的規則,從6月1日開始的進出場表格:\n",
"\n",
"日期 | 進出場 | 本金 | 獲利 | 總資產\n",
"--- | --- | --- | --- | ---\n",
"2023-06-01 | 進場 | 100000 | 0 | 100000\n",
"2023-06-02 | 出場 | 100000 | 2200 | 102200\n",
"2023-06-05 | 進場 | 102200 | 0 | 102200\n",
"2023-06-06 | 出場 | 102200 | 600 | 102800\n",
"2023-06-07 | 出場 | 102800 | 3200 | 106000\n",
"2023-06-08 | 進場 | 106000 | 0 | 106000\n",
"2023-06-09 | 出場 | 106000 | 1500 | 107500\n",
"2023-06-12 | 出場 | 107500 | 6500 | 114000\n",
"2023-06-13 | 出場 | 114000 | 3900 | 117900\n",
"2023-06-14 | 出場 | 117900 | 0 | 117900\n",
"2023-06-15 | 出場 | 117900 | 100 | 118000\n",
"2023-06-16 | 進場 | 118000 | 0 | 118000\n",
"2023-06-19 | 進場 | 118000 | 0 | 118000\n",
"2023-06-20 | 出場 | 118000 | 0 | 118000\n",
"2023-06-21 | 出場 | 118000 | 0 | 118000\n",
"2023-06-26 | 進場 | 118000 | 0 | 118000\n",
"2023-06-27 | 出場 | 118000 | 0 | 118000\n",
"2023-06-28 | 進場 | 118000 | 0 | 118000\n",
"2023-06-29 | 出場 | 118000 | 0 | 118000\n",
"2023-06-30 | 出場 | 118000 | 2400 | 120400\n",
"\n",
"請注意,進出場僅基於您提供的規則,並不代表任何投資建議。此外,獲利僅為估算值,實際獲利可能因手續費、稅金等因素而有所不同。\n"
]
}
],
"source": [
"print(conversation.predict(input='幫我用本金十萬元遵照以下規則。在六月第一天進場,前一天收盤價大於四天前最高價,且收盤乖離率>=0,則當天開盤價出場。\\\n",
" 在前一天收盤價小於四天前最低價,且收盤乖離率<=0,則當天開盤價進場,生成表格,請記得進出場都是用全部本金加獲利。'))"
]
},
{
"cell_type": "code",
"execution_count": 109,
"id": "f30e1550",
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"好的,以下是詳細的報表:\n",
"\n",
"日期 | 進出場 | 本金 | 獲利 | 總資產 | 獲利金額\n",
"--- | --- | --- | --- | --- | ---\n",
"2023-06-01 | 進場 | 100000 | 0 | 100000 | 0\n",
"2023-06-02 | 出場 | 100000 | 2200 | 102200 | 2200\n",
"2023-06-05 | 進場 | 102200 | 0 | 102200 | 0\n",
"2023-06-06 | 出場 | 102200 | 600 | 102800 | 600\n",
"2023-06-07 | 出場 | 102800 | 3200 | 106000 | 3200\n",
"2023-06-08 | 進場 | 106000 | 0 | 106000 | 0\n",
"2023-06-09 | 出場 | 106000 | 1500 | 107500 | 1500\n",
"2023-06-12 | 出場 | 107500 | 6500 | 114000 | 6500\n",
"2023-06-13 | 出場 | 114000 | 3900 | 117900 | 3900\n",
"2023-06-14 | 出場 | 117900 | 0 | 117900 | 0\n",
"2023-06-15 | 出場 | 117900 | 100 | 118000 | 100\n",
"2023-06-16 | 進場 | 118000 | 0 | 118000 | 0\n",
"2023-06-19 | 進場 | 118000 | 0 | 118000 | 0\n",
"2023-06-20 | 出場 | 118000 | 0 | 118000 | 0\n",
"2023-06-21 | 出場 | 118000 | 0 | 118000 | 0\n",
"2023-06-26 | 進場 | 118000 | 0 | 118000 | 0\n",
"2023-06-27 | 出場 | 118000 | 0 | 118000 | 0\n",
"2023-06-28 | 進場 | 118000 | 0 | 118000 | 0\n",
"2023-06-29 | 出場 | 118000 | 0 | 118000 | 0\n",
"2023-06-30 | 出場 | 118000 | 2400 | 120400 | 2400\n",
"\n",
"總獲利大小為:17,800元。\n"
]
}
],
"source": [
"print(conversation.predict(input='幫我產出詳細表格報表,包含獲利金額大小、總獲利大小'))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.17"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment