From bdf7e9ec9af322896ba59cbc4ebba78b2fc5ccb4 Mon Sep 17 00:00:00 2001 From: MuslemRahimi Date: Tue, 8 Oct 2024 13:47:57 +0200 Subject: [PATCH] add bid ask price --- .gitignore | 1 + app/cron_quote.py | 39 ++++++++++++- .../__pycache__/backtesting.cpython-310.pyc | Bin 2477 -> 0 bytes .../classification.cpython-310.pyc | Bin 7502 -> 0 bytes .../fundamental_predictor.cpython-310.pyc | Bin 5005 -> 0 bytes .../__pycache__/prophet.cpython-310.pyc | Bin 478 -> 0 bytes .../__pycache__/prophet_model.cpython-310.pyc | Bin 2747 -> 0 bytes .../__pycache__/score_model.cpython-310.pyc | Bin 8601 -> 0 bytes fastify/app.js | 1 - fastify/get-all-comments/server.js | 55 ------------------ 10 files changed, 37 insertions(+), 59 deletions(-) delete mode 100755 app/ml_models/__pycache__/backtesting.cpython-310.pyc delete mode 100644 app/ml_models/__pycache__/classification.cpython-310.pyc delete mode 100644 app/ml_models/__pycache__/fundamental_predictor.cpython-310.pyc delete mode 100755 app/ml_models/__pycache__/prophet.cpython-310.pyc delete mode 100644 app/ml_models/__pycache__/prophet_model.cpython-310.pyc delete mode 100644 app/ml_models/__pycache__/score_model.cpython-310.pyc delete mode 100755 fastify/get-all-comments/server.js diff --git a/.gitignore b/.gitignore index 2e89ef7..3aeec93 100755 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ app/*.sh app/.env* app/ml_models/weights app/ml_models/training_data +app/ml_models/__pycache__ app/json/* app/logs/* fastify/node_modules diff --git a/app/cron_quote.py b/app/cron_quote.py index dc7159f..738bdca 100755 --- a/app/cron_quote.py +++ b/app/cron_quote.py @@ -43,6 +43,16 @@ async def get_pre_post_quote_of_stocks(ticker_list): else: return {} +async def get_bid_ask_quote_of_stocks(ticker_list): + ticker_str = ','.join(ticker_list) + async with aiohttp.ClientSession() as session: + url = f"https://financialmodelingprep.com/api/v4/batch-pre-post-market/{ticker_str}?apikey={api_key}" + async with session.get(url) as response: + if response.status == 200: + return await response.json() + else: + return {} + async def save_quote_as_json(symbol, data): with open(f"json/quote/{symbol}.json", 'w') as file: ujson.dump(data, file) @@ -58,6 +68,25 @@ async def save_pre_post_quote_as_json(symbol, data): except Exception as e: pass +async def save_bid_ask_as_json(symbol, data): + try: + # Read previous close price and load existing quote data + with open(f"json/quote/{symbol}.json", 'r') as file: + quote_data = ujson.load(file) + + # Update quote data with new price, ask, bid, changesPercentage, and timestamp + quote_data.update({ + 'ask': round(data['ask'], 2), # Add ask price + 'bid': round(data['bid'], 2), # Add bid price + }) + + # Save the updated quote data back to the same JSON file + with open(f"json/quote/{symbol}.json", 'w') as file: + ujson.dump(quote_data, file) + except Exception as e: + print(f"An error occurred: {e}") # Print the error for debugging + + async def run(): con = sqlite3.connect('stocks.db') etf_con = sqlite3.connect('etf.db') @@ -65,7 +94,7 @@ async def run(): cursor = con.cursor() cursor.execute("PRAGMA journal_mode = wal") - cursor.execute("SELECT DISTINCT symbol FROM stocks WHERE symbol != ?", ('%5EGSPC',)) + cursor.execute("SELECT DISTINCT symbol FROM stocks") stocks_symbols = [row[0] for row in cursor.fetchall()] etf_cursor = etf_con.cursor() @@ -100,7 +129,7 @@ async def run(): total_symbols = stocks_symbols+etf_symbols - chunk_size = len(total_symbols) // 10 # Divide the list into 10 chunks + chunk_size = len(total_symbols) // 20 # Divide the list into N chunks chunks = [total_symbols[i:i + chunk_size] for i in range(0, len(total_symbols), chunk_size)] delete_files_in_directory("json/pre-post-quote") for chunk in chunks: @@ -117,7 +146,11 @@ async def run(): symbol = item['symbol'] await save_pre_post_quote_as_json(symbol, item) #print(f"Saved data for {symbol}.") - + #Always true + bid_ask_quote = await get_bid_ask_quote_of_stocks(chunk) + for item in bid_ask_quote: + symbol = item['symbol'] + await save_bid_ask_as_json(symbol, item) try: asyncio.run(run()) diff --git a/app/ml_models/__pycache__/backtesting.cpython-310.pyc b/app/ml_models/__pycache__/backtesting.cpython-310.pyc deleted file mode 100755 index 71814c631246f1bcde3831283d98b4fa6cc9731d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmcImO>Y}F5M8c5EZL47xIX021DlJj!j&B#4W|gwChet0kr+MbvY?l=M0>wVQg#%m zr{>yo|3EMOOMC69Kz~6`eZ$pSYo`H<7+p&=cQ~Bkym`Y>{@}rCfak?;->biRLGTB? zG@lk;p5bdh#~=gAk|1RxmWHE{(R-M*M(u9`*^=#dfo%UAjyf`Y9Sk~uLO&RUxgp1U58TIlJh|71<-3a|Vd};#WYk+V8)pDZy(>aHGaXS*!Dmdv+W_?R28}4SSZV ze!X6>+(AofTPWjq=jU7*lN-x16MU?%RK}%n!Ya4NVO3<(?>Wy+I!y%EmR}p~9Mpv6 z=XsLk*Y=1szg0%(aAtGLVgli>juM)8RrPm&pz%4!g9kLwJq6GUu&rf@>T?T=F^`q-?4Ct)Pi zuQZhM%!{j24B-Wz!syKH?%?>o@D|YS3~rVlpAyYIJ~g6BE(3foE06bD)hz4P?$16)>t%&Wr+Cvd?ucu6Z?RQOB2`|8ls zL2#tOX0FrCejDiTC1#M~| zjy^z`n{}|FzRT~)g8yXlBU4L}Era_`0meF=zGyxarikOI5%H`EWpzg(ZlpYm7G@%E z=AH=L*W1T|)9;rnsd7fgcEHLG(d$jQU6pNp-7VVoC%)(15pGnfH4D%;sp#t0Q`l@v z6u_WghJ`HqU*kT0X+)|F^`d`kn1&iuxkeS_(CToUL1_9UYeD9lX*H}>vT3$~iKSuV zvn__daEq;!!p?K6Y-C@NPY>af#<=Ic>}>ouuX%sNb&M>J69ZVcqn zv@uYhx72`pL65EXybM1`Htl7CmYxk4fL1a3c)A7M+16~=CK_hF7avXUxH{68)U>^W Khe0pg3jYB_@#t0n diff --git a/app/ml_models/__pycache__/classification.cpython-310.pyc b/app/ml_models/__pycache__/classification.cpython-310.pyc deleted file mode 100644 index 3edd68048f6c356954407548a4726319757bc5c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7502 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 V;TVmYv+SI6CLPNL2Zss|{}&NLlz{*M diff --git a/app/ml_models/__pycache__/fundamental_predictor.cpython-310.pyc b/app/ml_models/__pycache__/fundamental_predictor.cpython-310.pyc deleted file mode 100644 index ab98be12388f44aff2e7037d16e2dfc22368adcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5005 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 D`YDW| diff --git a/app/ml_models/__pycache__/prophet_model.cpython-310.pyc b/app/ml_models/__pycache__/prophet_model.cpython-310.pyc deleted file mode 100644 index 5af84d45c71e9b23d463b1029f715d8b478587a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2747 zcmZ`*&2QYs6`vWByIk&vWW{!DH*JKVYPv{bAqLt4fsw|IjW&lEf>p%G0tvzF%vzNA zu^!G=S%E5?%02oIXpzI}*js^~d&;GUqUd?9J?TFv90bnq4OfX|I3zfHd~asn$GrD@ zEc^Y4;ri#_|2_G~fU*D4$Jxun$9s6H0)u3dXKcjr7MaMsk;jSWWq$6Dd`I&v7`5EI z_9%4k&ZvX8pGA3h)XjUNUfv(|F*lH{$80qCEt72-K4vmJ5~CH_krBA7l5ewN_XIlG z-66N_EnQA`lmQva#3+;IYUtUuTqQ+ZJ)9+4$yjM!YWtGoC7)GgHZy9;4E2q;8kbs) z$)D3J072e=g{S%xhA;TR&kftjGw?6-@R4|? ze**Cs&$;WnoF%Dp`8pEFG9kUke1tQU0dmZjE#z2e2U|KFt1VSDH+)feYJESie%)ME?{#7xrfOF--|$9BXRgn8H?3 zHng}{-o0-QUOw;Y_0!qs++D@04j$+3e-MnC?Xm^0`7!dA=v{%)lN?!36kGVUI7S6X zap;?Xs^lu$MV?cfpNK{Kn90_W0Ka_`wSaf{1M<#N9{qs4dlPjjdys~Qv=7Y##*j5# z_GhZgmI+K}5t(is)X;g%N%LXbaodpeh<}CE!H?K6{E_{O?1&$RkoTJvOHRiOpACf7*w6;vB1JDbK%FX`ma;ne7f#wn z^PR-RvniM-IB

YwZIc%6;3-(;_~d?9y;h zAZ*rXGweiSI0){2xP9lHgW$tkTX=Qu-B{lykbXz^Ax*cwe)jBXxbg8@8~Ixs5|!%f z9Ej)V$yC|4zTxKDm7NqggAz_Mm)&--EFGX2fu-#@Gk=o+M?20cM@D4IJyp#zGhEXf z&}Y3#YV4&v*;DakW@cJB6q;zjqboMsUhZrIUCyvwTbEgu77t(&HnS}N^h{M&6jPMw zLv6J0wnZ<}El~P0eF|x8SQ$N`9tLzRGuS^|)jy*dRJOL&Xt&{n8dg#nJ6I|Linv4R zCu1{9vUsU*b!iulq~Yja(q_MM>hz5!A`Y)(Qf4C;ktOXy($F2(I^C3u-$(V#!b@kk z=nrG%);$kGo}Lx2L3i~gh8|x9X8Ybcr#ljt`DL*V9FIiABmNq{=I&R-HSiDCp2H_> zgk;t0*aw{m;6|+~j%^fE&zNOI_u?4+KWilVbxhUwX`qI5W*~UfuVT20r=sHsS;Tvx zBeX|LMNSLw_&`-|$zy1>E!1;s5{u diff --git a/app/ml_models/__pycache__/score_model.cpython-310.pyc b/app/ml_models/__pycache__/score_model.cpython-310.pyc deleted file mode 100644 index 4bca0ec25617bfb740e6f33aa7f501bd3a14b023..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8601 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 Vqf>Kyg@R4dw>DUhQ7)91{ukK2Y(D@1 diff --git a/fastify/app.js b/fastify/app.js index e98a2bc..6f553d7 100755 --- a/fastify/app.js +++ b/fastify/app.js @@ -61,7 +61,6 @@ const corsMiddleware = (request, reply, done) => { fastify.addHook("onRequest", corsMiddleware); //fastify.register(require('./mixpanel/server'), { mixpanel, UAParser }); -fastify.register(require("./get-all-comments/server"), { pb }); fastify.register(require("./get-post/server"), { pb }); fastify.register(require("./get-one-post/server"), { pb }); fastify.register(require("./get-portfolio-data/server"), { pb }); diff --git a/fastify/get-all-comments/server.js b/fastify/get-all-comments/server.js deleted file mode 100755 index 1719cf5..0000000 --- a/fastify/get-all-comments/server.js +++ /dev/null @@ -1,55 +0,0 @@ -// Declare a route - -function listToTree(comments, parentProp = "reply") { - // Create id indexed comments dictionary - const commentsDict = {}; - for (let comment of comments) { - commentsDict[comment.id] = { - ...comment, - children: [], - }; - } - - // Build the tree - const tree = []; - for (const comment of comments) { - const parentId = comment[parentProp]; - if (parentId) { - commentsDict[parentId].children.push(commentsDict[comment.id]); - } else { - tree.push(commentsDict[comment.id]); - } - } - - return tree; -} - -module.exports = function (fastify, opts, done) { - - const pb = opts.pb; - - fastify.post('/get-all-comments', async (request, reply) => { - const data = request.body; - const postId = data?.postId - let output; - - try { - const result = await pb.collection("comments").getFullList({ - filter: `post="${postId}"`, - expand: 'user,alreadyVoted(comment)', - fields: "*,expand.user,expand.alreadyVoted(comment).user,expand.alreadyVoted(comment).type", - sort: '-created', - }) - - - output = listToTree(result); - } - catch(e) { - output = []; - } - -+ reply.send({ items: output }) - }); - - done(); -}; \ No newline at end of file