ज़्यादातर लोग Grok Bot से किसी और के PnL स्क्रीनशॉट के ज़रिए मिलते हैं, उसे खोलते हैं, किसी चार्ट पर लगाते हैं, और पहले $50 ऐसे टोकन में गँवा देते हैं जो उनके खरीदने से पहले ही मर चुका था। दिक्कत बॉट नहीं थी। किसी ने उसे यह नहीं बताया था कि "मरा हुआ" कैसा दिखता है।
अगर मुझे सब कुछ नए सिरे से शुरू करना पड़े, तो आज रात मैं यही सेटअप फिर बनाऊँगा। एक बॉट, एक फोल्डर, दस छोटी फाइलें। यह 100x की तलाश नहीं करता। इसका मुख्य काम टोकन्स को खत्म करना है, और जो कुछ बच भी जाते हैं, उन्हें भी एक डॉलर हिलने से पहले Grok को X पढ़ना पड़ता है।
स्टेप्स 01 से 07 पहली शाम का काम हैं: बॉट, की, लिमिट्स, एग्जिट्स। 08 से 12 रग फिल्टर हैं, 14 चेक्स, और उनमें से हर एक को कोड के रूप में लिखा गया है। 13 और 14 इसे ऑटोपायलट पर डालते हैं, पहले सिर्फ पेपर पर।
अगर तुमने मेरी आठ-एजेंट डेस्क वाली पोस्ट पढ़ी है, तो यह वो नींव है जिस पर वो डेस्क खड़ी है।
https://x.com/0xboan/status/2092226208234647626
इसे कैसे इस्तेमाल करें: अपना Grok Bot खोलो, यह पूरा आर्टिकल पेस्ट करो, और कहो "build this desk in /workspace/desk, paper mode, ask me before anything touches a wallet." यह हर फाइल खुद लिखेगा, अपने ही कंप्यूटर पर।
वह नियम जो तुम्हें याद रखना है: कोड मारता है, Grok X पढ़ता है, तुम साइन करते हो। डेस्क पर कोई भी किसी और का काम नहीं करता।
01. शुरू करने से पहले ये चार चीज़ें जुटा लो
चार चीज़ें। हर एक बताती है कि वह क्या है, आज रात तुम्हें क्या करना है, और डेस्क को उसकी ज़रूरत क्यों है।
1. Grok Bot
यह क्या है। वह ऐप जहाँ तुम नाम वाले बॉट्स हायर करते हो। हर एक क्लाउड कंप्यूटर पर काम करता है जिसमें ब्राउज़र, फाइलें और टर्मिनल होता है, और तुम्हारा लैपटॉप बंद होने पर भी काम करता रहता है।
तुम्हें क्या करना है। x.ai/bot पर जाकर डाउनलोड करो, साइन इन करो, Create your own चुनो।
क्यों। पूरी डेस्क उसी कंप्यूटर पर रहती है। फाइलें, रूटीन्स, अलर्ट्स, सब एक ही जगह जिसे तुम अपने फोन से खोल सकते हो।
2. एक xAI API key
यह क्या है। कोड से Grok तक पेड एक्सेस, जिसमें X सर्च पहले से बना हुआ है।
तुम्हें क्या करना है। console.x.ai पर जाओ, API Keys, एक बनाओ। अभी इसे कहीं पेस्ट मत करो, स्टेप 03 में बताया गया है कि यह कहाँ जाएगा।
क्यों। कोई रूटीन चैट में बैठकर चालीस टोकन्स के बारे में सोच नहीं सकता। एक स्क्रिप्ट जो हर टोकन के लिए एक कॉल करती है, वह कर सकती है, और हर जवाब को एक ही फॉर्मेट में लॉग करती है।
3. Rugcheck और DexScreener
यह क्या है। दो फ्री पब्लिक APIs। Rugcheck कॉन्ट्रैक्ट पढ़ता है: अथॉरिटीज़, LP, होल्डर्स, इनसाइडर्स, डेव वॉलेट। DexScreener पूल पढ़ता है: डेप्थ, उम्र, सेल्स के मुकाबले बाय्स।
तुम्हें क्या करना है। कुछ नहीं। कोई साइनअप नहीं, रीडिंग के लिए कोई की नहीं।
क्यों। राय से पहले तथ्य आते हैं। ओपन मिंट अथॉरिटी कोई फैसले वाला मामला नहीं है, यह एक तथ्य है, और तथ्य सबसे पहले मारते हैं।
4. एक बर्नर वॉलेट, लेकिन आज रात नहीं
यह क्या है। एक नया Solana वॉलेट जिसने कभी कुछ और होल्ड नहीं किया हो।
तुम्हें क्या करना है। अभी कुछ नहीं। पहला हफ्ता पेपर पर चलेगा।
क्यों। डेस्क कभी कोई की अपने पास नहीं रखती। जब तुम लाइव जाओगे, यह तुम्हें बताएगी कि क्या खरीदना है और तुम खुद साइन करोगे।
02. आठ नहीं, एक बॉट हायर करो
मेरी डेस्क अभी आठ बॉट्स चलाती है। शुरुआत ऐसी नहीं हुई थी, और तुम्हारी भी नहीं होनी चाहिए। पहले दिन आठ बॉट्स का मतलब है एक साथ आठ चीज़ों को डिबग करना। एक काम वाला एक बॉट तुम्हें दिखाता है कि बाद में बाकी सात को क्या चाहिए होगा।
Create your own चुनो और इसे बिल्कुल ऐसे ही दो, शब्द दर शब्द:
1Name: RUG DESK2Job: Solana memecoin desk, paper first3Description: मेरे द्वारा पेस्ट किए गए आर्टिकल से /workspace/desk में डेस्क बनाओ और चलाओ।4हर टोकन check.py से गुज़रेगा, कोई अपवाद नहीं, कोई शॉर्टकट नहीं।5तुम कभी फंड्स नहीं खरीदोगे, बेचोगे, साइन नहीं करोगे या ट्रांसफर नहीं करोगे। तुम config.py को कभी एडिट नहीं करोगे जब तक मैं6इस चैट में न कहूँ। तुम किसी टोकन को पास करने के लिए कभी फिल्टर नंबर कम नहीं करोगे।7हर किल की रिपोर्ट उसके कारण के साथ दो, टोकन पर अपनी राय के साथ नहीं।8जब कोई सोर्स डाउन हो, बताओ कौन सा है और उसे छोड़ दो। कभी किसी गायब नंबर का अनुमान मत लगाओ।
आखिरी दो लाइनें पहली पाँच से ज़्यादा मायने रखती हैं। एक बॉट जो किसी गायब नंबर का अनुमान लगाता है, आखिरकार ऐसा अनुमान लगाएगा जिसकी तुम्हें कीमत चुकानी पड़ेगी।

03. की को चैट से दूर रखो
तुम बॉट को जो भी टाइप करते हो वह ट्रांसक्रिप्ट में दर्ज हो जाता है। इसलिए की एक फाइल में जाती है, जिसे तुम खुद टाइप करते हो, बॉट के कंप्यूटर पर।
बॉट का कंप्यूटर खोलो, Take over पर क्लिक करो, टर्मिनल खोलो और यह रन करो। यह बिना दिखाए की माँगता है, इसलिए यह हिस्ट्री में भी कभी नहीं दिखता:
1mkdir -p /workspace/desk && cd /workspace/desk2read -rs -p "xai key: " K && printf 'XAI_API_KEY=%s\n' "$K" > .env && unset K3chmod 600 .env4pip install requests
फिर कुछ और करने से पहले साबित करो कि की काम कर रही है। बस एक कॉल, ताकि बाद में तुम खराब की को खराब प्रॉम्प्ट समझने की गलती न करो:
1curl -s https://api.x.ai/v1/responses \2 -H "Authorization: Bearer $(cut -d= -f2 .env)" \3 -H "Content-Type: application/json" \4 -d '{"model":"grok-4.7","input":"reply with OK"}'56-> ... "type":"output_text","text":"OK" ...
I'm done पर क्लिक करो और कंप्यूटर वापस सौंप दो। अब से बॉट डेस्क चला सकता है, और फिर भी वह चैट में की कभी नहीं देखता।

04. कुछ बनाने से पहले पूरा फनल देख लो
आठ पास। फ्री वाले पहले चलते हैं। जो फ्री पास से बचता है, सिर्फ वही Grok कॉल का खर्चा उठाता है, और जिसे Grok BUY कहता है, सिर्फ वही पैसा खर्च करता है। इस हफ्ते, वह भी नहीं।
10. LEAD कहीं से भी एक CA: कोई कॉल, पोस्ट, scan.py -> एक मिंट21. LIMITS book.py: दैनिक नुकसान, ओपन स्लॉट्स, कूलडाउन -> फ्री, कोई नेटवर्क नहीं32. FACTS rugcheck.py: 10 कठोर किल -> ओपन मिंट, अनलॉक्ड LP, भारी टॉप 10 यहाँ मरते हैं43. POOL market.py: डेप्थ, उम्र, सेल्स -> पतले पूल और हनीपॉट यहाँ मरते हैं54. JUDGE grok.py + X सर्च, एक कॉल -> BUY या SKIP, एक कारण, एक रिस्क65. FILL पेपर: book.py लाइव प्राइस पर -> लाइव: तुम खुद साइन करते हो76. WATCH watch.py हर 10 मिनट में -> स्टॉप, लैडर, ट्रेल, टाइम स्टॉप87. REPORT report.py 21:30 पर -> क्या मरा, क्या भुगतान किया, किस पर सवाल उठाना है
ओपन मिंट अथॉरिटी कोई फैसले वाला मामला नहीं है। यह एक तथ्य है, और तथ्य फ्री होते हैं। Grok सिर्फ उन्हीं टोकन्स को देखता है जो पहले ही हर उस चेक से गुज़र चुके हैं जो कोई स्क्रिप्ट कर सकती है।

05. हर नंबर एक ही फाइल में रखो
इसे config.py के रूप में सेव करो। डेस्क का हर नंबर यहाँ रहता है, इसलिए जब तुम रीट्यून करते हो, तो बस एक फाइल एडिट करनी होती है और कुछ नहीं। ये मेरे हैं, $25 के टिकट के हिसाब से ट्यून किए गए। ये कोई सिफारिश नहीं हैं, ये एक शुरुआती बिंदु हैं जिन्हें तुम बदलोगे।
1# config.py2# डेस्क का हर नंबर यहाँ रहता है। जब तुम रीट्यून करते हो, तो बस यही फाइल एडिट करनी होती है और कुछ नहीं।34MODEL = "grok-4.7" # अगर API इसे रिजेक्ट करे तो console.x.ai -> Models चेक करो5PAPER = True # पहला हफ्ता: असली कीमतों पर नकली फिल। लॉग पढ़ने के बाद ही इसे बदलो67TICKET_USD = 25 # फ्लैट। पिछली जीत के आधार पर कभी साइज़ मत तय करो8MAX_OPEN = 4 # मार्केट में अधिकतम 4 x $25 = $1009MAX_ENTRIES_PER_DAY = 610DAILY_LOSS_HALT_USD = 50 # आज का रियलाइज़्ड लॉस इतना हो जाए -> कल तक कोई नई एंट्री नहीं11COOLDOWN_HOURS = 24 # जिस टोकन से अभी निकले हो उसमें दोबारा एंट्री नहीं1213FACTS = { # रग फिल्टर। सिर्फ कोड, कोई मॉडल नहीं14 "max_risk_score": 40, # rugcheck score_normalised, 0-100, जितना ज़्यादा = उतना रिस्की15 "min_lp_locked_pct": 90, # सबसे बड़ा पूल: LP लॉक्ड या बर्न किया हुआ16 "max_top10_pct": 30, # टॉप 10 होल्डर्स, पूल्स और लॉकर्स को छोड़कर17 "max_dev_pct": 5, # सप्लाई जो अभी भी क्रिएटर वॉलेट में पड़ी है18 "max_insiders": 0, # इनसाइडर-फ्लैग्ड होल्डर्स + इनसाइडर ग्राफ हिट्स19 "min_liquidity_usd": 30000,20 "max_ticket_share": 0.01, # तुम्हारा टिकट कभी पूल के 1% से ज़्यादा नहीं होना चाहिए21 "min_age_min": 30, # इससे कम उम्र में, हर रिपोर्ट अभी भी अनुमान ही है22 "max_age_hours": 72,23}2425MIN_CONFIDENCE = 0.7 # Grok इससे नीचे BUY कहे -> तो SKIP माना जाएगा2627EXIT = {28 "stop_pct": -35, # एंट्री से हार्ड स्टॉप29 "ladder": [(100, 0.50), (200, 0.25)], # +100% पर आधा बेचो, +200% पर एक चौथाई30 "trail_pct": 30, # बाकी: जब कीमत पीक से 30% गिरे तो बाहर31 "time_stop_hours": 6, # 6 घंटे बाद 20% ऊपर नहीं -> बाहर, डेड मनी32 "time_stop_min_pct": 20,33 "liq_drop_pct": 40, # पूल लिक्विडिटी एंट्री से 40% गिरे -> अभी बाहर34}3536LOG = "checks.csv"37POSITIONS = "positions.json"38TRADES = "trades.csv"
1FLAT TICKET। साइज़ इसलिए नहीं बढ़ता क्योंकि पिछले तीन जीत गए थे।2बॉट config.py पढ़ता है, कभी लिखता नहीं। नंबर तभी बदलता है जब तुम बदलते हो।3फिल्टर लिखकर ढीला किया जाता है। तुम नंबर बदलते हो, तो उसी दिन चैट में कारण बताते हो।
06. कुछ भी करने से पहले लिमिट्स चलाओ
इसे book.py के रूप में सेव करो। डेस्क पर सबसे सस्ता चेक वही है जो कभी API कॉल नहीं करता। अगर आज पहले ही $50 का नुकसान हो चुका है, तो डेस्क टोकन को देखती भी नहीं। अगर चार पोजीशन ओपन हैं, तो भी यही हाल। यह फाइल डेस्क की मेमोरी भी है: दो फाइलें जिन्हें तुम खुद खोल सकते हो, positions.json और trades.csv।
1# book.py2# पोजीशन्स, ट्रेड्स, लिमिट्स। डेस्क की मेमोरी उन दो फाइलों में रहती है जिन्हें तुम खुद खोल सकते हो।3import csv, json, os, sys, time4from config import (POSITIONS, TRADES, TICKET_USD, MAX_OPEN, MAX_ENTRIES_PER_DAY,5 DAILY_LOSS_HALT_USD, COOLDOWN_HOURS)67def load() -> dict:8 return json.load(open(POSITIONS)) if os.path.exists(POSITIONS) else {}910def save(book: dict):11 json.dump(book, open(POSITIONS, "w"), indent=2)1213def trades() -> list[dict]:14 return list(csv.DictReader(open(TRADES))) if os.path.exists(TRADES) else []1516def record(mint, symbol, action, usd, pnl, reason):17 new = not os.path.exists(TRADES)18 with open(TRADES, "a", newline="") as f:19 w = csv.DictWriter(f, fieldnames=["time", "mint", "symbol", "action", "usd", "pnl", "reason"])20 if new:21 w.writeheader()22 w.writerow({"time": time.strftime("%Y-%m-%d %H:%M"), "mint": mint, "symbol": symbol,23 "action": action, "usd": round(usd, 2), "pnl": round(pnl, 2), "reason": reason})2425def today_pnl() -> float:26 day = time.strftime("%Y-%m-%d")27 return sum(float(t["pnl"]) for t in trades() if t["time"].startswith(day))2829def guard(mint: str) -> str | None:30 """लिमिट्स किसी भी नेटवर्क कॉल से पहले चलते हैं। रुकी हुई एंट्री का कोई खर्च नहीं होता।"""31 day = time.strftime("%Y-%m-%d")32 book = load()33 if today_pnl() <= -DAILY_LOSS_HALT_USD: return "halted_daily_loss"34 if mint in book: return "already_open"35 if len(book) >= MAX_OPEN: return "max_open"36 opens = [t for t in trades() if t["action"] == "open" and t["time"].startswith(day)]37 if len(opens) >= MAX_ENTRIES_PER_DAY: return "max_entries_today"38 cutoff = time.strftime("%Y-%m-%d %H:%M", time.localtime(time.time() - COOLDOWN_HOURS * 3600))39 if any(t["mint"] == mint and t["action"] == "close" and t["time"] >= cutoff for t in trades()):40 return "cooldown"41 return None4243def open_position(mint, symbol, price, liq_usd, usd=TICKET_USD):44 book = load()45 book[mint] = {"symbol": symbol, "entry": price, "qty0": usd / price, "qty": usd / price,46 "peak": price, "liq0": liq_usd, "opened": time.time(), "steps": 0}47 save(book)48 record(mint, symbol, "open", usd, 0, "entry")4950def sell(mint, frac_of_original, price, reason) -> float:51 """ORIGINAL साइज़ का एक हिस्सा बेचता है (1.0 = बचा हुआ सब कुछ)। रियलाइज़्ड PnL रिटर्न करता है।"""52 book = load()53 p = book[mint]54 q = min(p["qty"], p["qty0"] * frac_of_original)55 pnl = q * (price - p["entry"])56 p["qty"] -= q57 action = "close" if p["qty"] <= p["qty0"] * 1e-6 else "partial"58 record(mint, p["symbol"], action, q * price, pnl, reason)59 if action == "close":60 del book[mint]61 save(book)62 return pnl6364if __name__ == "__main__":65 # लाइव मोड: अपने वॉलेट में खरीदने के बाद -> python book.py add <mint> <usd> <price> <liq_usd>66 # हाथ से बेचने के बाद -> python book.py close <mint> <price>67 cmd = sys.argv[1]68 if cmd == "add":69 mint, usd, price, liq = sys.argv[2], float(sys.argv[3]), float(sys.argv[4]), float(sys.argv[5])70 open_position(mint, mint[:6], price, liq, usd)71 elif cmd == "close":72 print(round(sell(sys.argv[2], 1.0, float(sys.argv[3]), "manual"), 2))
07. एंट्री से पहले एग्जिट लिखो
ज़्यादातर लोग हरी कैंडल को घूरते हुए तय करते हैं कि कब बेचना है। कुछ भी तय करने का यह सबसे बुरा वक्त है। इस डेस्क पर हर एग्जिट टोकन खरीदने से पहले मौजूद होता है, और बॉट बस हर 10 मिनट में उसे चेक करता है:
- एंट्री से लिक्विडिटी 40% खिंच गई: बाहर, पूरा, कोई सवाल नहीं
- 35% नीचे: बाहर
- 100% ऊपर: आधा बाहर, बाकी मार्केट का पैसा है
- 200% ऊपर: एक और चौथाई बाहर
- पहली बुकिंग के बाद, बाकी तब निकलता है जब कीमत अपने पीक से 30% गिरती है
- छह घंटे बिना +20% के: बाहर, स्लॉट उम्मीद से ज़्यादा कीमती है
इसे watch.py के रूप में सेव करो:
1# watch.py2# हर ओपन पोजीशन, हर 10 मिनट में। जब कुछ नहीं बदलता तो कुछ प्रिंट नहीं करता।3import time4from config import EXIT, PAPER5from market import pool6import book78def watch() -> list[str]:9 events = []10 for mint, p in list(book.load().items()):11 try:12 m = pool(mint)13 except Exception as e:14 events.append(f"{p['symbol']}: price feed down ({e}), holding, will retry")15 continue16 if not m or m["price"] <= 0:17 events.append(f"{p['symbol']}: pool gone. treat as rugged, sell what you can")18 book.sell(mint, 1.0, 0.0, "pool_gone")19 continue2021 price = m["price"]22 b = book.load(); s = b[mint]23 s["peak"] = max(s["peak"], price); book.save(b)24 pct = (price / s["entry"] - 1) * 10025 hours = (time.time() - s["opened"]) / 36002627 def out(frac, why):28 pnl = book.sell(mint, frac, price, why)29 verb = "sold" if PAPER else "SELL NOW in your wallet"30 size = "the rest" if frac >= 1 else f"{int(frac * 100)}%"31 events.append(f"{s['symbol']}: {verb} {size} at {pct:+.0f}% ({why}), pnl ${pnl:+.2f}")3233 if m["liq_usd"] < s["liq0"] * (1 - EXIT["liq_drop_pct"] / 100):34 out(1.0, "liquidity_pulled"); continue35 if pct <= EXIT["stop_pct"]:36 out(1.0, "stop"); continue37 ladder = EXIT["ladder"]38 if s["steps"] < len(ladder) and pct >= ladder[s["steps"]][0]:39 out(ladder[s["steps"]][1], f"take_profit_{ladder[s['steps']][0]}")40 b = book.load()41 if mint in b:42 b[mint]["steps"] += 1; book.save(b)43 continue44 if s["steps"] > 0 and price <= s["peak"] * (1 - EXIT["trail_pct"] / 100):45 out(1.0, "trailing_stop"); continue46 if hours >= EXIT["time_stop_hours"] and pct < EXIT["time_stop_min_pct"]:47 out(1.0, "time_stop")48 return events4950if __name__ == "__main__":51 for e in watch():52 print(e)
1LIQUIDITY FIRST। खिंचा हुआ पूल हर दूसरे नियम को हरा देता है, यहाँ तक कि हरी पोजीशन पर भी।2TRAIL पहली बुकिंग के बाद तैयार होता है। उससे पहले, -35% ही एकमात्र फ्लोर है।3DEAD MONEY भी नुकसान है। छह शांत घंटे अगले टोकन के लिए स्लॉट खाली कर देते हैं।4SILENCE IS A STATUS। watch.py तब कुछ प्रिंट नहीं करता जब कुछ नहीं बदलता, इसलिए शांत चैट का मतलब है कि तुम्हें देखने की ज़रूरत नहीं है।

08. सीखो कि कोई टोकन 14 तरीकों से कैसे मरता है
अगर मुझे ऊपर दी गई हर चीज़ फेंकनी पड़े और सिर्फ एक रखनी हो, तो वह यही होगी। यह बिना किसी बॉट के भी काम करता है: अपनी अगली खरीद से पहले rugcheck.xyz और dexscreener पर हाथ से यही 14 चेक्स चलाओ और तुम उन ज़्यादातर टोकन्स को छोड़ दोगे जिनके लिए तुम्हें पछताना पड़ता।
इनमें से 13 चेक्स कोड हैं। तुलनाएँ, कोई मॉडल नहीं, कोई राय नहीं। 14वाँ एकमात्र ऐसा है जिसे Grok की ज़रूरत है।
#
चेक
कब मारता है
क्यों
1
पहले से रग्ड
Rugcheck इसे रग्ड मार्क करता है
किसी ने पहले ही कर दिया
2
मिंट अथॉरिटी
अभी भी ओपन है
डेव तुम्हारे बैग में नई सप्लाई छाप सकता है
3
फ्रीज़ अथॉरिटी
अभी भी ओपन है
डेव तुम्हारे टोकन्स फ्रीज़ कर सकता है, तुम बेच नहीं सकते
4
डेंजर फ्लैग्स
कोई भी danger-level रिस्क
Rugcheck ने पहले ही कुछ ऐसा देख लिया है जिसे तुम्हें गलत साबित करना होगा
5
रिस्क स्कोर
40/100 से ऊपर
छोटी-छोटी चेतावनियाँ जुड़ जाती हैं
6
LP लॉक
सबसे बड़ा पूल 90% से कम लॉक्ड या बर्न
अनलॉक्ड लिक्विडिटी एक पुल बटन है
7
टॉप 10 होल्डर्स
30% से ज़्यादा, पूल्स और लॉकर्स को छोड़कर
दस वॉलेट मिलकर तुम्हारी ट्रेड खत्म कर सकते हैं
8
डेव वॉलेट
क्रिएटर अभी भी 5% से ज़्यादा होल्ड करता है
डेव पहला बेचने वाला होता है
9
इनसाइडर्स / बंडल्स
कोई भी इनसाइडर होल्डर या इनसाइडर ग्राफ हिट
एक साथ फंड किए गए वॉलेट एक साथ बेचते हैं
10
पूल डेप्थ
$30k से कम लिक्विडिटी
तुम किसी के एग्जिट बन जाओगे
11
टिकट शेयर
तुम्हारा $25 पूल के 1% से ज़्यादा है
तुम्हारी अपनी खरीद कीमत हिला देती है
12
उम्र
30 मिनट से कम या 72h से ज़्यादा
किसी भी रिपोर्ट के लिए बहुत नया, या मूव पहले ही हो चुका है
13
सेल्स मौजूद हैं
पिछले एक घंटे में 20+ बाय्स, ज़ीरो सेल्स
यही हनीपॉट का आकार है
14
X रीड (Grok)
कोई पोस्ट नहीं, कॉपीकैट CA, खरीदा हुआ हाइप, रग हिस्ट्री
वह हिस्सा जो कोई API रिटर्न नहीं करता

09. कोड को स्पष्ट वालों को मारने दो
चेक्स 1 से 9। यह एक रिपोर्ट फेच करता है और सिर्फ वे फील्ड्स रखता है जिन्हें डेस्क पढ़ती है। Grok कभी रॉ रिपोर्ट नहीं देखता, एक भारी पेलोड टोकन्स का खर्चा बढ़ाता है और सटीकता घटाता है।
एक बात जो लोग मिस कर देते हैं: पूल का अपना वॉल्ट और लॉकर्स टॉप होल्डर्स लिस्ट में बैठे होते हैं। उन्हें गिनो तो हर टोकन व्हेल टोकन लगेगा। कोड टॉप 10 का जोड़ लगाने से पहले उन्हें हटा देता है।
1# rugcheck.py2# हर टोकन की एक रिपोर्ट, जिसे उन फील्ड्स तक सीमित किया गया है जिन्हें डेस्क पढ़ती है। Grok कभी रॉ रिपोर्ट नहीं देखता।3import requests4from config import FACTS56RC = "https://api.rugcheck.xyz/v1/tokens"78def report(mint: str) -> dict:9 r = requests.get(f"{RC}/{mint}/report", timeout=20)10 r.raise_for_status()11 d = r.json()12 token = d.get("token") or {}13 known = d.get("knownAccounts") or {}1415 def is_pool(h): # AMM वॉल्ट्स और लॉकर्स टॉप होल्डर्स में होते हैं, वे व्हेल नहीं हैं16 tag = known.get(h.get("owner")) or known.get(h.get("address")) or {}17 return str(tag.get("type", "")).upper() in ("AMM", "LOCKER")1819 holders = [h for h in (d.get("topHolders") or []) if not is_pool(h)]20 markets = sorted(d.get("markets") or [],21 key=lambda m: ((m.get("lp") or {}).get("baseUSD") or 0)22 + ((m.get("lp") or {}).get("quoteUSD") or 0),23 reverse=True)24 lp = (markets[0].get("lp") or {}) if markets else {}25 supply = token.get("supply") or 026 risks = d.get("risks") or []2728 return {29 "mint": mint,30 "symbol": (d.get("tokenMeta") or {}).get("symbol"),31 "rugged": bool(d.get("rugged")),32 "risk_score": d.get("score_normalised"),33 "danger": [x.get("name") for x in risks if x.get("level") == "danger"],34 "warn": [x.get("name") for x in risks if x.get("level") == "warn"],35 "mint_authority": token.get("mintAuthority", d.get("mintAuthority")),36 "freeze_authority": token.get("freezeAuthority", d.get("freezeAuthority")),37 "lp_locked_pct": lp.get("lpLockedPct", d.get("lpLockedPct")),38 "top10_pct": round(sum(h.get("pct") or 0 for h in holders[:10]), 2) if holders else None,39 "dev_pct": round((d.get("creatorBalance") or 0) / supply * 100, 2) if supply else None,40 "insiders": sum(1 for h in holders if h.get("insider")) + (d.get("graphInsidersDetected") or 0),41 "holders": d.get("totalHolders"),42 }4344def fact_kill(t: dict) -> str | None:45 """सीधी तुलनाएँ। पहली विफलता जीतती है, कारण लॉग हो जाता है।"""46 if t["risk_score"] is None: return "no_report"47 if t["rugged"]: return "already_rugged"48 if t["mint_authority"]: return "mint_open"49 if t["freeze_authority"]: return "freeze_open"50 if t["danger"]: return "danger:" + t["danger"][0]51 if t["risk_score"] > FACTS["max_risk_score"]: return "risk_score"52 if t["lp_locked_pct"] is None or t["lp_locked_pct"] < FACTS["min_lp_locked_pct"]:53 return "lp_unlocked"54 if t["top10_pct"] is None or t["top10_pct"] > FACTS["max_top10_pct"]:55 return "top10_heavy"56 if t["dev_pct"] is None or t["dev_pct"] > FACTS["max_dev_pct"]:57 return "dev_holds"58 if t["insiders"] > FACTS["max_insiders"]: return "insiders"59 return None

10. सिर्फ कॉन्ट्रैक्ट नहीं, पूल भी चेक करो
चेक्स 10 से 13। कॉन्ट्रैक्ट परफेक्ट हो सकता है और फिर भी पूल तुम्हें बाहर नहीं निकलने देगा। यह टोकन के सबसे गहरे पूल को पढ़ता है और चार बोरिंग सवाल पूछता है: क्या इसमें काफी कुछ है, इसके मुकाबले मेरा टिकट कितना बड़ा है, यह कितना पुराना है, और क्या कोई सच में बेच रहा है।
1# market.py2# खुद पूल: डेप्थ, उम्र, कीमत, और क्या कोई सच में बेच सकता है।3import time4import requests5from config import FACTS, TICKET_USD67DS = "https://api.dexscreener.com/tokens/v1/solana"89def pool(mint: str) -> dict | None:10 r = requests.get(f"{DS}/{mint}", timeout=15)11 r.raise_for_status()12 data = r.json()13 pairs = data if isinstance(data, list) else (data.get("pairs") or [])14 pairs = [p for p in pairs if (p.get("baseToken") or {}).get("address") == mint]15 if not pairs:16 return None17 p = max(pairs, key=lambda x: (x.get("liquidity") or {}).get("usd") or 0)18 h1 = (p.get("txns") or {}).get("h1") or {}19 born = p.get("pairCreatedAt")20 return {21 "symbol": (p.get("baseToken") or {}).get("symbol"),22 "price": float(p.get("priceUsd") or 0),23 "liq_usd": (p.get("liquidity") or {}).get("usd") or 0,24 "age_min": round((time.time() * 1000 - born) / 60000) if born else None,25 "buys_1h": h1.get("buys", 0),26 "sells_1h": h1.get("sells", 0),27 "vol_1h": (p.get("volume") or {}).get("h1"),28 "url": p.get("url"),29 }3031def market_kill(m: dict | None) -> str | None:32 if not m: return "no_pool"33 if m["price"] <= 0: return "no_price"34 if m["liq_usd"] < FACTS["min_liquidity_usd"]: return "thin_pool"35 if TICKET_USD / m["liq_usd"] > FACTS["max_ticket_share"]: return "ticket_too_big"36 if m["age_min"] is None or m["age_min"] < FACTS["min_age_min"]:37 return "too_fresh"38 if m["age_min"] > FACTS["max_age_hours"] * 60: return "too_old"39 if m["buys_1h"] >= 20 and m["sells_1h"] == 0: return "nobody_can_sell"40 return None
11. Grok को वह पढ़ने दो जो कोड नहीं पढ़ सकता
चेक 14। यही कारण है कि डेस्क Grok पर चलती है और किसी अन्य मॉडल पर नहीं: यह सोचते समय X सर्च कर सकता है। कोई टोकन सभी 13 चेक्स पास कर सकता है और फिर भी एक अलग कॉन्ट्रैक्ट एड्रेस वाला कॉपीकैट हो सकता है, या ऐसा लॉन्च हो सकता है जहाँ पिछले हफ्ते बने चालीस अकाउंट्स ने एक ही मिनट में एक ही वाक्य पोस्ट किया हो। कोई API यह रिटर्न नहीं करता। X करता है।
इसे grok.py के रूप में सेव करो। यह एकमात्र फाइल है जो की पढ़ती है और एकमात्र जगह है जहाँ डेस्क xAI से बात करती है:
1# grok.py2# यह एकमात्र फ़ाइल है जिसमें key रखी जाती है और यही एक जगह है जहाँ desk xAI से बात करता है।3import os, json, datetime, requests4from config import MODEL56URL = "https://api.x.ai/v1/responses"78def _key() -> str:9 k = os.environ.get("XAI_API_KEY")10 if not k and os.path.exists(".env"):11 for line in open(".env"):12 if line.startswith("XAI_API_KEY="):13 k = line.split("=", 1)[1].strip().strip('"')14 if not k:15 raise RuntimeError("no XAI_API_KEY in the environment or in .env")16 return k1718def _text(resp: dict) -> str:19 if isinstance(resp.get("output_text"), str):20 return resp["output_text"]21 parts = []22 for item in resp.get("output") or []:23 if item.get("type") == "message":24 for c in item.get("content") or []:25 if c.get("type") in ("output_text", "text"):26 parts.append(c.get("text") or "")27 return "\n".join(parts)2829def ask(system: str, payload: dict, read_x: bool = False) -> dict:30 """एक कॉल, JSON इनपुट, JSON आउटपुट। जो कुछ भी JSON नहीं है वह error देगा, और error का मतलब upstream पर SKIP है।"""31 body = {"model": MODEL,32 "input": [{"role": "system", "content": system},33 {"role": "user", "content": json.dumps(payload)}]}34 if read_x:35 since = (datetime.date.today() - datetime.timedelta(days=3)).isoformat()36 body["tools"] = [{"type": "x_search", "from_date": since}]37 body["max_turns"] = 2 # खोज के दो राउंड, फिर उसे जवाब देना ही होगा38 r = requests.post(URL, timeout=180, json=body,39 headers={"Authorization": f"Bearer {_key()}"})40 r.raise_for_status()41 text = _text(r.json())42 start, end = text.find("{"), text.rfind("}")43 if start == -1:44 raise ValueError(f"no json in answer: {text[:200]}")45 return json.loads(text[start:end + 1])
इसे prompts.py के रूप में save करें। यही वह फ़ाइल है जिसे आप वास्तव में दोबारा पढ़ेंगे:
1# prompts.py2# desk पर मौजूद एकमात्र Grok prompt। यही वह फ़ाइल है जिसे आप वास्तव में दोबारा पढ़ेंगे।34JUDGE_PROMPT = """5तुम RUG DESK हो। एक Solana memecoin ने अभी-अभी कोड में हर hard check पास कर लिया है:6authorities, LP, holders, dev wallet, insiders, pool depth, age।7उन नंबरों को दोबारा चेक मत करो। तुम्हें तय करना है कि क्या एक flat ticket अंदर जाएगा।8तुम कभी size तय नहीं करते, तुम कभी exits नहीं चुनते।910INPUT: {"token": {...rugcheck facts...}, "pool": {...dexscreener facts...}}1112STEP 1. पिछले 72 घंटों के लिए X पर ticker और contract address सर्च करो।13STEP 2. सिर्फ वही judge करो जो कोड नहीं देख सकता:14 - क्या warn-level के रिस्क मिलकर कुछ और बुरा बन जाते हैं15 - सबसे पहले किसने पोस्ट किया: dev ने, हिस्ट्री वाले किसी असली account ने, या नए accounts की बाढ़ ने16 - organic या खरीदा हुआ: एक जैसे शब्द, एक ही मिनट, बिना किसी past वाले accounts17 - क्या उन पोस्ट्स में दिया गया contract address INPUT वाले से मेल खाता है18 - क्या इस ticker नाम या इस dev का पहले किसी rug से नाता रहा है1920सिर्फ JSON RETURN करो:21{"verdict": "BUY" | "SKIP", "confidence": 0.0-1.0,22 "why": "अधिकतम दो लाइन", "x_read": "X कैसा दिखता है इस पर एक लाइन",23 "main_risk": "एक लाइन"}2425X पर शून्य पोस्ट भी एक जवाब है: कोई नहीं जानता कि यह मौजूद है। SKIP।26X पर उसी ticker के तहत कोई दूसरा contract address: copycat का रिस्क। SKIP।27जब भी तुम्हें जिस field की जरूरत थी वह null हो, तो कभी BUY जवाब मत दो।28कभी price targets का जिक्र मत करो। तुम उन्हें नहीं जानते।29"""
12. इसे एक कमांड में जोड़ें
एक contract address अंदर, एक verdict बाहर। limits, facts, pool, Grok — इसी क्रम में, और जो पहला no कहेगा, वहीं सब रुक जाएगा:
1# check.py2# एक contract address अंदर, एक verdict बाहर। जब भी कोई token आपके desk पर आता है, यह हर बार चलता है।3import csv, json, os, sys, time4from config import LOG, MIN_CONFIDENCE, PAPER, TICKET_USD5from rugcheck import report, fact_kill6from market import pool, market_kill7from grok import ask8from prompts import JUDGE_PROMPT9import book1011def log(row: dict):12 new = not os.path.exists(LOG)13 with open(LOG, "a", newline="") as f:14 w = csv.DictWriter(f, fieldnames=["time", "mint", "symbol", "stage", "verdict",15 "confidence", "reason"])16 if new:17 w.writeheader()18 w.writerow({k: row.get(k) for k in w.fieldnames})1920def check(mint: str) -> dict:21 if (g := book.guard(mint)): # limits, free22 return {"stage": "limits", "verdict": "SKIP", "reason": g}2324 try:25 token = report(mint) # rug filter, free26 except Exception as e:27 return {"stage": "facts", "verdict": "SKIP", "reason": f"rugcheck failed: {e}"}28 if (k := fact_kill(token)):29 return {"stage": "facts", "verdict": "SKIP", "reason": k, "symbol": token["symbol"]}3031 try:32 m = pool(mint) # pool, free33 except Exception as e:34 return {"stage": "pool", "verdict": "SKIP", "reason": f"dexscreener failed: {e}"}35 if (k := market_kill(m)):36 return {"stage": "pool", "verdict": "SKIP", "reason": k, "symbol": token["symbol"]}3738 try:39 ans = ask(JUDGE_PROMPT, {"token": token, "pool": m}, read_x=True) # एकमात्र paid step40 except Exception as e:41 return {"stage": "grok", "verdict": "SKIP", "reason": f"grok failed: {e}"}4243 verdict, conf = ans.get("verdict"), ans.get("confidence") or 044 if verdict == "BUY" and conf < MIN_CONFIDENCE:45 verdict = "SKIP"46 ans["why"] = f"low confidence {conf}"47 return {**ans, "stage": "grok", "verdict": verdict, "symbol": m["symbol"] or token["symbol"],48 "reason": ans.get("why"), "price": m["price"], "liq_usd": m["liq_usd"], "url": m["url"]}4950if __name__ == "__main__":51 mint = sys.argv[1].strip()52 v = check(mint)53 log({"time": time.strftime("%Y-%m-%d %H:%M"), "mint": mint, **v})54 if v["verdict"] == "BUY":55 if PAPER:56 book.open_position(mint, v["symbol"], v["price"], v["liq_usd"])57 v["action"] = f"PAPER BUY ${TICKET_USD} at {v['price']}"58 else:59 v["action"] = (f"APPROVAL NEEDED: buy ${TICKET_USD} of {v['symbol']} in your own wallet, "60 f"then run: python book.py add {mint} {TICKET_USD} <fill price> {v['liq_usd']}")61 print(json.dumps(v, indent=2))
इसे इस्तेमाल करने के लिए आपको scanner की जरूरत नहीं है। किसी call channel, पोस्ट या दोस्त के message से मिला CA: बस bot को "check <CA>" बताएं और यह एक लाइन चलाएगा। जो वापस आएगा वह ऐसा दिखेगा (उदाहरण का ढांचा, असली token नहीं):
1{2 "verdict": "SKIP",3 "confidence": 0.78,4 "why": "हर hard check पास करता है, लेकिन पहली 30 पोस्ट्स इसी हफ्ते बने accounts से आईं, एक जैसे शब्दों के साथ।",5 "x_read": "एक असली account, नए accounts की बाढ़, कोई CA mismatch नहीं",6 "main_risk": "खरीदा हुआ hype, पोस्टिंग रुकते ही buyers निकल जाएंगे",7 "stage": "grok",8 "symbol": "EXAMPLE",9 "reason": "हर hard check पास करता है, लेकिन पहली 30 पोस्ट्स इसी हफ्ते बने accounts से आईं, एक जैसे शब्दों के साथ।"10}

1राय से पहले तथ्य। Grok कभी तय नहीं करता कि कोई mint खुला है या नहीं।2FAILED CALL का मतलब SKIP है। Rugcheck डाउन, DexScreener डाउन, Grok डाउन, खराब JSON: SKIP।3NULL का मतलब साफ नहीं है। जो field वापस नहीं आई वह token को खत्म कर देती है, उसे पास नहीं कराती।4प्रति TOKEN एक VERDICT। जब तक यह BUY न कहे, कभी दोबारा न चलाएं। अगर आप असहमत हैं, तो आप config.py से असहमत हैं।5BUYS को नहीं, KILLS को पढ़ें। buys अच्छा महसूस कराते हैं। kill reasons आपको बताते हैं कि filter काम कर रहा है या नहीं।
13. तीन routines, हर एक एक वाक्य में
कोई workflow builder नहीं। आप bot को हर routine एक बार, एक वाक्य में बताते हैं, और वह आपको अगला run दिखाता है। ये मेरे हैं, शब्द-दर-शब्द:
1हर 10 मिनट में, /workspace/desk में python watch.py चलाओ।2अगर यह कुछ प्रिंट नहीं करता, तो कुछ मत कहो। अगर यह कुछ प्रिंट करता है, तो उसे शब्द-दर-शब्द यहाँ पोस्ट करो।
1हर 30 मिनट में, /workspace/desk में python scan.py चलाओ।2सिर्फ BUY verdicts पोस्ट करो: symbol, confidence, x_read।3अगर Rugcheck या DexScreener डाउन है, तो एक बार बताओ कि कौन सा है, हर run पर नहीं।
1हर दिन 21:30 बजे, /workspace/desk में python report.py चलाओ और output यहाँ पोस्ट करो।2आज जो एक चीज़ काम आई उसे जोड़ो और config.py में उस एक number पर सवाल उठाओ जिस पर तुम्हें शक है, कारण सहित।3वह number खुद कभी मत बदलो।
वे दो फ़ाइलें जो इन routines को चलाती हैं। report.py के रूप में save करें:
1# report.py2# शाम की रिपोर्ट। इसमें सब कुछ checks.csv और trades.csv से आता है, memory से कुछ नहीं।3import csv, os, time4from collections import Counter5from config import LOG, PAPER6import book78day = time.strftime("%Y-%m-%d")9checks = [r for r in csv.DictReader(open(LOG))] if os.path.exists(LOG) else []10checks = [r for r in checks if r["time"].startswith(day)]11done = [t for t in book.trades() if t["time"].startswith(day) and t["action"] != "open"]1213by_stage = Counter(r["stage"] for r in checks if r["verdict"] == "SKIP")14buys = [r for r in checks if r["verdict"] == "BUY"]15wins = [t for t in done if float(t["pnl"]) > 0]16reasons = Counter(r["reason"] for r in checks if r["stage"] in ("facts", "pool"))1718print(f"EVENING REPORT {day} {'(PAPER)' if PAPER else '(LIVE)'}")19print(f"checked: {len(checks)}")20print(f"killed by rug filter: {by_stage['facts']} | by pool: {by_stage['pool']} | "21 f"by Grok: {by_stage['grok']} | by limits: {by_stage['limits']}")22print(f"bought: {len(buys)} | open now: {len(book.load())}")23print(f"realized pnl today: ${book.today_pnl():+.2f}")24if done:25 print(f"green exits: {len(wins)}/{len(done)}")26 best = max(done, key=lambda t: float(t["pnl"]))27 worst = min(done, key=lambda t: float(t["pnl"]))28 print(f"best: {best['symbol']} ${float(best['pnl']):+.2f} | worst: {worst['symbol']} ${float(worst['pnl']):+.2f}")29if reasons:30 top, n = reasons.most_common(1)[0]31 print(f"most common kill: {top} ({n}x)")
और scan.py, वैकल्पिक lead source। यह उन नए Solana tokens को खींचता है जिन्होंने अभी-अभी DexScreener profile के लिए पैसे दिए हैं। paid profile quality का signal नहीं है, इसका मतलब सिर्फ इतना है कि dev ने पैसा खर्च किया। बाकी सब filter तय करता है:
1# scan.py2# वैकल्पिक lead source: नए Solana tokens जिन्होंने अभी-अभी DexScreener profile के लिए पैसे दिए।3# paid profile quality का signal नहीं है, इसका मतलब सिर्फ इतना है कि dev ने पैसा खर्च किया। filter तय करता है।4import csv, os, subprocess, sys5import requests6from config import LOG78seen = {r["mint"] for r in csv.DictReader(open(LOG))} if os.path.exists(LOG) else set()9r = requests.get("https://api.dexscreener.com/token-profiles/latest/v1", timeout=15)10r.raise_for_status()11fresh = [t["tokenAddress"] for t in r.json()12 if t.get("chainId") == "solana" and t.get("tokenAddress") not in seen]1314for mint in fresh[:5]: # प्रति run पाँच, ताकि एक व्यस्त घंटा API budget खत्म न कर दे15 subprocess.run([sys.executable, "check.py", mint])
आज रात की आखिरी बात: Settings, General, Auto-review। दो Ask first rules जोड़ें, ये action को रोक देते हैं और चाहे कोई भी routine कुछ भी सोचे, आपका इंतजार करते हैं:
1किसी भी wallet connection, signature, swap या transfer से पहले पहले पूछो।2config.py नाम की किसी भी फ़ाइल को edit करने से पहले पहले पूछो।


14. एक डॉलर से पहले एक हफ्ता paper पर
PAPER = True का मतलब है कि desk पैसे के अलावा सब कुछ असली तरीके से करता है। असली tokens, असली prices, असली exits, नकली fills। सात दिन बाद, checks.csv खोलें और उसे ऐसे पढ़ें जैसे किसी अजनबी ने लिखा हो।
आपको क्या देखना है: कौन सा check सबसे ज्यादा kills करता है, क्या BUYs वे होते जिन्हें आप खरीदते, और क्या कोई SKIP reason गलत लगता है। paper fill screen price पर होता है, live fill कभी नहीं, इसलिए paper result को forecast नहीं बल्कि ceiling मानें।
जब आप live जाएं, PAPER को False कर दें और आखिरी step के अलावा कुछ नहीं बदलता। check.py खरीदना बंद कर देता है और इसके बजाय approval line पोस्ट करता है: अपने wallet में खुद $25 खरीदें, फिर एक command से इसे book में डाल दें ताकि watch.py इसे guard करना शुरू कर दे।
जब यह टूटे
यह पैसे से जुड़ता है, इसलिए हर failure का एक जवाब उसके होने से पहले ही लिख लिया जाता है।
1xAI से 401 -> खराब key। Take over करें, .env फिर से लिखें, step 03 वाला curl दोबारा चलाएं।2xAI से 400 / 404 -> model का नाम बदल गया। config.py में MODEL ठीक करें, और कुछ नहीं।3xAI से 429 -> rate limit। वह token SKIP है, अगला run आगे बढ़ जाएगा। इसे कभी loop न करें।4x_search से जुड़ी error -> आपका MODEL X सर्च नहीं कर सकता। console.x.ai -> Models में से कोई ऐसा चुनें जो कर सके।5Grok prose में जवाब दे -> ValueError, logged, SKIP। कभी किसी paragraph को trade में न बदलें।6rugcheck 404 या खाली -> index होने के लिए बहुत नया। SKIP। नया होने का मतलब साफ होना नहीं है।7सब पर lp_unlocked -> कुछ pool types में LP token होता ही नहीं। उस number को छूने से पहले खुद rugcheck पर एक खोलें,8 और उसे लिखित में बदलें।9no_pool -> अभी DEX पर trade नहीं हो रहा, या Solana नहीं है। SKIP।10routines शांत हो गए -> आपके लंबे समय तक दूर रहने के बाद Grok Bot routines को pause कर देता है।11 Routines खोलें और उन्हें वापस on करें।
बिल
judge से पहले सब कुछ मुफ्त है: limits, Rugcheck, DexScreener। एकमात्र paid step है उन 13 checks से बचे हर token के लिए एक Grok call, जिसमें X search on हो।
1cost_per_token = input_tokens / 1_000_000 * price_per_M_input2 + output_tokens / 1_000_000 * price_per_M_output3 + posts_fetched / 1_000 * 5 # X search: 1,000 fetched posts पर $545max_turns = 2 search को दो rounds तक सीमित रखता है, इसलिए posts_fetched छोटा रहता है।6हर response अपना x_posts_fetched बताता है, इसलिए पहले दिन ही आपको असली number पता चल जाता है।78price: [console.x.ai से price]
वह हिस्सा जिसमें लोग गलती करते हैं: बिल scanner के साथ नहीं, बल्कि survivors के साथ बढ़ता है। scan.py desk को दिन में 240 tokens दे सकता है और उनमें से ज्यादातर Grok के सुनने से पहले ही मुफ्त में मर जाते हैं।

जरूरी बात
यह मेरा setup है, आपकी strategy नहीं।
config.py में हर number मेरा है, जिसे $25 ticket और किसी चीज़ के शून्य होते देखने की मेरी अपनी सहनशीलता के लिए चुना गया है। ज्यादातर memecoins शून्य हो जाते हैं, और जो लोग उन्हें trade करते हैं उनमें से ज्यादातर पैसा खोते हैं। filter किसी token को अच्छा नहीं बनाता। यह हारने के स्पष्ट तरीकों को हटाता है, और आपको यह पढ़ने पर मजबूर करता है कि हर token क्यों मरा।
paper पर एक हफ्ता चलाएं। kills को पढ़ें। जिन numbers से आप असहमत हैं, उन्हें लिखित में बदलें। constants को नहीं, ढांचे को copy करें। यह financial advice नहीं है।
code kills करता है, Grok X पढ़ता है, आप sign करते हैं। किसी script को कभी judgment call नहीं मिलता, Grok को कभी calculator नहीं मिलता, और आपके अलावा किसी को wallet नहीं मिलता।
अपनी अगली buy से पहले इसे save करें। अगर आप भी यही चलाने की योजना बना रहे हैं तो follow करें, इस तरह का और content आने वाला है 🫶
मेरा tg - t.me/+8wAXS0nHWgA2MGEy
मेरा github - github.com/0xboan
यहाँ trade करें - fomo.family/r/0xboan





