windowdog 3 days ago
parent
commit
75305ed3c0
33 changed files with 2095 additions and 430 deletions
  1. 271 0
      src/code/dune_sql/dune_get_dalao_buy_same_token_And_token_dif.sql
  2. 95 0
      src/code/dune_sql/dune_token_owner_transfer_count.sql
  3. 170 0
      src/code/dune_sql/get_history_token_holders_by_transfer_And_specialAdd.sql
  4. 227 0
      src/code/dune_sql/get_token_transfer_row_OR_info.sql
  5. 144 0
      src/code/dune_sql/get_tokenswap_row_special_add_OR_time.sql
  6. 354 0
      src/code/dune_sql/get_tokenswap_top_BuyOrDiff_amount.sql
  7. 0 0
      src/code/tamper_dune_get_dalao_buy_same_token_And_token_dif.js
  8. 39 60
      src/code/tamper_get_top_sol_gmgn_nowuse.js
  9. 0 367
      src/code/tamper_get_top_trader_sol_gmgn.js
  10. 76 0
      src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/001_01_merge_dune_hold_info_from_manydunecsv_to_一个多列的xlsx文档.py
  11. BIN
      src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/001_01_merge_dune_hold_info_from_manydunecsv_to_一个多列的xlsx文档.xlsx
  12. 27 0
      src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/dune_holders_xx_xx_0317日0655.csv
  13. 27 0
      src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/dune_holders_xx_xx_0317日0745.csv
  14. 27 0
      src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/dune_holders_xx_xx_0317日1000.csv
  15. 27 0
      src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/不确定dune_holders_xx_xx_0317日0620.csv
  16. BIN
      src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/002_dune_buy_sametoken.xlsx
  17. BIN
      src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/003_dune_sametoken_time_diff.xlsx
  18. 55 0
      src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/003_handle_dune_buy_sametoken_time_diff.py
  19. 131 0
      src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/dune_sametoken_time_diff.csv
  20. 70 0
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/001_01_merge_dune_hold_info_from_manydunecsv_to_一个多列的xlsx文档.py
  21. 77 0
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/001_merge_top20_holders_add.py
  22. BIN
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/001_top20_holders.xlsx
  23. BIN
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/002_dune_buy_sametoken.xlsx
  24. 55 0
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/002_handle_dune_buy_sametoken.py
  25. BIN
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/003_dune_sametoken_time_diff.xlsx
  26. 55 0
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/003_handle_dune_buy_sametoken_time_diff.py
  27. 43 0
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/dune_buy_sametoken_xx_xx_xx.csv
  28. 24 0
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/dune_holders_xx_xx_0316日0330.csv
  29. 50 0
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/dune_holders_xx_xx_0316日2200.csv
  30. 45 0
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/dune_sametoken_time_diffxx_xx_xx.csv
  31. 4 1
      src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/exclude_add.csv
  32. BIN
      src/library/analysis_token/new_token/df_gmgn_pump_total.xlsx
  33. 2 2
      src/library/analysis_token/笔记.md

+ 271 - 0
src/code/dune_sql/dune_get_dalao_buy_same_token_And_token_dif.sql

@@ -0,0 +1,271 @@
+-- -- 两个方向
+-- -- 1.获取某些dalao的共同购买的token以及token的购买人数
+-- -- 2.获取某些dalao 针对某些token的购买时间,获取是否是早期购买者
+-- -- 为了节省private 空间 公用一个。
+
+
+ 
+
+-- --第一个方向代码 
+-- --开始 开始 开始 开始 开始 开始 开始 开始 开始
+-- --获取某些dalao的共同购买的token以及token的购买人数
+
+WITH
+    input_address (address) as (
+        values
+            ('5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb'),
+            ('5FSt9LxycNWfdXFmhuDbYonoGcnBJDjZYvqC3ZuA9RGc'),
+            ('UKCC5vtp2U5281ZSaSqafDbb9aFcrj84BKsf6p5Aqxm'),
+            ('SGd7pJkt1heW4pTWLBHVtMoqaN1Anvvbb5wp5Juktrb'),
+            ('81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq'),
+            ('2oViQCbm1JWWwvvKeq2zsAns1cT48WDTk77aS7ZAPnjJ'),
+            ('EW5o2Nr2oHdr8YbWfdAFkcpxT2bqvi2jdDpaTepvoQNa'),
+            ('EWpftEEZJ7AJyGJprctqc131qQtpjWkoJahM1D9xdTiH'),
+            ('CJT24gYwv6Sadbj6jUb6ESnm6jYYZdBEzZoeH84C35tq'),
+            ('6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g'),
+            ('ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj'),
+            ('HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe'),
+            ('CMGdz9VBDDmc5uoZFxux4Jv1gYxoUW1Xdu8NxfijCTxJ'),
+            ('5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS'),
+            ('ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd'),
+            ('9wYuJBuoBiNDxk97ZmCqdaBjB3gZ1iFnEBU2Jme3phpV'),
+            ('H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk'),
+            ('2swb9pJ9Ak5TLBsfsBcr5QVCStM5vNZAcyhRY9uZTSi5'),
+            ('DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc'),
+            ('J3ctoNuCEGXD63rf84GfgkXYczt7F6uycpVczzK57MfH'),
+            ('5RANC5iQzzeLFcr1D42Pih4ksUMfa7KXMoCkzoRhujuP'),
+            ('8jzB2HEK322ntFCfzUwajUt9hjYA25L9F8LangTcPfMY'),
+            ('5sEVaCVRRyfWPhw54c4z3h59ZvJ9tL5xK2tYfT4gQnDZ'),
+            ('A2U5owsnFK2jzgBguZCDqXsPzra7ufpYG5N6CFCeQrk6')
+    ),
+    temp_01 AS (
+        SELECT
+            trader_id,
+            block_time,
+            tx_id,
+            token_bought_mint_address as token_address,
+            token_sold_mint_address,
+            (token_bought_amount / 1e6) as token_amount_M,
+            token_sold_amount as sol_amount
+        FROM
+            dex_solana.trades t
+            inner join input_address on (input_address.address = t.trader_id)
+        WHERE
+            (
+                (
+                    -- token_bought_mint_address = 'So11111111111111111111111111111111111111112'
+                    -- OR 
+                    token_sold_mint_address = 'So11111111111111111111111111111111111111112'
+                )
+                and (
+                    -- 购买token数目超过0.5M
+                    token_bought_amount > 0.5 * 1e6
+                    -- token_sold_amount >1
+                )
+                and (
+                    block_time > timestamp '2025-03-01 00:00:00 +08:00'
+                    and block_time < timestamp '2025-03-18 12:00:00 +08:00'
+                )
+            )
+    ),
+    every_trader_goumai_every_token_info as (
+        select
+            trader_id,
+            token_address,
+            min(block_time) as block_time
+            -- ,( to_unixtime(CAST(min(block_time) AS timestamp))-1700000000) AS block_time
+,
+            sum(token_amount_M) as token_amount_M,
+            sum(sol_amount) as sol_amount,
+            count(block_time) as buy_count
+        from
+            temp_01
+        group by
+            trader_id,
+            token_address
+    ),
+    every_token_trader_chiyou_renshu as (
+        select
+            token_address,
+            min(block_time) as min_block_time,
+            max(block_time) as max_block_time,
+            count(*) as trader_number
+        from
+            every_trader_goumai_every_token_info
+        group by
+            token_address
+    ),
+    every_token_trader_chiyou_renshu_he_token_create_time_he_trade_buy_time as (
+        SELECT
+            token_address,
+            min_block_time
+            -- ,max_block_time
+,
+            trader_number,
+            p_c.call_block_time as create_time
+        FROM
+            every_token_trader_chiyou_renshu
+            left join pumpdotfun_solana.pump_call_create p_c on every_token_trader_chiyou_renshu.token_address = p_c.account_mint
+    )
+select
+    *
+from
+    every_token_trader_chiyou_renshu_he_token_create_time_he_trade_buy_time
+where
+    trader_number >= 4
+order by
+    trader_number desc
+ 
+
+-- 第一个方向代码 
+-- 结束 结束 结束 结束 结束 结束 结束 结束 结束
+
+
+
+ 
+
+ 
+
+-- -- --第二个方向代码 
+-- -- --开始 开始 开始 开始 开始 开始 开始 开始 开始
+-- -- --获取某些dalao 针对某些token的购买时间,获取是否是早期购买者
+
+-- WITH
+--     input_address (address) as (
+--         values
+--             ('5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb'),
+--             ('5FSt9LxycNWfdXFmhuDbYonoGcnBJDjZYvqC3ZuA9RGc'),
+--             ('UKCC5vtp2U5281ZSaSqafDbb9aFcrj84BKsf6p5Aqxm'),
+--             ('SGd7pJkt1heW4pTWLBHVtMoqaN1Anvvbb5wp5Juktrb'),
+--             ('81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq'),
+--             ('2oViQCbm1JWWwvvKeq2zsAns1cT48WDTk77aS7ZAPnjJ'),
+--             ('EW5o2Nr2oHdr8YbWfdAFkcpxT2bqvi2jdDpaTepvoQNa'),
+--             ('EWpftEEZJ7AJyGJprctqc131qQtpjWkoJahM1D9xdTiH'),
+--             ('CJT24gYwv6Sadbj6jUb6ESnm6jYYZdBEzZoeH84C35tq'),
+--             ('6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g'),
+--             ('ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj'),
+--             ('HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe'),
+--             ('CMGdz9VBDDmc5uoZFxux4Jv1gYxoUW1Xdu8NxfijCTxJ'),
+--             ('5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS'),
+--             ('ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd'),
+--             ('9wYuJBuoBiNDxk97ZmCqdaBjB3gZ1iFnEBU2Jme3phpV'),
+--             ('H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk'),
+--             ('2swb9pJ9Ak5TLBsfsBcr5QVCStM5vNZAcyhRY9uZTSi5'),
+--             ('DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc'),
+--             ('J3ctoNuCEGXD63rf84GfgkXYczt7F6uycpVczzK57MfH'),
+--             ('5RANC5iQzzeLFcr1D42Pih4ksUMfa7KXMoCkzoRhujuP'),
+--             ('8jzB2HEK322ntFCfzUwajUt9hjYA25L9F8LangTcPfMY'),
+--             ('5sEVaCVRRyfWPhw54c4z3h59ZvJ9tL5xK2tYfT4gQnDZ'),
+--             ('A2U5owsnFK2jzgBguZCDqXsPzra7ufpYG5N6CFCeQrk6')
+--     ),
+--     input_token (mint_address) as (
+--         values
+--             ('5CuCQwjejaAyc7Z1HfmzJHfRrrV8HPfPfgaazuzpump'),
+--             ('CKCwS3gq4DHpvAD5FYCZq6qsZjaTv9mp67kYh4Vbpump'),
+--             ('8eq6uKMYtJ2npJC2YGj2LCZ5xKZFX3TuB2LTXB9Epump'),
+--             ('BzBHziaQZqSBKd8DXqrNgsDNd75i7CB5hH1rsQRxpump'),
+--             ('hV7MQkCpjvuTTnPJXPhPXzvmtMxk8A8ct1KPiRMpump'),
+--             ('AhJ2u3o7CK4sPk9WQ2rr8FwG1xSTBMMqkjXZbeqapump'),
+--             ('B92orCCYZ3J5kBzPDNRP9Sj1oC9cx2X289Myateopump'),
+--             ('Ey4tXRVTiLtjZJE33T96KYxJ8TDdVyV7uDn6FuDCpump'),
+--             ('4QYaccriCgnrb3rxpibqv5vj7Wba669YBqvNEVeJpump'),
+--             ('9LTnCiXxqZm29PpeQpzAAHadgWiPBkxESJqUKPSvpump'),
+--             ('HxQVaDCJT5HnRMSE8dFv8sDGdLQ5RSASrccYdBaDpump'),
+--             ('8TcALAM4U7MMnuRiqMBf8pEsdnt94uknpg2jepEgpump'),
+--             ('J8rZcqDBXWCtmz9C4qhdfiRA5ZQQjasa5aeghbnxpump'),
+--             ('Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump'),
+--             ('2WLd1HqbPutTh1gowWFzkgGG9PgzVcnvqUs4iNXopump'),
+--             ('BhwwEnvzsEdncGWdDZv2airsw1HZVbRBBGfYhgZfpump'),
+--             ('G8VxZiVvkpbjcvcxMm1btLHjJrdfz9CdqXy44tM9pump'),
+--             ('3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump'),
+--             ('9zeStqRxC8TfJE71hbTkQV4xBSHc5LFnTUa54K9sGE1i'),
+--             ('6zipf14FCZusfwF8FeyUP851XytF5T55oLdgARE5qyKK')
+--     ),
+--     temp_01 AS (
+--         SELECT
+--             trader_id,
+--             block_time,
+--             tx_id,
+--             token_bought_mint_address as token_address,
+--             token_sold_mint_address,
+--             (token_bought_amount / 1e6) as token_amount_M,
+--             token_sold_amount as sol_amount
+--         FROM
+--             dex_solana.trades t
+--             inner join input_address on (input_address.address = t.trader_id)
+--             inner join input_token on (
+--                 input_token.mint_address = t.token_bought_mint_address
+--             )
+--         WHERE
+--             (
+--                 (
+--                     -- token_bought_mint_address = 'So11111111111111111111111111111111111111112'
+--                     -- OR 
+--                     token_sold_mint_address = 'So11111111111111111111111111111111111111112'
+--                 )
+--                 and (
+--                     -- 购买token数目超过0.5M
+--                     token_bought_amount > 0.5 * 1e6
+--                     -- token_sold_amount >1
+--                 )
+--                 and (
+--                     block_time > timestamp '2025-03-01 00:00:00 +08:00'
+--                     and block_time < timestamp '2025-03-18 12:00:00 +08:00'
+--                 )
+--             )
+--     ),
+--     every_trader_goumai_every_token_info as (
+--         select
+--             trader_id,
+--             token_address,
+--             min(block_time) as block_time,
+--             sum(token_amount_M) as token_amount_M,
+--             sum(sol_amount) as sol_amount,
+--             count(block_time) as buy_count
+--         from
+--             temp_01
+--         group by
+--             trader_id,
+--             token_address
+--     ),
+--     every_token_trader_token_create_time_he_dif_trade_buy_time as (
+--         SELECT
+--             token_address,
+--             trader_id,
+--             (
+--                 to_unixtime(
+--                     CAST(
+--                         every_trader_goumai_every_token_info.block_time AS timestamp
+--                     )
+--                 ) - to_unixtime(CAST(p_c.call_block_time AS timestamp))
+--             ) / 60 AS buy_create_time_diff,
+--             p_c.call_block_time as create_time
+--         FROM
+--             every_trader_goumai_every_token_info
+--             left join pumpdotfun_solana.pump_call_create p_c on every_trader_goumai_every_token_info.token_address = p_c.account_mint
+--     ),
+--     every_token_trader_chiyou_renshu_he_token_create_time_he_dif_trade_buy_time as (
+--         select
+--             *,
+--             COUNT(*) OVER (
+--                 PARTITION BY
+--                     token_address
+--             ) AS trader_number
+--         from
+--             every_token_trader_token_create_time_he_dif_trade_buy_time
+--     )
+-- select
+--     *
+-- from
+--     every_token_trader_chiyou_renshu_he_token_create_time_he_dif_trade_buy_time
+
+
+-- -- 第二个方向代码 
+-- -- 结束 结束 结束 结束 结束 结束 结束 结束 结束
+
+
+
+
+
+
+

+ 95 - 0
src/code/dune_sql/dune_token_owner_transfer_count.sql

@@ -0,0 +1,95 @@
+
+
+
+ 
+
+-- 记录一个token的在某段时间的transfer  次数(count) 最多的wallet ,便于查看这些wallet是什么 ,以后作为过滤address
+
+WITH
+  Exclude_onwer (owner) AS (
+  VALUES
+      ('5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1'), --  Raydium Authority V4
+      ('BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV'), -- Jupiter Aggregator Authority 1
+      ('2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h'), -- Jupiter Aggregator Authority 2
+      ('HU23r7UoZbqTUuh3vA7emAGztFtqwTeVips789vqxxBw'), -- Jupiter Aggregator Authority 3
+      ('3CgvbiM3op4vjrrjH2zcrQUwsqh5veNVRjFCB9N6sRoD'), -- Jupiter Aggregator Authority 4
+      ('6LXutJvKUw8Q5ue2gCgKHQdAN4suWW8awzFVC6XCguFx'), -- Jupiter Aggregator Authority 5
+      ('CapuXNQoDviLvU1PxFiizLgPNQCxrsag1uMeyk6zLVps'), -- Jupiter Aggregator Authority 6
+      ('GGztQqQ6pCPaJQnNpXBgELr5cs3WwDakRbh1iEMzjgSJ'), -- Jupiter Aggregator Authority 7
+      ('9nnLbotNTcUhvbrsA6Mdkx45Sm82G35zo28AqUvjExn8'), -- Jupiter Aggregator Authority 8
+      ('3LoAYHuSd7Gh8d7RTFnhvYtiTiefdZ5ByamU42vkzd76'), -- Jupiter Aggregator Authority 9
+      ('DSN3j1ykL3obAVNv7ZX49VsFCPe4LqzxHnmtLiPwY6xg'), -- Jupiter Aggregator Authority 10
+      ('69yhtoJR4JYPPABZcSNkzuqbaFbwHsCkja1sP1Q2aVT5'), -- Jupiter Aggregator Authority 11
+      ('6U91aKa8pmMxkJwBCfPTmUEfZi6dHe7DcFq2ALvB2tbB'), -- Jupiter Aggregator Authority 12
+      ('7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE'), -- Jupiter Aggregator Authority 13
+      ('4xDsmeTWPNjgSVSS1VTfzFq3iHZhp77ffPkAmkZkdu71'), -- Jupiter Aggregator Authority 14
+      ('GP8StUXNYSZjPikyRsvkTbvRV1GBxMErb59cpeCJnDf1'), -- Jupiter Aggregator Authority 15
+      ('HFqp6ErWHY6Uzhj8rFyjYuDya2mXUpYEk8VW75K9PSiY'), -- Jupiter Aggregator Authority 16
+      ('45ruCyfdRkWpRNGEqWzjCiXRHkZs8WXCLQ67Pnpye7Hp'), -- Jupiter Partner Referral Fee Vault
+      ('ZG98FUCjb8mJ824Gbs6RsgVmr1FhXb2oNiJHa2dwmPd')  -- CxvksNjwhdHDLr3qbCXNKVdeYACW8cs93vFqLqtgyFE5's fee account
+      ,('GE5PnwZTgWw1YqVGno2QPWqie6aLjswNeGFhiF1nDg3k')  --Raydium (8008-USDC) Market
+      ,('DGT9TPRGQwpJeMvDdZJDEaVRZa2ZMXtp16pGZgAgBoLx') --Pump.fun (8008) Bonding Curve
+      ,('25mYnjJ2MXHZH6NvTTdA63JvjgRVcuiaj6MRiEQNs1Dq')  -- okx 相关
+      ,('14qLxu9XDQtc2pgnxX2SSdWPpnuVrEqccgwmATH1khcY')  -- Raydium (SOL-8008) Market
+      ,('5YET3YapxD6to6rqPqTWB3R9pSbURy6yduuUtoZkzoPX')  -- Jupiter ApePro Keeper
+    ,('F5sw1r94VXmUGwesPrcY3TvwSrfVAZmRaWwMtD1tr3Yf')  -- Meteora (8008-SOL) Market   
+    ,('j1oAbxxiDUWvoHxEDhWE7THLjEkDQW2cSHYn2vttxTF') --jupiter limit order taker account
+     ,('4KaVawPKmG1RZCv698XD9YzRsJcFPXrEoYnZbdZmfFFq')  --okx相关
+     
+      ,('j1oeQoPeuEDmjvyMwBmCWexzCQup77kbKKxV59CnYbd') --jupiter limit order taker account
+       ,('6KFVj2czLwNQeE4yBgFau6LHUS72vqgP11Sv1JUNxghz')  --fee account
+      
+  ),
+  DistinctPairs AS (
+    SELECT DISTINCT
+      from_owner,
+      to_owner
+    FROM
+      tokens_solana.transfers
+    WHERE
+      --   block_date > (TIMESTAMP '2024-08-01 00:00:00 +08:00')
+            block_time >= (TIMESTAMP '2025-03-10 00:00:00 +08:00')
+            AND block_time < (TIMESTAMP '2025-03-20 02:00:00 +08:00')
+            
+      -- block_date >= (TIMESTAMP '{{begin_date}}' )
+      -- AND block_date < (TIMESTAMP '{{end_date}}' )
+      AND token_mint_address = '3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump'
+      AND action = 'transfer'
+      AND (
+        from_owner NOT IN (
+          SELECT
+            owner
+          FROM
+            Exclude_onwer
+        )
+        AND to_owner NOT IN (
+          SELECT
+            owner
+          FROM
+            Exclude_onwer
+        )
+      )
+  ),
+  CombinedValues AS (
+    SELECT
+      from_owner AS combined_values
+    FROM
+      DistinctPairs
+    UNION ALL
+    SELECT
+      to_owner AS combined_values
+    FROM
+      DistinctPairs
+  )
+  
+SELECT
+  combined_values
+  -- ,COUNT(*) AS total_count
+FROM
+  CombinedValues
+GROUP BY
+  combined_values
+HAVING
+  COUNT(*) > 20
+-- ORDER BY
+--   total_count DESC

+ 170 - 0
src/code/dune_sql/get_history_token_holders_by_transfer_And_specialAdd.sql

@@ -0,0 +1,170 @@
+-- 通过token过去的transfer记录, 记录wallet 的 token amount ,从而获取top 100 的 holder
+
+with
+    input_address (address) as (
+        values
+('6xMPaDn8jZ1r68BzXAunvumU8BTG2vDbgemNkWwRd1Fo')
+-- ('5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1'),
+-- ('Cet3TXGhtFcBo6vX9kfYjbtNyANbCWqwVC6G1QioKUhc'),
+-- ('7m2XQP2NDebaEKDhegj7WYpZBmrKF5yhiVi1JZU8cwoj'),
+-- ('68WLD7YzwjqBoCEVuJ3rjVbaPaAog6ATCkjUTpNqiMNF'),
+-- ('4ttYJgVcZMMXFsTPBAEKVUEDUshvsXqgvfUv3W7bdv7e'),
+-- ('14qLxu9XDQtc2pgnxX2SSdWPpnuVrEqccgwmATH1khcY'),
+-- ('Hh6XswyZK9WPUbb6csqi7YggDqYTstKkHFvvh7PFx7kw'),
+-- ('DAr4CE2rFgvtDHSFG75rEhmxmqgfEQYir91RGY458pkZ'),
+-- ('CC1xmUJCvq4wPzHSNKVHfMV9T3vRjHTZnzvW9VLVJ4gs'),
+-- ('GDwiC6S14topnYmWquQb6JdQxrRsvtH7N3K8UCLZmVrk'),
+-- ('HjUrUJi7zUCXu6NpXBUujYsoG5TJsXkPUrYJdWMKVtts'),
+-- ('5PZs2fmTJpjaMhYbdAH6uEx7Jbbhy2RdAdkNnPw83H3a'),
+-- ('FH8xnCwgoQgk3nXuePEdxYB5SZDTWSZav27smVcHjN1q'),
+-- ('ET3VpuSMr15ufn4z9a5kwHhyLRse2H96TY2HXVKZxCJM'),
+-- ('GD9Q87EY9guqAqkxgNwiqoqUKmBs958tcFEkQ8q1HD1N'),
+-- ('5pW6xYQZxZLs67eKuurGcTVm2nHqFcDsiuxesqagoW6V'),
+-- ('7V7BFFLNgHhrJq7Udm9Zi26Tbgvytg9GWKLdDLRzf4z6'),
+-- ('BC8yiFFQWFEKrEEj75zYsuK3ZDCfv6QEeMRif9oZZ9TW'),
+-- ('6QfdT1XZauUMCJU3SaN2d2aqdoFa4TDVNmxJig52ZGZT'),
+-- ('3M2dQzm6kz9ChDfaeX3xxqzn8BdeLjJEJv9JBd9WG2Jx'),
+-- ('6xMPaDn8jZ1r68BzXAunvumU8BTG2vDbgemNkWwRd1Fo'),
+-- ('3UFHt8qqRtHM2hZaCYRGKaF1gYfePcRYZFo2CdaadfMa'),
+-- ('Aewfbg61nn3SrFikqTsX2c8nZM8DXVbG7jpUp1Qwg22H'),
+-- ('3kZ7ZYjUGSFMhXbQ3twdCmqP1cgCjjBbZHRd8eXFFaja'),
+-- ('E9EpirpCKqJKnUTfhpUKzDKKFzVd7Q8RjjbdRVjPxXWX'),
+-- ('3Q7bWprdJZ5JUDoy2wBAcoKzgp7mZ3ChPaR8o3SUf7EN'),
+-- ('27NdJihiGpbg1kgHwAjk4UDUScTjEg7BDTo6urHjB3Cr'),
+-- ('BTJk52ULuadhdzYWpK2io1urPVfqEpqoH3sS4yg4b8Z2'),
+-- ('2fnRmNSYMTuyGw58UdZTrEgb2NmjNXvyRzqU9FJG31Q6'),
+-- ('GE5PnwZTgWw1YqVGno2QPWqie6aLjswNeGFhiF1nDg3k'),
+-- ('9r7p8uQiwRMRqQwAGDHUQ1Lmtjt4auNTxK7TgWg75J7C'),
+-- ('4N41X5S1GaqKQhZvqQsE7aKCpEm2xhswKTznQoxuJEmv'),
+-- ('FT78Vsmv2hWj8PK9HN1rtGEdKtt4Ajd2RSsxhrUt5nVG'),
+-- ('FML97BaUTVJX15T8tCU5LUbcpvJkHQ5RcZXmV354PzRt'),
+-- ('CpVNBP8bbFvT7Yt3zwTnCaXt26XojQxduNXaMz57DGLf'),
+-- ('77RWuJjzTgswsgUafvhSNDAbGxHcUHQPZ3ogpvNr3eB'),
+-- ('3ddwpbz7aXr6ZD7ybMZcUMTm76pgeszJekSkLdS931EH'),
+-- ('4KaVawPKmG1RZCv698XD9YzRsJcFPXrEoYnZbdZmfFFq'),
+-- ('HRL9mVQav58fLGJpN16qT55nXuk8S7Lx33Gvw2SHRHK5'),
+-- ('AeqgApsq3CoopttTpohuLiXj53EauJ78ophVvy8hrfkt'),
+-- ('51pcMTBEKwiKRVrCV5EmmHazsWetGDUxKkxoc5r3248'),
+-- ('5pKTV6EhcyFQPBbEDEATyDiUHM4kDZddtopRLq7o8kJj'),
+-- ('66VSSN5FiwkDXCSJ5ydNCZm8RD1DwVKXuwaeFBGJ5fKg'),
+-- ('3qTNSWq6o7hfb7RgSz6GzxDMNLgrjVuwKqFD2kJznuRB'),
+-- ('3fZcDhWXTBvNMkgzkyMmqxMizfysnvFZw5CzR7pnuxRz'),
+-- ('F8pWbg5zGXnzghmAtNW9SQPQYwP1RkyzsHs6KZTBh7Dg'),
+-- ('DuDEvMussH5iKvBPaa6mSVyJY39fPQKNEPUyT5c19S2x'),
+-- ('98oWTwQBBEyhhLMcUrgy2gta7zmVHZavQmcS8z98PDHe'),
+-- ('EPS4j3XEBas8okzQCe2CeuwKf6w6aif5ED4GMj3mqv4r'),
+-- ('5Xu8p9emHTkuNQkPN6D2ygkJypWo1nbUzbjYHUfXcNuR'),
+-- ('Hk7gzrcANZpqBnYCHeBEuxFk18HLu9Tey7TrNroyPVK7'),
+-- ('Goc5dPcEM94cFW97k92XNoT45vR89isxSEjxqE3VTvhv'),
+-- ('A3wcLYiBQdW5Uf5TXxbvuueJYh8pfAy57cbuE5fQJBeS'),
+-- ('D6DLAnP1NnimNYuHNDhJZfGkD1TmiKENWG2PrdhL8qLP'),
+-- ('CGnKC5zME8G36ftGLq1wrmQxw3SUgzVojJmVNXpidC6k'),
+-- ('3tVNBP85HyaYhS4DFdZiiX8E4ARX2qhofsN4gyLHCMiL'),
+-- ('6pcdBbgeGz8Lu1RAzJsPdiYAZzTAxFU6iBeoqS2XUe8Y'),
+-- ('3v6XiVAbays5FiZy6sWuriLHfC77EAX9mtB57Hf8VmpQ'),
+-- ('7aUgVdQhQBYHBxvwhmktb6Y4rYpsAJo5FyqRjFEZd8rb'),
+-- ('D2wBctC1K2mEtA17i8ZfdEubkiksiAH2j8F7ri3ec71V'),
+-- ('CfpFiySF5c63fvgtjjgbefjS2JSATJYeqp8qFQX76hKT'),
+-- ('7JYCpRR4ZnKnMuxgiRta6ogs1BrC1aURW7iZdiJytsPB'),
+-- ('7EWYbpVMN5aGbdDGEweFPabmYXC66rvS4MKWBkJZcoNN'),
+-- ('AR6SjcFLzQoZXXLVbaKo4GbsvmKmKKobCfrXFHcqE6TN'),
+-- ('6xHJJhNSYbyuaspAiGbg9qZnD2tXdK5gfwAZrAQBSHzU'),
+-- ('dR4GCDofsA6ZpBqzQpQJeob4msVspyASATbqW4sC4YM'),
+-- ('2geGo4wz6KgBb84Az6MM8w1dDnXoW6wmyX3hkEstAXJw'),
+-- ('DqqvEiiB73n1zXULMtUpWkFjgKUQ5zEfqBibsgReVoqj'),
+-- ('Gg6PuMT9qs53QiSrrJsnLyh51xedbzKAV5JiQ9qHPQ7a'),
+-- ('ApoqyJvBKd1xBwk2ZfCGABq8kgdsSjt1czV22gfz5oFT'),
+-- ('9ACVo4hxXL3LdyhzgL6w3hRATJkGapgvdZwxgtz6pr5i'),
+-- ('Fv4wEy1uwyRzqbwE2Kb23dBbbhMtKgMBzUqvoc2Q8gL7'),
+-- ('8oTVjgucrArfQgyGFy2AiEKz6QDhW6ATTJQ1nSkG3wAr'),
+-- ('4k22yKKbCsrq7QhCd89ZXFcxhSbGmszA92H2KhthpgKq'),
+-- ('DNfuF1L62WWyW3pNakVkyGGFzVVhj4Yr52jSmdTyeBHm'),
+-- ('2ANPc28rr67W8StfCFzfuY3ZbKp9FCJ9tfBc17pRK7sY'),
+-- ('9cQcY83s45VsMwVmFHFUR2HVG5j9Rc3K8HU4hzLaXnWs'),
+-- ('HjHBsicgsMqSrU9VPSas8sKYLGtCfwMzfiYHzfMEta6f'),
+-- ('5c511kvVfCGrEsLkNb6RoVqqA5BpimGHyhkE3ki4kWkX'),
+-- ('7xgxtHJX21bvXozPsmyVCi88qChqxZR4e84ckXgrTeFp'),
+-- ('D7hpLQ4VEKAr2ALHZqT7JjTLqgBGsRqJZrbfzxPcyVtD'),
+-- ('6mh7mv8JGBqmnV86NFJoVS3fkYgdbxCmxVys1vK3dB6t'),
+-- ('Gy5GSoHmrfnv49TZHku1bxNv2Dy4tFDjgm7vGbmp8S2h'),
+-- ('9UPcMHdTw8pJSvv13dH1tGawwCjSCSjjxwU5cKu9PTiq'),
+-- ('2k77ScTf9ULptpVRG4M4X6SRZiuUxWCTzG2RWBT7KnHR'),
+-- ('9wNu1SLCfouEsR4B8PCck6p15mcSgun7k5KEKDw43Cyu'),
+-- ('3nxNfz8fx4DPW37i97Qs4Ue4Z2zVinEFeDAAymwtEtYd'),
+-- ('2ydwYpyTwn1NrPpRN4n6NaHHtg82G65QAN2rQxX6e9ep'),
+-- ('8Mnb87uUYXcqejP6RuUyDiX9Fd1unCA3YdM3zLGSVEPQ'),
+-- ('CdCM27tboWquCEC3Pq3CRphSdiGV6Q48VewWmrxbUyYW'),
+-- ('74F2yUFB6kQMmkW3NkXvw1uypwGTKT34PkYmvJLw31Fb'),
+-- ('4WEJwCpdDWoQQMDT7ugqiX5VuE3KY3QeYpTTqRoKN9Ea'),
+-- ('JD6GNPCYsrEe95dzbfvzWV548ATFBCiv1VpPTeivqtp'),
+-- ('38nYRZ7ENv1QNZgDk2d5rARsQroCDC6pRhJmCU8yVMbR'),
+-- ('43TMSiFPiw721VP6ue58Kc4cPocFuU1qju1ok9ibDsS6'),
+-- ('HmgJG6XqV4HjDEXG47gTx8oobq6Y5W11oeYBD86N2RPR'),
+-- ('ETXkmPKnSx8jPqGvvES5Ss3k9q811r7BuqPPwcKZn2pv'),
+-- ('YWzEJLhgobeRvYnqVhPRNRC36sEiB9KJWybkXdXoyyb') 
+ 
+    ),
+    temp_01 as (
+        select
+            block_time AS time,
+            amount AS amount,
+            from_owner AS from_owner,
+            to_owner AS to_owner
+        from
+            tokens_solana.transfers
+        where
+            block_time > timestamp '2025-03-10 00:00:00 +08:00'
+            and
+            -- block_time < timestamp '2025-03-17 00:00:00 +08:00'
+            block_time < timestamp '2025-03-16 02:00:00 +08:00'
+            and token_mint_address = '3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump'
+            AND action = 'transfer'
+    ),
+    temp_from as (
+        SELECT
+            from_owner AS owner,
+            SUM(- amount) AS from_amount
+        FROM
+            temp_01
+        GROUP BY
+            from_owner
+    ),
+    temp_to as (
+        SELECT
+            to_owner AS owner,
+            SUM(amount) AS to_amount
+        FROM
+            temp_01
+        GROUP BY
+            to_owner
+    ),
+    temp_from_to as (
+        select
+            COALESCE(temp_from.owner, temp_to.owner) AS owner,
+            round(
+                (
+                    COALESCE(temp_from.from_amount, 0) + COALESCE(temp_to.to_amount, 0)
+                ) / 1e6 / 1e6,
+                2
+            ) AS amount_M
+        from
+            temp_from
+            full outer join temp_to on temp_from.owner = temp_to.owner
+            -- 指定specila address
+            -- inner join input_address on input_address.address = COALESCE(temp_from.owner, temp_to.owner)
+        order by
+            2 desc
+        limit
+            -- 100
+            50
+    )
+select
+    temp_from_to.owner as holder_owner,
+    sns_domains.domains_owned,
+    amount_M,
+    round(amount_M / 10, 2) as pct_supply
+from
+    temp_from_to
+    left join solana_utils.sns_domains sns_domains on sns_domains.owner = temp_from_to.owner
+order by
+    3 desc

+ 227 - 0
src/code/dune_sql/get_token_transfer_row_OR_info.sql

@@ -0,0 +1,227 @@
+-- 获取一个token 在一段时间内的transfer 记录 获取A WALLET --> B WALLET  transfer次数以及amount 
+with
+    input_address (address) as (
+    values
+('Cet3TXGhtFcBo6vX9kfYjbtNyANbCWqwVC6G1QioKUhc'),
+('7m2XQP2NDebaEKDhegj7WYpZBmrKF5yhiVi1JZU8cwoj'),
+('68WLD7YzwjqBoCEVuJ3rjVbaPaAog6ATCkjUTpNqiMNF'),
+('4ttYJgVcZMMXFsTPBAEKVUEDUshvsXqgvfUv3W7bdv7e'),
+('Hh6XswyZK9WPUbb6csqi7YggDqYTstKkHFvvh7PFx7kw'),
+('DAr4CE2rFgvtDHSFG75rEhmxmqgfEQYir91RGY458pkZ'),
+('CC1xmUJCvq4wPzHSNKVHfMV9T3vRjHTZnzvW9VLVJ4gs'),
+('GDwiC6S14topnYmWquQb6JdQxrRsvtH7N3K8UCLZmVrk'),
+('HjUrUJi7zUCXu6NpXBUujYsoG5TJsXkPUrYJdWMKVtts'),
+('5PZs2fmTJpjaMhYbdAH6uEx7Jbbhy2RdAdkNnPw83H3a'),
+('FH8xnCwgoQgk3nXuePEdxYB5SZDTWSZav27smVcHjN1q'),
+('ET3VpuSMr15ufn4z9a5kwHhyLRse2H96TY2HXVKZxCJM'),
+('GD9Q87EY9guqAqkxgNwiqoqUKmBs958tcFEkQ8q1HD1N'),
+('5pW6xYQZxZLs67eKuurGcTVm2nHqFcDsiuxesqagoW6V'),
+('7V7BFFLNgHhrJq7Udm9Zi26Tbgvytg9GWKLdDLRzf4z6'),
+('BC8yiFFQWFEKrEEj75zYsuK3ZDCfv6QEeMRif9oZZ9TW'),
+('6QfdT1XZauUMCJU3SaN2d2aqdoFa4TDVNmxJig52ZGZT'),
+('3M2dQzm6kz9ChDfaeX3xxqzn8BdeLjJEJv9JBd9WG2Jx'),
+('6xMPaDn8jZ1r68BzXAunvumU8BTG2vDbgemNkWwRd1Fo'),
+('3UFHt8qqRtHM2hZaCYRGKaF1gYfePcRYZFo2CdaadfMa'),
+('Aewfbg61nn3SrFikqTsX2c8nZM8DXVbG7jpUp1Qwg22H'),
+('3kZ7ZYjUGSFMhXbQ3twdCmqP1cgCjjBbZHRd8eXFFaja'),
+('E9EpirpCKqJKnUTfhpUKzDKKFzVd7Q8RjjbdRVjPxXWX'),
+('3Q7bWprdJZ5JUDoy2wBAcoKzgp7mZ3ChPaR8o3SUf7EN'),
+('27NdJihiGpbg1kgHwAjk4UDUScTjEg7BDTo6urHjB3Cr'),
+('BTJk52ULuadhdzYWpK2io1urPVfqEpqoH3sS4yg4b8Z2'),
+('2fnRmNSYMTuyGw58UdZTrEgb2NmjNXvyRzqU9FJG31Q6'),
+('9r7p8uQiwRMRqQwAGDHUQ1Lmtjt4auNTxK7TgWg75J7C'),
+('4N41X5S1GaqKQhZvqQsE7aKCpEm2xhswKTznQoxuJEmv'),
+('FT78Vsmv2hWj8PK9HN1rtGEdKtt4Ajd2RSsxhrUt5nVG'),
+('FML97BaUTVJX15T8tCU5LUbcpvJkHQ5RcZXmV354PzRt'),
+('CpVNBP8bbFvT7Yt3zwTnCaXt26XojQxduNXaMz57DGLf'),
+('77RWuJjzTgswsgUafvhSNDAbGxHcUHQPZ3ogpvNr3eB'),
+('3ddwpbz7aXr6ZD7ybMZcUMTm76pgeszJekSkLdS931EH'),
+('HRL9mVQav58fLGJpN16qT55nXuk8S7Lx33Gvw2SHRHK5'),
+('AeqgApsq3CoopttTpohuLiXj53EauJ78ophVvy8hrfkt'),
+('51pcMTBEKwiKRVrCV5EmmHazsWetGDUxKkxoc5r3248'),
+('5pKTV6EhcyFQPBbEDEATyDiUHM4kDZddtopRLq7o8kJj'),
+('66VSSN5FiwkDXCSJ5ydNCZm8RD1DwVKXuwaeFBGJ5fKg'),
+('3qTNSWq6o7hfb7RgSz6GzxDMNLgrjVuwKqFD2kJznuRB'),
+('3fZcDhWXTBvNMkgzkyMmqxMizfysnvFZw5CzR7pnuxRz'),
+('F8pWbg5zGXnzghmAtNW9SQPQYwP1RkyzsHs6KZTBh7Dg'),
+('DuDEvMussH5iKvBPaa6mSVyJY39fPQKNEPUyT5c19S2x'),
+('98oWTwQBBEyhhLMcUrgy2gta7zmVHZavQmcS8z98PDHe'),
+('EPS4j3XEBas8okzQCe2CeuwKf6w6aif5ED4GMj3mqv4r'),
+('5Xu8p9emHTkuNQkPN6D2ygkJypWo1nbUzbjYHUfXcNuR'),
+('Hk7gzrcANZpqBnYCHeBEuxFk18HLu9Tey7TrNroyPVK7'),
+('Goc5dPcEM94cFW97k92XNoT45vR89isxSEjxqE3VTvhv'),
+('A3wcLYiBQdW5Uf5TXxbvuueJYh8pfAy57cbuE5fQJBeS'),
+('D6DLAnP1NnimNYuHNDhJZfGkD1TmiKENWG2PrdhL8qLP'),
+('CGnKC5zME8G36ftGLq1wrmQxw3SUgzVojJmVNXpidC6k'),
+('3tVNBP85HyaYhS4DFdZiiX8E4ARX2qhofsN4gyLHCMiL'),
+('6pcdBbgeGz8Lu1RAzJsPdiYAZzTAxFU6iBeoqS2XUe8Y'),
+('3v6XiVAbays5FiZy6sWuriLHfC77EAX9mtB57Hf8VmpQ'),
+('7aUgVdQhQBYHBxvwhmktb6Y4rYpsAJo5FyqRjFEZd8rb'),
+('D2wBctC1K2mEtA17i8ZfdEubkiksiAH2j8F7ri3ec71V'),
+('CfpFiySF5c63fvgtjjgbefjS2JSATJYeqp8qFQX76hKT'),
+('7JYCpRR4ZnKnMuxgiRta6ogs1BrC1aURW7iZdiJytsPB'),
+('7EWYbpVMN5aGbdDGEweFPabmYXC66rvS4MKWBkJZcoNN'),
+('AR6SjcFLzQoZXXLVbaKo4GbsvmKmKKobCfrXFHcqE6TN'),
+('6xHJJhNSYbyuaspAiGbg9qZnD2tXdK5gfwAZrAQBSHzU'),
+('dR4GCDofsA6ZpBqzQpQJeob4msVspyASATbqW4sC4YM'),
+('2geGo4wz6KgBb84Az6MM8w1dDnXoW6wmyX3hkEstAXJw'),
+('DqqvEiiB73n1zXULMtUpWkFjgKUQ5zEfqBibsgReVoqj'),
+('Gg6PuMT9qs53QiSrrJsnLyh51xedbzKAV5JiQ9qHPQ7a'),
+('ApoqyJvBKd1xBwk2ZfCGABq8kgdsSjt1czV22gfz5oFT'),
+('9ACVo4hxXL3LdyhzgL6w3hRATJkGapgvdZwxgtz6pr5i'),
+('Fv4wEy1uwyRzqbwE2Kb23dBbbhMtKgMBzUqvoc2Q8gL7'),
+('8oTVjgucrArfQgyGFy2AiEKz6QDhW6ATTJQ1nSkG3wAr'),
+('4k22yKKbCsrq7QhCd89ZXFcxhSbGmszA92H2KhthpgKq'),
+('DNfuF1L62WWyW3pNakVkyGGFzVVhj4Yr52jSmdTyeBHm'),
+('2ANPc28rr67W8StfCFzfuY3ZbKp9FCJ9tfBc17pRK7sY'),
+('9cQcY83s45VsMwVmFHFUR2HVG5j9Rc3K8HU4hzLaXnWs'),
+('HjHBsicgsMqSrU9VPSas8sKYLGtCfwMzfiYHzfMEta6f'),
+('5c511kvVfCGrEsLkNb6RoVqqA5BpimGHyhkE3ki4kWkX'),
+('7xgxtHJX21bvXozPsmyVCi88qChqxZR4e84ckXgrTeFp'),
+('D7hpLQ4VEKAr2ALHZqT7JjTLqgBGsRqJZrbfzxPcyVtD'),
+('6mh7mv8JGBqmnV86NFJoVS3fkYgdbxCmxVys1vK3dB6t'),
+('Gy5GSoHmrfnv49TZHku1bxNv2Dy4tFDjgm7vGbmp8S2h'),
+('9UPcMHdTw8pJSvv13dH1tGawwCjSCSjjxwU5cKu9PTiq'),
+('2k77ScTf9ULptpVRG4M4X6SRZiuUxWCTzG2RWBT7KnHR'),
+('9wNu1SLCfouEsR4B8PCck6p15mcSgun7k5KEKDw43Cyu'),
+('3nxNfz8fx4DPW37i97Qs4Ue4Z2zVinEFeDAAymwtEtYd'),
+('2ydwYpyTwn1NrPpRN4n6NaHHtg82G65QAN2rQxX6e9ep'),
+('8Mnb87uUYXcqejP6RuUyDiX9Fd1unCA3YdM3zLGSVEPQ'),
+('CdCM27tboWquCEC3Pq3CRphSdiGV6Q48VewWmrxbUyYW'),
+('74F2yUFB6kQMmkW3NkXvw1uypwGTKT34PkYmvJLw31Fb'),
+('4WEJwCpdDWoQQMDT7ugqiX5VuE3KY3QeYpTTqRoKN9Ea'),
+('JD6GNPCYsrEe95dzbfvzWV548ATFBCiv1VpPTeivqtp'),
+('38nYRZ7ENv1QNZgDk2d5rARsQroCDC6pRhJmCU8yVMbR'),
+('43TMSiFPiw721VP6ue58Kc4cPocFuU1qju1ok9ibDsS6'),
+('HmgJG6XqV4HjDEXG47gTx8oobq6Y5W11oeYBD86N2RPR'),
+('ETXkmPKnSx8jPqGvvES5Ss3k9q811r7BuqPPwcKZn2pv'),
+('YWzEJLhgobeRvYnqVhPRNRC36sEiB9KJWybkXdXoyyb')
+  
+
+    ),
+    Exclude_onwer (owner) AS (
+        VALUES
+            ('5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1'), --  Raydium Authority V4
+            ('BQ72nSv9f3PRyRKCBnHLVrerrv37CYTHm5h3s9VSGQDV'), -- Jupiter Aggregator Authority 1
+            ('2MFoS3MPtvyQ4Wh4M9pdfPjz6UhVoNbFbGJAskCPCj3h'), -- Jupiter Aggregator Authority 2
+            ('HU23r7UoZbqTUuh3vA7emAGztFtqwTeVips789vqxxBw'), -- Jupiter Aggregator Authority 3
+            ('3CgvbiM3op4vjrrjH2zcrQUwsqh5veNVRjFCB9N6sRoD'), -- Jupiter Aggregator Authority 4
+            ('6LXutJvKUw8Q5ue2gCgKHQdAN4suWW8awzFVC6XCguFx'), -- Jupiter Aggregator Authority 5
+            ('CapuXNQoDviLvU1PxFiizLgPNQCxrsag1uMeyk6zLVps'), -- Jupiter Aggregator Authority 6
+            ('GGztQqQ6pCPaJQnNpXBgELr5cs3WwDakRbh1iEMzjgSJ'), -- Jupiter Aggregator Authority 7
+            ('9nnLbotNTcUhvbrsA6Mdkx45Sm82G35zo28AqUvjExn8'), -- Jupiter Aggregator Authority 8
+            ('3LoAYHuSd7Gh8d7RTFnhvYtiTiefdZ5ByamU42vkzd76'), -- Jupiter Aggregator Authority 9
+            ('DSN3j1ykL3obAVNv7ZX49VsFCPe4LqzxHnmtLiPwY6xg'), -- Jupiter Aggregator Authority 10
+            ('69yhtoJR4JYPPABZcSNkzuqbaFbwHsCkja1sP1Q2aVT5'), -- Jupiter Aggregator Authority 11
+            ('6U91aKa8pmMxkJwBCfPTmUEfZi6dHe7DcFq2ALvB2tbB'), -- Jupiter Aggregator Authority 12
+            ('7iWnBRRhBCiNXXPhqiGzvvBkKrvFSWqqmxRyu9VyYBxE'), -- Jupiter Aggregator Authority 13
+            ('4xDsmeTWPNjgSVSS1VTfzFq3iHZhp77ffPkAmkZkdu71'), -- Jupiter Aggregator Authority 14
+            ('GP8StUXNYSZjPikyRsvkTbvRV1GBxMErb59cpeCJnDf1'), -- Jupiter Aggregator Authority 15
+            ('HFqp6ErWHY6Uzhj8rFyjYuDya2mXUpYEk8VW75K9PSiY'), -- Jupiter Aggregator Authority 16
+            ('45ruCyfdRkWpRNGEqWzjCiXRHkZs8WXCLQ67Pnpye7Hp'), -- Jupiter Partner Referral Fee Vault
+            ('ZG98FUCjb8mJ824Gbs6RsgVmr1FhXb2oNiJHa2dwmPd'), -- CxvksNjwhdHDLr3qbCXNKVdeYACW8cs93vFqLqtgyFE5's fee account
+            ('DGT9TPRGQwpJeMvDdZJDEaVRZa2ZMXtp16pGZgAgBoLx') -- pump Bonding Curve
+           
+            ,('GE5PnwZTgWw1YqVGno2QPWqie6aLjswNeGFhiF1nDg3k') -- Raydium (8008-USDC) Market
+
+            ,('25mYnjJ2MXHZH6NvTTdA63JvjgRVcuiaj6MRiEQNs1Dq')  -- okx 相关
+            ,('14qLxu9XDQtc2pgnxX2SSdWPpnuVrEqccgwmATH1khcY')  -- Raydium (SOL-8008) Market
+            ,('5YET3YapxD6to6rqPqTWB3R9pSbURy6yduuUtoZkzoPX')  -- Jupiter ApePro Keeper
+            ,('F5sw1r94VXmUGwesPrcY3TvwSrfVAZmRaWwMtD1tr3Yf')  -- Meteora (8008-SOL) Market   
+            ,('j1oAbxxiDUWvoHxEDhWE7THLjEkDQW2cSHYn2vttxTF') --jupiter limit order taker account
+            ,('4KaVawPKmG1RZCv698XD9YzRsJcFPXrEoYnZbdZmfFFq')  --okx相关
+            ,('j1oeQoPeuEDmjvyMwBmCWexzCQup77kbKKxV59CnYbd') --jupiter limit order taker account
+            ,('6KFVj2czLwNQeE4yBgFau6LHUS72vqgP11Sv1JUNxghz')  --fee account
+       
+        
+    ),
+    transfers_01 AS (
+        SELECT
+            -- sum(amount) AS amount,
+            tx_id,
+            block_time,
+            block_slot,
+            round(amount / 1e6, 2) / 1e6 as token_transfer_M,
+            from_owner,
+            to_owner,
+            from_token_account,
+            to_token_account
+        FROM
+            tokens_solana.transfers
+        WHERE
+            block_time >= (TIMESTAMP '2025-01-01 00:00:00 +08:00')
+            AND block_time < (TIMESTAMP '2025-01-16 02:00:00 +08:00')
+            AND token_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump'
+            AND action = 'transfer'
+            AND (
+                from_owner NOT IN (
+                    SELECT
+                        owner
+                    FROM
+                        Exclude_onwer
+                )
+                AND to_owner NOT IN (
+                    SELECT
+                        owner
+                    FROM
+                        Exclude_onwer
+                )
+            )
+            AND (
+                from_owner IN (
+                    SELECT
+                        address
+                    FROM
+                        input_address
+                )
+                OR to_owner IN (
+                    SELECT
+                        address
+                    FROM
+                        input_address
+                )
+            )
+    )
+SELECT
+    tx_id,
+    block_time,
+    block_slot,
+    token_transfer_M,
+    from_owner,
+    to_owner
+FROM
+    transfers_01
+order by
+    block_time,
+    block_slot asc
+    --
+    --
+    --
+    -- 
+    --   -- 总体的transfer记录
+    -- ,
+    --   transfers_total AS (
+    --     SELECT
+    --       sum(token_transfer_M) AS amount,
+    --       from_owner AS from_owner,
+    --       to_owner AS to_owner,
+    --       from_token_account,
+    --       to_token_account,
+    --       count (*)  AS owner_count
+    --     FROM
+    --       transfers_01
+    --     GROUP BY
+    --       from_token_account,
+    --       to_token_account,
+    --        from_owner,
+    --       to_owner
+    --   )
+    -- SELECT
+    --   amount,
+    --   from_owner,
+    --   to_owner,
+    --   from_token_account,
+    --   to_token_account,
+    --   owner_count
+    -- FROM
+    --   transfers_total

+ 144 - 0
src/code/dune_sql/get_tokenswap_row_special_add_OR_time.sql

@@ -0,0 +1,144 @@
+
+
+ -- 1. 获取某些wallet 针对某一个token的 在一定时间段中每一次swap的信息 , 价格,买卖量,sol量等
+ -- 2. 获取 某一个token的 在一定时间段中每一次swap的信息 , 价格,买卖量,sol量等
+ 
+
+with
+    input_address (address) as (
+        values
+('4cefnAL34KurvDSv8StgQtukXJpzQax8r7rPcfAiH1q1'),
+('77RWuJjzTgswsgUafvhSNDAbGxHcUHQPZ3ogpvNr3eB'),
+('42cyTW8WskqXcxubd7ubKkHAsdg6EYWXCSsGAox5AKbg'),
+('5xbbZ1rM8KF1vvoWCgX3Z6vUcPF4gqFp9cdVet8y8DJ'),
+('9KVcXs5Z64s4sCjo3UWKQGCxQsPjqQ7M4uRJdHngiDB2'),
+('EN3uG7hkyNsWNujTQbxEcCtowpurKCQj4HMNCRegM1pP'),
+('CzSoBsk4TXNuFx59fFv3MDN6QiHrBZDxf1iRvPdHbfRH'),
+('Ex2Th2Wnf535mabJTUuxssD9Cpg6QRry1yYHM65K5sSp'),
+('EZVibEmShfkTA3bmosJzZ78cE1ZT8vRaK3ErNcLFKese'),
+('6GZyjgbvKnWWWfWBvdNGMXp8vwvKvLUyaR3VvKYz45Fp'),
+('5pW6xYQZxZLs67eKuurGcTVm2nHqFcDsiuxesqagoW6V'),
+('7Fxp3e8xdqcSQstyzMHySAR3ZEz2W9Sbvy9gmZAJb44X'),
+('J4L3HPTKC1EkeXCwkLtsipAryeB3H6Y4fWgnpejKh6a3'),
+('CB3HH9v3aDZocy9npe7TyTKfDEBotBmcgPjPDF3ip4qK'),
+('DUFoRbB7B7UmvuzntS4CYexy2Sopz3dvjii97DD4rPgn'),
+('4Bc1Mwa4ww8HUfHpoHfqroFEy7ChKvGi4E51Mj6rnMo9'),
+('7CMXzsRqrVakVE3Fyw3YrNCSCGw5LSm4LRD4yRX9epgp'),
+('6aEgy4QnbQ9EvLdoSpToRApUZyrpwfEXu1AaCVFAmiei'),
+('4RyoEkX1mYN44t8JSKg5bUsgzmLFJfg3jpr2yrEaTTrm'),
+('CwgHkUs6FS9ZYmBaiJd9UC9SNSpTugm26FfRuLdCRDWS'),
+('6deMq6kL7Lb83d9fDj5ok3yTePFejuKmm99eJMbiR6V8'),
+('9NNAetBQDgzcdUMjEmCLKEJ6AXKDAuJDEqNhvXgEmn4L'),
+('D8h6fmowAvKEcCa5Lzbxc1S1pzDnF6CqUThswMPai7e7'),
+('8CM48tGsNFTbsgoY4VQUJpxP5haMSHHc8RGv6v2dfsFf'),
+('DiyANQnWP19XGJQC3ZTPcqSsHZr2MMMvByS4X5WCBUdv'),
+('BKWksc6pM2AyNvFpV6JsKbnXMByNpJZU55JY8u39x3jM'),
+('4F4feehMZiKnycW5q6vVrCWh4mX5v1zqAJu98gg3pDjS'),
+('H46wBvv4U6acvSwkoWKZtQXn6Xkkg2z8Da7coL2ti5Sq'),
+('9bi8EfPV8rawqFbcLPfjS7eDqdoozntv1k4Dy4bZkm4w'),
+('9fw6g6vKSCLUSNBq5HsfsvyJ7U4AdrYVgqoHERWxHzPn'),
+('E9YmnB4w1radAHCVxmXaTr1cV76cL3hZWz5qDoPa2PQU'),
+('8tP1mVCiR4Wj9cX5jR5LCHGNwMoceBeFnujkZYZcfhNg'),
+('3G5XWymznNjt7Eddg7REfKn5WhCG4M2XGvJsXq9b7bkE'),
+('HKiiMjWDxvGXAYNFgoBvionfbaaXWnT79tn5z64tvmQk'),
+('2xk8cNxt89guchaqGYxUkUSkFyfa7KFKdoPQLsAAwna9'),
+('2MMYWhAYjTUmXg9nuUYUHkpaxiT91xCfLsNrSaZPMCDd'),
+('D33VqQjk6cHtq4jiwbvFmdgKAaGi7R4AYUrcUr8FgffC'),
+('2yhNdbgU76LzkFUdjxsLDpN4HrfiUo8TJ39nv5738ehj'),
+('68F9fagj6aN6UZKn8h1NzTtN3xVYSDDecWoVyfFQyYgc'),
+('iQu15wooderqSWhoETpjWFFQWH4gKPmudszrY54a1hu'),
+('A2nAEus8FFPUmTX1gFD1KKKeYKkgW3dMCUGsCkht6kZL'),
+('9YMfU2C9s9ok1nnLYFtYKp7FEUGQpgXq4wTbf3qxNny8'),
+('HSQ8sfQB4f4Ws9ghxf3wvTqETXjmTMZioAwX2zhLhebZ'),
+('21zKBzN6vC5vvueZ3H37m8BiKCKu1HB3hMnstbmJFKdN')
+
+    ),
+ 
+    swap_table as (
+        select
+            block_time,
+            block_slot,
+            tx_id,
+            trade_source,
+            project_main_id,
+            token_bought_amount,
+            token_sold_amount,
+            token_bought_mint_address,
+            token_sold_mint_address,
+            trader_id
+        from
+            dex_solana.trades
+        where
+             block_time > timestamp '2025-01-07 00:00:00 +08:00'
+            and block_time < timestamp '2025-01-07 23:05:00 +08:00'
+            
+            -- block_time > timestamp '2025-01-01 21:00:00 +08:00'
+            -- and block_time < timestamp '2025-01-16 02:00:00 +08:00'
+            and (
+                (
+                    token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump'
+                    and token_sold_mint_address = 'So11111111111111111111111111111111111111112'
+                )
+                or (
+                    token_bought_mint_address = 'So11111111111111111111111111111111111111112'
+                    and token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump'
+                )
+            )
+    ),
+    swap_table_02 as (
+        select
+            block_time,
+            block_slot,
+            tx_id,
+            trade_source,
+            project_main_id,
+            trader_id,
+            (
+                CASE
+                    WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN 'b'
+                    ELSE 's'
+                END
+            ) AS action_type,
+            (
+                CASE
+                    WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_bought_amount
+                    ELSE - token_sold_amount
+                END
+            ) AS token_swap_amount,
+            (
+                CASE
+                    WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN - token_sold_amount
+                    ELSE token_bought_amount
+                END
+            ) AS eth_swap_amount
+        from
+            swap_table
+            -- 指定specila address
+            inner join input_address on input_address.address = swap_table.trader_id
+    ),
+    swap_table_03 as (
+        select
+            trader_id,
+            tx_id,
+            block_time,
+            block_slot,
+            project_main_id,
+            trade_source,
+            action_type,
+            round(token_swap_amount / 1e6, 4) as token_swap_M,
+            round(eth_swap_amount, 2) as eth_swap_amount,
+            round(- eth_swap_amount / token_swap_amount, 10) as pri
+        from
+            swap_table_02
+        where
+         abs(token_swap_amount)> 0.01 *1e6 
+        
+    )
+select
+    *
+from
+    swap_table_03
+order by
+    -- trader_id,
+    block_time,
+    block_slot asc

+ 354 - 0
src/code/dune_sql/get_tokenswap_top_BuyOrDiff_amount.sql

@@ -0,0 +1,354 @@
+
+-- -- 两个方向
+-- -- 1.获取某一个token在某一个时间段的swap记录 ,和并分析 获取 token理论持有 买卖 token,金额,次数,价格 等 ,获取某一个方面的top
+-- -- 2.指定一些trader 获取他们的swap记录并汇总
+-- -- 为了节省private 空间 公用一个。
+ 
+
+-- 第一个方向代码 
+-- 开始 开始 开始 开始 开始 开始 开始 开始 开始
+with swap_table as (
+        select
+            block_time,
+            tx_id,
+            token_bought_amount,
+            token_sold_amount,
+            token_bought_mint_address,
+            token_sold_mint_address,
+            trader_id
+        from
+            dex_solana.trades
+        where
+      
+            block_time > timestamp '2025-01-08 04:45:00 +08:00'
+            and block_time < timestamp '2025-01-08 06:00:00 +08:00'
+            
+            and (
+            (
+                    token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump'
+                    and token_sold_mint_address = 'So11111111111111111111111111111111111111112'
+                )
+                or (
+                    token_bought_mint_address = 'So11111111111111111111111111111111111111112'
+                    and token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump'
+                )
+            )
+            
+    ),
+    swap_table_02 as (
+        select
+            trader_id,
+            COALESCE(
+                SUM(
+                    CASE
+                        WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_bought_amount
+                        ELSE 0
+                    END
+                ),
+                0
+            ) AS token_bought,
+            COALESCE(
+                SUM(
+                    CASE
+                        WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_sold_amount
+                        ELSE 0
+                    END
+                ),
+                0
+            ) AS eth_bought,
+            COALESCE(
+                SUM(
+                    CASE
+                        WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN 1
+                        ELSE 0
+                    END
+                ),
+                0
+            ) AS bought_count,
+            COALESCE(
+                SUM(
+                    CASE
+                        WHEN token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_sold_amount
+                        ELSE 0
+                    END
+                ),
+                0
+            ) AS token_sold,
+            COALESCE(
+                SUM(
+                    CASE
+                        WHEN token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_bought_amount
+                        ELSE 0
+                    END
+                ),
+                0
+            ) AS eth_sold,
+            COALESCE(
+                SUM(
+                    CASE
+                        WHEN token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN 1
+                        ELSE 0
+                    END
+                ),
+                0
+            ) AS sold_count
+        from
+            swap_table
+        group by
+            trader_id
+    )
+select
+    trader_id as swap_trader_id,
+    round( (token_bought - token_sold) / 1e6, 2) as li_lun_hold,
+    round(token_bought / 1e6, 2) as token_b_M,
+    round(token_sold / 1e6, 2) as token_s_M,
+    round(eth_bought, 2) as eth_b,
+    round(eth_sold, 2) as eth_s,
+    bought_count as b_count,
+    sold_count as s_count
+    ,(
+        CASE
+            WHEN token_bought != 0 THEN round(eth_bought / token_bought*1e6, 3)
+            ELSE 0
+        END
+    ) as avg_b_pri
+    , (
+        CASE
+            WHEN token_sold != 0 THEN round(eth_sold / token_sold*1e6, 3)
+            ELSE 0
+        END
+    ) as avg_s_pri
+from
+    swap_table_02
+    where 
+    -- abs(token_bought - token_sold) >0.2*1e6
+      -- (token_bought - token_sold) >0.2*1e6
+      abs(token_bought - token_sold) > 0.1*1e6 and
+    -- (token_bought - token_sold) < 0.1*1e6 and
+     ( eth_bought > 1.9 or       eth_sold >1.9)
+order by
+    --  2 diff amount
+    2
+    --  3 buy amount
+    -- 3
+    -- 7 buy count
+    -- 7
+    -- 8 sell count
+    -- 8
+    desc
+-- limit
+--     200
+
+-- 第一个方向代码 
+-- 结束 结束 结束 结束 结束 结束 结束 结束 结束
+
+
+
+-- -- -- 第二个方向代码 
+-- -- -- 开始 开始 开始 开始 开始 开始 开始 开始 开始
+-- with
+--     input_address (address) as (
+--         VALUES
+-- ('5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1'),
+-- ('Cet3TXGhtFcBo6vX9kfYjbtNyANbCWqwVC6G1QioKUhc'),
+-- ('7m2XQP2NDebaEKDhegj7WYpZBmrKF5yhiVi1JZU8cwoj'),
+-- ('68WLD7YzwjqBoCEVuJ3rjVbaPaAog6ATCkjUTpNqiMNF'),
+-- ('4ttYJgVcZMMXFsTPBAEKVUEDUshvsXqgvfUv3W7bdv7e'),
+-- ('14qLxu9XDQtc2pgnxX2SSdWPpnuVrEqccgwmATH1khcY'),
+-- ('Hh6XswyZK9WPUbb6csqi7YggDqYTstKkHFvvh7PFx7kw'),
+-- ('DAr4CE2rFgvtDHSFG75rEhmxmqgfEQYir91RGY458pkZ'),
+-- ('CC1xmUJCvq4wPzHSNKVHfMV9T3vRjHTZnzvW9VLVJ4gs'),
+-- ('GDwiC6S14topnYmWquQb6JdQxrRsvtH7N3K8UCLZmVrk'),
+-- ('HjUrUJi7zUCXu6NpXBUujYsoG5TJsXkPUrYJdWMKVtts'),
+-- ('5PZs2fmTJpjaMhYbdAH6uEx7Jbbhy2RdAdkNnPw83H3a'),
+-- ('FH8xnCwgoQgk3nXuePEdxYB5SZDTWSZav27smVcHjN1q'),
+-- ('ET3VpuSMr15ufn4z9a5kwHhyLRse2H96TY2HXVKZxCJM'),
+-- ('GD9Q87EY9guqAqkxgNwiqoqUKmBs958tcFEkQ8q1HD1N'),
+-- ('5pW6xYQZxZLs67eKuurGcTVm2nHqFcDsiuxesqagoW6V'),
+-- ('7V7BFFLNgHhrJq7Udm9Zi26Tbgvytg9GWKLdDLRzf4z6'),
+-- ('BC8yiFFQWFEKrEEj75zYsuK3ZDCfv6QEeMRif9oZZ9TW'),
+-- ('6QfdT1XZauUMCJU3SaN2d2aqdoFa4TDVNmxJig52ZGZT'),
+-- ('3M2dQzm6kz9ChDfaeX3xxqzn8BdeLjJEJv9JBd9WG2Jx'),
+-- ('6xMPaDn8jZ1r68BzXAunvumU8BTG2vDbgemNkWwRd1Fo'),
+-- ('3UFHt8qqRtHM2hZaCYRGKaF1gYfePcRYZFo2CdaadfMa'),
+-- ('Aewfbg61nn3SrFikqTsX2c8nZM8DXVbG7jpUp1Qwg22H'),
+-- ('3kZ7ZYjUGSFMhXbQ3twdCmqP1cgCjjBbZHRd8eXFFaja'),
+-- ('E9EpirpCKqJKnUTfhpUKzDKKFzVd7Q8RjjbdRVjPxXWX'),
+-- ('3Q7bWprdJZ5JUDoy2wBAcoKzgp7mZ3ChPaR8o3SUf7EN'),
+-- ('27NdJihiGpbg1kgHwAjk4UDUScTjEg7BDTo6urHjB3Cr'),
+-- ('BTJk52ULuadhdzYWpK2io1urPVfqEpqoH3sS4yg4b8Z2'),
+-- ('2fnRmNSYMTuyGw58UdZTrEgb2NmjNXvyRzqU9FJG31Q6'),
+-- ('GE5PnwZTgWw1YqVGno2QPWqie6aLjswNeGFhiF1nDg3k'),
+-- ('9r7p8uQiwRMRqQwAGDHUQ1Lmtjt4auNTxK7TgWg75J7C'),
+-- ('4N41X5S1GaqKQhZvqQsE7aKCpEm2xhswKTznQoxuJEmv'),
+-- ('FT78Vsmv2hWj8PK9HN1rtGEdKtt4Ajd2RSsxhrUt5nVG'),
+-- ('FML97BaUTVJX15T8tCU5LUbcpvJkHQ5RcZXmV354PzRt'),
+-- ('CpVNBP8bbFvT7Yt3zwTnCaXt26XojQxduNXaMz57DGLf'),
+-- ('77RWuJjzTgswsgUafvhSNDAbGxHcUHQPZ3ogpvNr3eB'),
+-- ('3ddwpbz7aXr6ZD7ybMZcUMTm76pgeszJekSkLdS931EH'),
+-- ('4KaVawPKmG1RZCv698XD9YzRsJcFPXrEoYnZbdZmfFFq'),
+-- ('HRL9mVQav58fLGJpN16qT55nXuk8S7Lx33Gvw2SHRHK5'),
+-- ('AeqgApsq3CoopttTpohuLiXj53EauJ78ophVvy8hrfkt'),
+-- ('51pcMTBEKwiKRVrCV5EmmHazsWetGDUxKkxoc5r3248'),
+-- ('5pKTV6EhcyFQPBbEDEATyDiUHM4kDZddtopRLq7o8kJj'),
+-- ('66VSSN5FiwkDXCSJ5ydNCZm8RD1DwVKXuwaeFBGJ5fKg'),
+-- ('3qTNSWq6o7hfb7RgSz6GzxDMNLgrjVuwKqFD2kJznuRB'),
+-- ('3fZcDhWXTBvNMkgzkyMmqxMizfysnvFZw5CzR7pnuxRz'),
+-- ('F8pWbg5zGXnzghmAtNW9SQPQYwP1RkyzsHs6KZTBh7Dg'),
+-- ('DuDEvMussH5iKvBPaa6mSVyJY39fPQKNEPUyT5c19S2x'),
+-- ('98oWTwQBBEyhhLMcUrgy2gta7zmVHZavQmcS8z98PDHe'),
+-- ('EPS4j3XEBas8okzQCe2CeuwKf6w6aif5ED4GMj3mqv4r'),
+-- ('5Xu8p9emHTkuNQkPN6D2ygkJypWo1nbUzbjYHUfXcNuR'),
+-- ('Hk7gzrcANZpqBnYCHeBEuxFk18HLu9Tey7TrNroyPVK7'),
+-- ('Goc5dPcEM94cFW97k92XNoT45vR89isxSEjxqE3VTvhv'),
+-- ('A3wcLYiBQdW5Uf5TXxbvuueJYh8pfAy57cbuE5fQJBeS'),
+-- ('D6DLAnP1NnimNYuHNDhJZfGkD1TmiKENWG2PrdhL8qLP'),
+-- ('CGnKC5zME8G36ftGLq1wrmQxw3SUgzVojJmVNXpidC6k'),
+-- ('8oTVjgucrArfQgyGFy2AiEKz6QDhW6ATTJQ1nSkG3wAr'),
+-- ('4k22yKKbCsrq7QhCd89ZXFcxhSbGmszA92H2KhthpgKq'),
+-- ('dR4GCDofsA6ZpBqzQpQJeob4msVspyASATbqW4sC4YM'),
+-- ('DNfuF1L62WWyW3pNakVkyGGFzVVhj4Yr52jSmdTyeBHm'),
+-- ('2ANPc28rr67W8StfCFzfuY3ZbKp9FCJ9tfBc17pRK7sY'),
+-- ('9cQcY83s45VsMwVmFHFUR2HVG5j9Rc3K8HU4hzLaXnWs'),
+-- ('HjHBsicgsMqSrU9VPSas8sKYLGtCfwMzfiYHzfMEta6f'),
+-- ('5c511kvVfCGrEsLkNb6RoVqqA5BpimGHyhkE3ki4kWkX'),
+-- ('7xgxtHJX21bvXozPsmyVCi88qChqxZR4e84ckXgrTeFp'),
+-- ('D7hpLQ4VEKAr2ALHZqT7JjTLqgBGsRqJZrbfzxPcyVtD'),
+-- ('6mh7mv8JGBqmnV86NFJoVS3fkYgdbxCmxVys1vK3dB6t'),
+-- ('3v6XiVAbays5FiZy6sWuriLHfC77EAX9mtB57Hf8VmpQ'),
+-- ('Gy5GSoHmrfnv49TZHku1bxNv2Dy4tFDjgm7vGbmp8S2h'),
+-- ('2geGo4wz6KgBb84Az6MM8w1dDnXoW6wmyX3hkEstAXJw'),
+-- ('9UPcMHdTw8pJSvv13dH1tGawwCjSCSjjxwU5cKu9PTiq'),
+-- ('2k77ScTf9ULptpVRG4M4X6SRZiuUxWCTzG2RWBT7KnHR'),
+-- ('9wNu1SLCfouEsR4B8PCck6p15mcSgun7k5KEKDw43Cyu'),
+-- ('3nxNfz8fx4DPW37i97Qs4Ue4Z2zVinEFeDAAymwtEtYd'),
+-- ('Gg6PuMT9qs53QiSrrJsnLyh51xedbzKAV5JiQ9qHPQ7a'),
+-- ('7JYCpRR4ZnKnMuxgiRta6ogs1BrC1aURW7iZdiJytsPB'),
+-- ('2ydwYpyTwn1NrPpRN4n6NaHHtg82G65QAN2rQxX6e9ep'),
+-- ('AR6SjcFLzQoZXXLVbaKo4GbsvmKmKKobCfrXFHcqE6TN'),
+-- ('8Mnb87uUYXcqejP6RuUyDiX9Fd1unCA3YdM3zLGSVEPQ'),
+-- ('CfpFiySF5c63fvgtjjgbefjS2JSATJYeqp8qFQX76hKT'),
+-- ('CdCM27tboWquCEC3Pq3CRphSdiGV6Q48VewWmrxbUyYW')
+
+--     ),
+--     swap_table as (
+--         select
+--             block_time,
+--             tx_id,
+--             token_bought_amount,
+--             token_sold_amount,
+--             token_bought_mint_address,
+--             token_sold_mint_address,
+--             trader_id
+--         from
+--             dex_solana.trades
+--         where
+--             block_time > timestamp '2025-01-06 21:00:00 +08:00'
+--             and block_time < timestamp '2025-01-15 02:00:00 +08:00'
+--             and (
+--                 (
+--                     token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump'
+--                     and token_sold_mint_address = 'So11111111111111111111111111111111111111112'
+--                 )
+--                 or (
+--                     token_bought_mint_address = 'So11111111111111111111111111111111111111112'
+--                     and token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump'
+--                 )
+--             )
+--     ),
+--     swap_table_02 as (
+--         select
+--             trader_id,
+--             COALESCE(
+--                 SUM(
+--                     CASE
+--                         WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_bought_amount
+--                         ELSE 0
+--                     END
+--                 ),
+--                 0
+--             ) AS token_bought,
+--             COALESCE(
+--                 SUM(
+--                     CASE
+--                         WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_sold_amount
+--                         ELSE 0
+--                     END
+--                 ),
+--                 0
+--             ) AS eth_bought,
+--             COALESCE(
+--                 SUM(
+--                     CASE
+--                         WHEN token_bought_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN 1
+--                         ELSE 0
+--                     END
+--                 ),
+--                 0
+--             ) AS bought_count,
+--             COALESCE(
+--                 SUM(
+--                     CASE
+--                         WHEN token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_sold_amount
+--                         ELSE 0
+--                     END
+--                 ),
+--                 0
+--             ) AS token_sold,
+--             COALESCE(
+--                 SUM(
+--                     CASE
+--                         WHEN token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN token_bought_amount
+--                         ELSE 0
+--                     END
+--                 ),
+--                 0
+--             ) AS eth_sold,
+--             COALESCE(
+--                 SUM(
+--                     CASE
+--                         WHEN token_sold_mint_address = '5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump' THEN 1
+--                         ELSE 0
+--                     END
+--                 ),
+--                 0
+--             ) AS sold_count
+--         from
+--             swap_table
+--             inner join input_address on input_address.address = swap_table.trader_id
+--         group by
+--             trader_id
+--     )
+-- select
+--     trader_id as swap_trader_id,
+--     round((token_bought - token_sold) / 1e6, 2) as li_lun_hold,
+--     round(token_bought / 1e6, 2) as token_b_M,
+--     round(token_sold / 1e6, 2) as token_s_M,
+--     round(eth_bought, 2) as eth_b,
+--     round(eth_sold, 2) as eth_s,
+--     bought_count as b_count,
+--     sold_count as s_count,
+--     (
+--         CASE
+--             WHEN token_bought != 0 THEN round(eth_bought / token_bought * 1e6, 3)
+--             ELSE 0
+--         END
+--     ) as avg_b_pri,
+--     (
+--         CASE
+--             WHEN token_sold != 0 THEN round(eth_sold / token_sold * 1e6, 3)
+--             ELSE 0
+--         END
+--     ) as avg_s_pri
+-- from
+--     swap_table_02
+-- order by
+--     --  2 diff amount
+--     2
+--     --  3 buy amount
+--     -- 3
+--     -- 7 buy count
+--     -- 7
+--     -- 8 sell count
+--     -- 8
+--     desc

+ 0 - 0
src/code/tamper_dune_get_dalao_buy_same_token.js → src/code/tamper_dune_get_dalao_buy_same_token_And_token_dif.js


+ 39 - 60
src/code/tamper_get_top_sol_gmgn_nowuse.js

@@ -72,7 +72,7 @@ function getCurrentTime() {
     let second = zeroFill(date.getSeconds());//秒
 
     //当前时间
-    var curTime =  month + day + '_' + hour + minute ;
+    var curTime = month + day + '_' + hour + minute;
     return curTime;
 }
 
@@ -80,19 +80,21 @@ function getCurrentTime() {
 function get_thead_arr_toptrader() {
 
     // let titlearr = _thead.innerText.trim().split(/\r?\n/);
-    let titlearr = ['Maker', 'SOL', 'Buy_sol', 'Buy_token_M', 'Sell_sol', 'Sell_token_M', 'Pnl_sol', 'Pnl_per', 'buy_cout', 'sell_cout'];
+    let titlearr = ['Maker', 'SOL', 'Buy_sol', 'Buy_token_M', 'buy_cout', 'Sell_sol', 'Sell_token_M', 'sell_cout', 'Pnl_sol', 'Pnl_per',];
     return titlearr;
 }
 
 async function get_tbody_data_toptrader() {
 
-    let div_has_tran_table = document.querySelector("div.chakra-tabs__tab-panels.css-2zi8qu");
+    let div_has_tran_table = document.querySelector("div.ag-root-wrapper-body.ag-focus-managed.ag-layout-normal > div.ag-root.ag-unselectable.ag-layout-normal.ag-body-vertical-content-no-gap.ag-body-horizontal-content-no-gap");
+
+
     let tbody = div_has_tran_table.querySelector("div.ag-body.ag-layout-normal div.ag-center-cols-viewport div.ag-center-cols-container");
 
     let arr_tbody_trs;
     arr_tbody_trs = Array.from(tbody.children);
     let last_tr = arr_tbody_trs[arr_tbody_trs.length - 1];
-    let last_row_id = parseInt(last_tr.getAttribute('row-id'));
+    let last_row_id = parseInt(last_tr.getAttribute('row-index'));
     if (arr_res_data_toptrader.length - 1 >= last_row_id + 1) {
         // 这批已经全部获取了 
         return false;
@@ -101,7 +103,7 @@ async function get_tbody_data_toptrader() {
 
     for (let i = 0; i < arr_tbody_trs.length; i++) {
 
-        let cur_row_id = parseInt(arr_tbody_trs[i].getAttribute('row-id'));
+        let cur_row_id = parseInt(arr_tbody_trs[i].getAttribute('row-index'));
         if (arr_res_data_toptrader.length - 1 >= cur_row_id + 1) {
             continue;
         }
@@ -141,8 +143,12 @@ async function get_tbody_data_toptrader() {
 
             else if (i == 3) {
                 // bought
-                let arr_sol_amount = arr_tds[i].children[0].children;
-                if (arr_sol_amount.length == 1) {
+
+                // sol
+                // token txns
+
+                let arr_sol_amount_txns = (arr_tds[i].children);
+                if (arr_sol_amount_txns.length == 1) {
                     // 为 --
                     tdtexts.push(0);
                     tdtexts.push(0);
@@ -152,7 +158,7 @@ async function get_tbody_data_toptrader() {
 
                 let str_sol = "0";
                 let float_sol;
-                str_sol = arr_sol_amount[0].innerText.trim().toLowerCase();
+                str_sol = arr_sol_amount_txns[0].innerText.trim().toLowerCase();
                 str_sol = str_sol.replace(/[sol$,%\+><]/g, "").trim();
                 // if (str_sol == "--") {
                 //     str_sol = "0";
@@ -160,37 +166,27 @@ async function get_tbody_data_toptrader() {
 
                 let str_token_amount = "0";
                 let float_token_amount;
-
-                
-                str_token_amount = arr_sol_amount[1].innerText.trim().toLowerCase();
-                // if (str_token_amount == "--") {
-                //     str_token_amount = "0";
-                // }
+                let arr_token_amount_txns = [];
+                let float_txns;
 
 
+                arr_token_amount_txns = arr_sol_amount_txns[1].innerText.trim().toLowerCase().split('/');
+                str_token_amount = arr_token_amount_txns[0].trim();
+                str_txns = arr_token_amount_txns[1].trim();
 
                 float_sol = get_float_number(str_sol);
-                // for (let number_char of number_chars_arr) {
-                //     if (str_sol.indexOf(number_char) != -1) {
-                //         float_sol = parseFloat(str_sol) * 10 ** number_chars_obj[number_char];
-                //     }
-                // }
                 tdtexts.push(float_sol);
 
-
                 float_token_amount = get_float_number(str_token_amount);
-                // for (let number_char of number_chars_arr) {
-                //     if (str_token_amount.indexOf(number_char) != -1) {
-                //         float_token_amount = parseFloat(str_token_amount) * 10 ** number_chars_obj[number_char];
-                //     }
-                // }
-                tdtexts.push(float_token_amount/1e6);
+                float_txns = get_float_number(str_txns);
+                tdtexts.push(float_token_amount / 1e6);
+                tdtexts.push(float_txns);
 
             } else if (i == 4) {
                 // sold
 
-                let arr_sol_amount = arr_tds[i].children[0].children;
-                if (arr_sol_amount.length == 1) {
+                let arr_sol_amount_txns = arr_tds[i].children[0].children;
+                if (arr_sol_amount_txns.length == 1) {
                     tdtexts.push(0);
                     tdtexts.push(0);
                     continue;
@@ -198,27 +194,28 @@ async function get_tbody_data_toptrader() {
 
                 let str_sol = "0";
                 let float_sol;
-                str_sol = arr_sol_amount[0].innerText.trim().toLowerCase();
+                str_sol = arr_sol_amount_txns[0].innerText.trim().toLowerCase();
                 str_sol = str_sol.replace(/[sol$,%\+><]/g, "").trim();
                 // if (str_sol == "--") {
                 //     str_sol = "0";
                 // }
-
                 let str_token_amount = "0";
                 let float_token_amount;
-                str_token_amount = arr_sol_amount[1].innerText.trim().toLowerCase();
-                // if (str_token_amount == "--") {
-                //     str_token_amount = "0";
-                // }
+                let arr_token_amount_txns = [];
+                let float_txns;
 
 
+                arr_token_amount_txns = arr_sol_amount_txns[1].innerText.trim().toLowerCase().split('/');
+                str_token_amount = arr_token_amount_txns[0].trim();
+                str_txns = arr_token_amount_txns[1].trim();
 
                 float_sol = get_float_number(str_sol);
-
                 tdtexts.push(float_sol);
 
                 float_token_amount = get_float_number(str_token_amount);
-                tdtexts.push(float_token_amount/1e6);
+                float_txns = get_float_number(str_txns);
+                tdtexts.push(float_token_amount / 1e6);
+                tdtexts.push(float_txns);
 
 
             } else if (i == 5) {
@@ -278,27 +275,6 @@ async function get_tbody_data_toptrader() {
                 continue
 
             } else if (i == 10) {
-                // TXs
-                let arr_buy_sell_cout = arr_tds[i].children[0].children;
-
-                let str_buy_cout = "0";
-                str_buy_cout = arr_buy_sell_cout[0].innerText.trim().toLowerCase();
-                str_buy_cout = str_buy_cout.replace(/[sol$,%\+><]/g, "").trim();
-
-                let str_sell_cout = "0";
-                str_sell_cout = arr_buy_sell_cout[1].innerText.trim().toLowerCase();
-                str_sell_cout = str_sell_cout.replace(/[sol$,%\+><]/g, "").trim();
-
-
-                let float_buy_cout = get_float_number(str_buy_cout);
-                tdtexts.push(float_buy_cout);
-
-                let float_sell_cout = get_float_number(str_sell_cout);
-                tdtexts.push(float_sell_cout);
-
-                continue
-
-            } else if (i == 11) {
                 // Last Active
                 continue
 
@@ -331,7 +307,8 @@ function autoScroll_toptrader() {
     let interval;
     let scroll_times = 15;
 
-    let div_has_tran_table = document.querySelector("div.chakra-tabs__tab-panels.css-2zi8qu");
+
+    let div_has_tran_table = document.querySelector("div.ag-root-wrapper-body.ag-focus-managed.ag-layout-normal > div.ag-root.ag-unselectable.ag-layout-normal.ag-body-vertical-content-no-gap.ag-body-horizontal-content-no-gap");
     let tbody = div_has_tran_table.querySelector("div.ag-body.ag-layout-normal div.ag-center-cols-viewport div.ag-center-cols-container");
 
 
@@ -435,8 +412,10 @@ async function clickButton_get_toptrader() {
     console.log("  tab_top_trader_click click=");
     await tab_top_trader_click.click();
     await sleep(7000);
-    let div_has_tran_table = document.querySelector("div.chakra-tabs__tab-panels.css-2zi8qu");
-    let _thead = div_has_tran_table.querySelector("div.css-c6kdal div.ag-header-row.ag-header-row-column");
+    let div_has_tran_table = document.querySelector("div.ag-root-wrapper-body.ag-focus-managed.ag-layout-normal > div.ag-root.ag-unselectable.ag-layout-normal.ag-body-vertical-content-no-gap.ag-body-horizontal-content-no-gap");
+    let _thead = div_has_tran_table.querySelector("div.ag-header.ag-pivot-off.ag-header-allow-overflow div.ag-header-viewport div.ag-header-row.ag-header-row-column ");
+
+
     let arr_th = _thead.children;
     let tab_click_USD_toptrader = arr_th[5].querySelector("div.css-1vimx2u");
     if (tab_click_USD_toptrader.innerText.includes("USD")) {

+ 0 - 367
src/code/tamper_get_top_trader_sol_gmgn.js

@@ -1,367 +0,0 @@
-// ==UserScript==
-// @name         GMGN-Get-Top
-// @namespace    http://tampermonkey.net/
-// @version      2024-10-19
-// @description  try to take over the world!
-// @author       You
-// @match        https://gmgn.ai/sol/token/*
-// @icon         https://www.google.com/s2/favicons?sz=64&domain=gmgn.ai
-// @grant        none
-// ==/UserScript==
-
-
-function funcDownload(content, filename) {
-    console.log('begin download');
-    // 创建隐藏的可下载链接
-    let eleLink = document.createElement('a');
-    eleLink.download = filename;
-    eleLink.style.display = 'none';
-    // 字符内容转变成blob地址
-    let blob = new Blob([content]);
-    eleLink.href = URL.createObjectURL(blob);
-    // 触发点击
-    document.body.appendChild(eleLink);
-    eleLink.click();
-    // 然后移除
-    document.body.removeChild(eleLink);
-}
-
-
-function sleep(sleepdelay) {
-    return new Promise((resolve, reject) => {
-        setTimeout(() => {
-            resolve(sleepdelay);
-        }, sleepdelay);
-    })
-}
-var number_chars_obj = {
-    "k": 3,
-    "m": 6,
-    "b": 9,
-    "t": 12,
-    "p": 15
-};
-
-
-var number_chars_arr = ["k", "m", "b", "t", "p"];
-
-function get_thead_arr() {
-
-    // let titlearr = _thead.innerText.trim().split(/\r?\n/);
-    let titlearr = ['Maker', 'SOL', 'Buy_sol', 'Sell_sol', 'Pnl_sol', 'Pnl_per'];
-    return titlearr;
-}
-
-
-
-var pre_timestamp = -1;
-var now_timestamp = -1;
-async function get_tbody_data() {
-
-    let div_has_tran_table = document.querySelector("div.chakra-tabs__tab-panels.css-2zi8qu");
-    let tbody = div_has_tran_table.querySelector("tbody.g-table-tbody");
-
-    let arr_tbody_trs;
-    arr_tbody_trs = Array.from(tbody.children);
-    arr_tbody_trs.shift();
-
-
-    for (let i = 0; i < arr_tbody_trs.length; i++) {
-
-        let arr_tds;
-        arr_tds = Array.from(arr_tbody_trs[i].children);
-
-        let tdtexts = [];
-        // if (arr_tds.length != 10) {
-        //     continue;
-        // }
-        for (let i = 0; i < arr_tds.length; i++) {
-            if (i == 0) {
-                // trader
-                let a_element = arr_tds[i].querySelector("a");
-                let str_trader = a_element.href.split('/').pop();
-                tdtexts.push(str_trader);
-
-            }
-            else if (i == 1) {
-                //sol balance   
-
-                let str_balance = arr_tds[i].innerText.trim().replace(/[,]/g, "").trim();
-                str_balance = str_balance.replace(/\s+/g, "");
-
-                str_balance = str_balance.toLowerCase();
-                let float_balance;
-
-                float_balance = parseFloat(str_balance);
-                for (let number_char of number_chars_arr) {
-                    if (str_balance.indexOf(number_char) != -1) {
-                        float_balance = parseFloat(str_balance) * 10 ** number_chars_obj[number_char];
-                    }
-                }
-                tdtexts.push(float_balance);
-
-            } else if (i == 2) {
-                // bought
-
-
-                let str_sol = "0";
-                let str_token_amount = "0";
-                let float_sol;
-
-                let arr_sol_amount = arr_tds[i].children[0].children;
-                if (arr_sol_amount.length == 1) {
-                    tdtexts.push(0);
-                    continue;
-                }
-
-                str_sol = arr_sol_amount[0].innerText.trim().toLowerCase();
-                str_sol = str_sol.replace(/[sol,%\+><]/g, "").trim();
-                if (str_sol == "--") {
-                    str_sol = "0";
-                }
-
-                float_sol = parseFloat(str_sol);
-                for (let number_char of number_chars_arr) {
-                    if (str_sol.indexOf(number_char) != -1) {
-                        float_sol = parseFloat(str_sol) * 10 ** number_chars_obj[number_char];
-                    }
-                }
-                tdtexts.push(float_sol);
-
-            } else if (i == 3) {
-                // sold
-                let str_sol = "0";
-                let str_token_amount = "0";
-                let float_sol;
-
-                let arr_sol_amount = arr_tds[i].children[0].children;
-                if (arr_sol_amount.length == 1) {
-                    tdtexts.push(0);
-                    continue;
-                }
-
-                str_sol = arr_sol_amount[0].innerText.trim().toLowerCase();
-                str_sol = str_sol.replace(/[sol,%\+><]/g, "").trim();
-                if (str_sol == "--") {
-                    str_sol = "0";
-                }
-
-                float_sol = parseFloat(str_sol);
-                for (let number_char of number_chars_arr) {
-                    if (str_sol.indexOf(number_char) != -1) {
-                        float_sol = parseFloat(str_sol) * 10 ** number_chars_obj[number_char];
-                    }
-                }
-                tdtexts.push(float_sol);
-
-
-
-
-            } else if (i == 4) {
-                // pnl
-
-                let str_sol = "0";
-                let str_percent = "0";
-                let float_sol = 0;
-                let float_percent = 0;
-
-                let arr_sol_percent = arr_tds[i].children[0].children;
-
-
-                str_sol = arr_sol_percent[0].innerText.trim().toLowerCase();
-                str_sol = str_sol.replace(/[sol,%\+><]/g, "").trim();
-                str_percent = arr_sol_percent[1].innerText.trim().toLowerCase();
-                str_percent = str_percent.replace(/[sol,%\+><]/g, "").trim();
-
-                if (str_sol == "--") {
-                    str_sol = "0";
-                }
-
-                if (str_percent == "--") {
-                    str_percent = "999999";
-                }
-
-
-                float_sol = parseFloat(str_sol);
-                float_percent = parseFloat(str_percent);
-                for (let number_char of number_chars_arr) {
-                    if (str_sol.indexOf(number_char) != -1) {
-                        float_sol = parseFloat(str_sol) * 10 ** number_chars_obj[number_char];
-                    }
-                    if (str_percent.indexOf(number_char) != -1) {
-                        float_percent = parseFloat(str_percent) * 10 ** number_chars_obj[number_char];
-                    }
-
-                }
-                tdtexts.push(float_sol);
-                tdtexts.push(float_percent);
-
-            } else if (i == 5) {
-                // Realized
-                continue;
-            }
-            else if (i == 6) {
-                // UnRealized
-                continue
-
-            } else if (i == 7) {
-                // Avg Cost/Sold
-
-            } else if (i == 8) {
-                // TXs
-
-            } else if (i == 9) {
-                // Last Active
-
-            }
-
-        }
-        res_data.push(tdtexts);
-
-    }
-
-
-}
-
-function save_resdata() {
-    console.log("enter save_resdata");
-    res_data.forEach((val, index, arr) => { arr[index] = val.join() + "\n" });
-    let urlpathname = window.location.pathname.slice(1).split('/');
-    urlpathname = urlpathname.pop()
-
-    funcDownload(res_data.join(""), urlpathname + "_top_gmgn_sol" + "_" + parseInt(Date.now() / 1000) + ".csv");
-    res_data = [];
-
-}
-function autoScroll() {
-    console.log("enter autoScroll");
-
-    let interval;
-    let scroll_times = 15;
-
-    let div_has_tran_table = document.querySelector("div.chakra-tabs__tab-panels.css-2zi8qu");
-    let tbody = div_has_tran_table.querySelector("div.css-1o2kb31 tbody.g-table-tbody");
-
-
-    async function down() {
-        interval = setInterval(async () => {
-
-            let tbodytrs;
-
-            if (scroll_times > 0) {
-
-                await sleep(150);
-                tbodytrs = tbody.children;
-                tbodytrs[tbodytrs.length - 1].scrollIntoView({ behavior: "smooth", block: "start" });
-
-
-            } else {
-                clearInterval(interval);
-                await get_tbody_data();
-                save_resdata();
-                return;
-
-            }
-            scroll_times--;
-
-
-            tbodytrs = tbody.children;
-            if (tbodytrs.length == 101) {
-                clearInterval(interval);
-                await get_tbody_data();
-                save_resdata();
-                return;
-
-            }
-
-            await sleep(300);
-        }, 1200)
-
-    }
-
-    down()
-
-}
-
-
-
-var res_data = [];
-var sTop = 0;
-
-// window.addEventListener('load', async () => {
-
-(async function () {
-    console.log("enter load");
-    await sleep(6000);
-    console.log("create button");
-
-    var mydivbox = document.createElement("div");
-
-    var button_tran = document.createElement("button");//创建 获取toptran一个按钮
-    mydivbox.appendChild(button_tran);
-    button_tran.className = "tam-mybutton-gettran"
-    button_tran.textContent = "gettran"; //按钮内容
-    button_tran.style.width = "90px"; //按钮宽度
-    button_tran.style.height = "30px"; //按钮高度
-    button_tran.style.align = "center"; //文本居中
-    button_tran.style.color = "blue"; //按钮文字颜色
-    button_tran.style.background = "#e33e33"; //按钮底色
-    button_tran.style.border = "1px solid #e33e33"; //边框属性
-
-
-    mydivbox.style.position = "fixed";
-    mydivbox.style.top = "80px";
-    mydivbox.style.right = "40px";
-    document.body.appendChild(mydivbox);
-
-    button_tran.addEventListener("click", clickButton); //监听按钮点击事件
-
-    async function clickButton() {
-        res_data = [];
-
-        console.log("enter clickButton res_data=", res_data);
-        let div_chakra_tabs = document.querySelector('[role="tablist"]');
-        let arr_buttons_chakra = Array.from(div_chakra_tabs.querySelectorAll("button"));
-        let button_top_trader = undefined;
-        for (let button of arr_buttons_chakra) {
-            if (button.innerText.includes("Top Traders")) {
-                button_top_trader = button;
-                break;
-            }
-        }
-        if (button_top_trader == undefined) {
-            console.log("no button_top_trader");
-            return;
-        }
-        await button_top_trader.click();
-        await sleep(7000);
-
-        let div_has_tran_table;
-        let _tbody;
-        let _thead;
-
-        // chakra-tabs__tablist css-1p75jc5
-        div_has_tran_table = document.querySelector("div.chakra-tabs__tab-panels.css-2zi8qu");
-        _tbody = div_has_tran_table.querySelector("div.css-1o2kb31 tbody.g-table-tbody");
-        _thead = div_has_tran_table.querySelector("div.css-1o2kb31 thead.g-table-thead");
-        let arr_th = _thead.querySelectorAll("th");
-        let click_USD = arr_th[1].querySelector("div.css-1vimx2u");
-        if (click_USD.innerText.includes("USD")) {
-            await click_USD.click();
-            await sleep(4000);
-        }
-
-
-
-
-        let titlearr = get_thead_arr();
-        res_data.push(titlearr);
-        autoScroll();
-
-    }
-
-})();
-
-
-
-

+ 76 - 0
src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/001_01_merge_dune_hold_info_from_manydunecsv_to_一个多列的xlsx文档.py

@@ -0,0 +1,76 @@
+
+# 将special add 在不同时间持仓的csv合并为一个excel
+import pandas as pd
+import sys
+import os
+
+arr_file = []
+merged_df = None
+domains_df= None
+
+
+def makeurl( url,url_show):
+    return '=HYPERLINK("{}","{}")'.format(url,  url_show)
+
+def merge_df_fun():
+    arr_date_range =[]
+    arr_col_pct=[]
+    
+    global arr_file , merged_df , domains_df,token_add
+    for index, file in enumerate(arr_file):
+        date_range = file.replace(".csv","").split("_")
+        date_range = date_range[-2]+"_"+date_range[-1]
+
+        cur_df =   pd.read_csv(file ,dtype=object)
+        cur_df=cur_df.dropna(subset=['holder_owner'])
+
+        cur_domains_df = cur_df[['holder_owner' , 'domains_owned']]
+        domains_df = pd.concat([domains_df, cur_domains_df  ]).dropna().drop_duplicates(subset=['holder_owner'])
+         
+        cur_df=cur_df[['holder_owner','amount_M']]
+        cur_df =cur_df.astype({
+            "amount_M":float,
+        })
+
+        cur_df.rename(columns={'amount_M': f'AM_{date_range}'}, inplace=True)
+        arr_date_range.append(f'{date_range}')
+        arr_col_pct.append(f'AM_{date_range}')
+        if index==0 :
+            merged_df = cur_df
+            continue
+        merged_df = pd.merge(merged_df, cur_df, on='holder_owner', how='outer')
+  
+    
+    # merged_df=merged_df.fillna(-1)
+    print(merged_df)
+    merged_df = pd.merge(merged_df, domains_df, on='holder_owner', how='left')
+
+    merged_df["gmgn"] = merged_df.apply(lambda ser: makeurl(
+    f"https://gmgn.ai/sol/token/{token_add}?tab=activity&maker={ser['holder_owner']}" , "gmgn" ), axis=1)
+
+    merged_df["defined"] = merged_df.apply(lambda ser: makeurl(
+     f"https://www.defined.fi/sol/{token_add}?maker={ser['holder_owner']}" , "defined" ), axis=1)
+    
+  
+    merged_df.to_excel('001_01_merge_dune_hold_info_from_manydunecsv_to_一个多列的xlsx文档.xlsx' ,index=False)
+
+ 
+ 
+if __name__ == "__main__":
+ 
+    if len(sys.argv)<2:
+        print("args queshao ")
+        sys.exit(1)
+    token_add = sys.argv[1]
+    # arr_file =sys.argv[2:]
+    # print(arr_file)
+    # arr_file = [file for file in arr_file if "dune_holders_xx" in file and file.endswith(".csv")]
+ 
+    arr_file = os.listdir(os.getcwd())
+  
+    arr_file = [file for file in arr_file if "dune_holders_xx" in file and file.endswith(".csv")]
+    
+    arr_file.sort()
+    print("read file: ",arr_file)
+    merge_df_fun()
+ 

BIN
src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/001_01_merge_dune_hold_info_from_manydunecsv_to_一个多列的xlsx文档.xlsx


+ 27 - 0
src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/dune_holders_xx_xx_0317日0655.csv

@@ -0,0 +1,27 @@
+holder_owner,domains_owned,amount_M,pct_supply
+5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1,raydiumpool.sol,219.93,21.99
+B7Zpksf18iYLuKMX4g9SURACkCGRPEtk9KZbGhrFr8ym,,37.69,3.77
+J4rYYPEXHwYMvyNzVwRsTyaSVpHv4SXK6kQNGgvBdvc4,,29.74,2.97
+oVHpCFMvZ1ZPinBeUGNSf93T4A5Ru9pguQ696Bp6uAE,,23.24,2.32
+EZZk361QgZDMx52AmMyc4NjFkuaNrdegwAxrLEbeaR94,,22.57,2.26
+6ruqEocByFM5wUtc2kbA2j2ctG78RtunHmedKjjSrNDw,,22.41,2.24
+9H8wEA9ALybJbRmBxjendamofQJZa4VCW4z4fDo37zA4,,21.56,2.16
+282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,,20.75,2.08
+3gvWGDyDT2Q9xC5hAD4ezg56UEapi5g1anYNU8rG76mH,,20.42,2.04
+7tFoVM37AthibakVAUAKAvBMtLnwPRGQmGhNEYZ2Jjtx,,16.04,1.6
+42LqGvRxTiHNz9tNni71PoTqYyrrmYXLc6oSVpEAMazX,,14.84,1.48
+2ZWG4EFE2dWbFsw5r2J4rcZVBU7HrxtcjbV83SMc2FJ1,,14.73,1.47
+BQBFWthKHfiuvGHjTmu57hwSCXYn3PeJey4rigyaCRxt,,10.82,1.08
+7GpiTzud8oKFMWGXAaAHRmRUt7WBFGS8Sb1Tcjd9ZPU5,,10.25,1.02
+CVcM4qWbAgpwS5SRnm9gdRoNkyF7LocgQee3nG6rUdKW,,10.14,1.01
+9KeLdkWnSJKLXpeNdKnsJX2R4V1BjNpo1md6uPh4ZuCi,,9.31,0.93
+2mPTV3XF81ywJZnpsNS2Lt28mvnCdKvY1DT7FqNsyQ2w,,8.74,0.87
+BqwqBzh6j1jiA4qNLkwk6YL2ZjwGLbKSCuARbmMsaz6p,,8.53,0.85
+7AN8sNmLgXhfi2whnCQ2ULdP4BCp1oFo7D3zmPaZHx93,,8.37,0.84
+9sMmDCA8w1Xx2vqpS4WwZEHpQxqm2bytXM8K3GPmEkt4,,7.6,0.76
+8AZ1zezFUym8rfN4WVSVf7n2WV4j1XzNqQABDqLPQiMt,,7.35,0.74
+8iLfJvRjzWdoxwn1PLCHCzGHfcLfNH8Wf6faQLsBUHPg,,6.85,0.69
+2AAYRsTauytE6zEzW7xCcmo2ALamNE6pKMTXf4L6hWWn,,6.74,0.67
+DTdHa4auX68jFtXv9wkzMYCahg295AnRuwvm6moW6meZ,,6.38,0.64
+3tQi2NfLkAUndq7Vy8uXQeN8NBrTdEVmQBnXEXYaxsdR,,6.11,0.61
+HU8vahPa5UiHUv4S7xBYonY1jG7Cs5han1wac3RCqKPR,,6.01,0.6

+ 27 - 0
src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/dune_holders_xx_xx_0317日0745.csv

@@ -0,0 +1,27 @@
+holder_owner,domains_owned,amount_M,pct_supply
+5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1,raydiumpool.sol,159.36,15.94
+B7Zpksf18iYLuKMX4g9SURACkCGRPEtk9KZbGhrFr8ym,,37.69,3.77
+6ruqEocByFM5wUtc2kbA2j2ctG78RtunHmedKjjSrNDw,,22.41,2.24
+3gvWGDyDT2Q9xC5hAD4ezg56UEapi5g1anYNU8rG76mH,,20.42,2.04
+215nhcAHjQQGgwpQSJQ7zR26etbjjtVdW74NLzwEgQjP,globalist.sol,18.63,1.86
+oVHpCFMvZ1ZPinBeUGNSf93T4A5Ru9pguQ696Bp6uAE,,18.07,1.81
+282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,,17.63,1.76
+42LqGvRxTiHNz9tNni71PoTqYyrrmYXLc6oSVpEAMazX,,16.36,1.64
+5dd3zjBQQvQqtmWF67nR6XaRKe79cYu4fP6LFXZ1YRR9,,11.98,1.2
+HLPKfYcvsciAe6ZFSgQML2onAxeU6VorfaQuqxKZXEK7,,11.52,1.15
+6YQuF8AScxiACGKCUNBPp9dEroiCvrUZY29yeqi2GyEZ,mackle.sol,11.36,1.14
+6f7SLxeLrQNnvZWG3xbGWRkcvfrNpdzSWRG9V1cP8MVL,,11.06,1.11
+BKAZ5s1SgVL8JABm2hEAvpj6fiy5UtYU3gMHju98siKx,,11.01,1.1
+zLbjkaciiZDwiVRF9Nokx3LSDLv5vqotYYbLY89r9V3,,10.96,1.1
+EZZk361QgZDMx52AmMyc4NjFkuaNrdegwAxrLEbeaR94,,10.93,1.09
+neBA9zw89tstioASpgvCHceuo4WUa5n1Nxb27wPYPRS,,10.93,1.09
+FtAvgNEaEFsix5JGFRn3TNFwjMNkFtA5Q3zRF27eFTvz,,10.11,1.01
+3wtdAf1cGCTxJydfSbJnpXaLzwA2yqhVdRzxS99F2ExG,,8.35,0.84
+7TMh3KC8pMHezYnfSgGNe3xxh7rg6TeZEoxVSJQmyiny,,8.03,0.8
+979YWPtca2uhAhUAZxhsqh8KAVGwjnYBqmp8nnvzZ1yP,,7.97,0.8
+6t6dBQy6YSQZ2jzJoUAtVvcL5XoR1meJJ8rnjpoEyWqi,,7.67,0.77
+3WfoaqgxRSHBLq9TqvUVvNMUvhGr96fT4S5RKBgwLpwX,,7.57,0.76
+2mPTV3XF81ywJZnpsNS2Lt28mvnCdKvY1DT7FqNsyQ2w,,6.26,0.63
+3tQi2NfLkAUndq7Vy8uXQeN8NBrTdEVmQBnXEXYaxsdR,,6.11,0.61
+7zaNemb3JZqjV1dYtnHg8yym6S3LWkh2RUv1pF5679t7,,5.95,0.6
+EiA7B1jYnjGkFrFzNZwfuaeDc8fGFd27Fvu3oPevznon,,5.84,0.58

+ 27 - 0
src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/dune_holders_xx_xx_0317日1000.csv

@@ -0,0 +1,27 @@
+holder_owner,domains_owned,amount_M,pct_supply
+5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1,raydiumpool.sol,160.35,16.04
+,,38.2,3.82
+udsUJDu2JhkWs59dFTCCN7fActkDVR4JYpSnx6ZqM5E,,22.46,2.25
+282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,,20.43,2.04
+BKAZ5s1SgVL8JABm2hEAvpj6fiy5UtYU3gMHju98siKx,,18.01,1.8
+p8NZZhsHSzRnbMjkc9DTEVD3AoHTdQfa3eHCZ2LNDoM,,15.23,1.52
+3wtdAf1cGCTxJydfSbJnpXaLzwA2yqhVdRzxS99F2ExG,,14.7,1.47
+5obRrc1VG9szJ1aSEFUB3WuTxbCcH76VwyTwfD8rV54n,,12.59,1.26
+HLPKfYcvsciAe6ZFSgQML2onAxeU6VorfaQuqxKZXEK7,,11.52,1.15
+AYMCGyfKRV2wgvVHLSAe76yfxdRpaYoxwFDRp1s5Gh8p,,11.42,1.14
+neBA9zw89tstioASpgvCHceuo4WUa5n1Nxb27wPYPRS,,11,1.1
+4VxktrNN2rgHdRFxwGS6QctuPfdPASXFCi5jwFv4R8MH,,10.98,1.1
+FtAvgNEaEFsix5JGFRn3TNFwjMNkFtA5Q3zRF27eFTvz,,10.11,1.01
+7jy6npggVCyEzrcMEFgfyG7nxDDTvwYRcAiDtk9wjJFK,,10.1,1.01
+H6KiqN3wwirFumem4ZqxbF3hhHNTjpyps3q7TTLX3n33,,10.07,1.01
+42LqGvRxTiHNz9tNni71PoTqYyrrmYXLc6oSVpEAMazX,,10,1
+5o3an4oehoptQLQY7fkXed9xiXWvWLuanaCkDEFHWjZP,,9.71,0.97
+7akHhN68BAfs5fjC1XrvCgRpv3T4PLMkMuUgHKHEG81t,,9.35,0.94
+Aw8GRDCTLLTc2fL2MWbuvsPogxFrUUrpopXBALPnSZmg,,9.29,0.93
+6aGGGE1qjSnJ3HobFzYeEQ6fNtQ5dbQFNUzi3sEJytTD,,9.16,0.92
+2R588jyuKaVNMhRnM8eUeczX47kgP2wZVBEX2ECtx3XH,,8.27,0.83
+3WfoaqgxRSHBLq9TqvUVvNMUvhGr96fT4S5RKBgwLpwX,,7.57,0.76
+2FAkQWrmzKaC1KZr4JWfJNixZZBc5kKH2joUG9zkmZQq,,7.41,0.74
+3gvWGDyDT2Q9xC5hAD4ezg56UEapi5g1anYNU8rG76mH,,6.92,0.69
+6Ai76YzDZRbPnAgxvE798MdpQXSm21m3EGmkQKUkxpQC,,6.71,0.67
+Dys4Remm9bg1Seu95qrYPqqrQx3w44fGGiDMx5DrK8A7,,6.29,0.63

+ 27 - 0
src/library/analysis_token/2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump/不确定dune_holders_xx_xx_0317日0620.csv

@@ -0,0 +1,27 @@
+holder_owner,domains_owned,amount_M,pct_supply
+DRmX6MzLEB5UbuCHujn7askeohc1TCbsJf7wnn8HUuWy,,43.58,4.36
+GSAikdWfDHgY8Zsz1DnwsQNiiAwoowHTFmSv2sEZNJGS,,30.9,3.09
+9sYzSv2VN3MsBEFiR2aesN4EZGLGwM2tbFLeCM2NHBNf,,27.86,2.79
+GHqWJ3KxvTALTgPTssXwpvqMjr9SeDDfbZQxabKhYcmx,,26.81,2.68
+CVcM4qWbAgpwS5SRnm9gdRoNkyF7LocgQee3nG6rUdKW,,25.23,2.52
+HbuRPHj2rssVeBe4fXFLQaqZGEvsvwdfGDNjeAejVPu9,,24.15,2.42
+9SySwmGj8ZyzxcoeZ5EUJdQ8gjvdfAnfP8RDHrAKD7AN,,20.59,2.06
+BqwqBzh6j1jiA4qNLkwk6YL2ZjwGLbKSCuARbmMsaz6p,,20.22,2.02
+9Q4CVx77eJKQkVahxSph6H4dWSvh1PziEa2VGzVEmJjR,,19.36,1.94
+2mPTV3XF81ywJZnpsNS2Lt28mvnCdKvY1DT7FqNsyQ2w,,18.3,1.83
+2JMXseMZh2DhUwYHj9psoZ9YzQXXzHUmfgESdPKXvcQQ,,14.7,1.47
+EsBxbxj86ZiqYq9EtumvuiJNybNTeS84iAv6A35FB6fx,,11.55,1.16
+Dd47tR3SCkCD8B2gV2eayPQuGXckuvA9EV9Aetht7KRQ,,11,1.1
+3gvWGDyDT2Q9xC5hAD4ezg56UEapi5g1anYNU8rG76mH,,10.45,1.05
+965XB2QNTdpxrGfiXKhdjsxRLDUVqf3Kc7vetmyqe9zp,,9.76,0.98
+rkewuyTScR3cH9kZFX9yxSHxUoj77pQwGf84e6VNvcc,,9.22,0.92
+FgatT4UdXGwdNP557zbDFscc8D452F4ezUfG6DQXDF9v,,9.14,0.91
+HPczfmGKV7Dbqb5yiQTxkEHTm2ugAJZ8pKmzJeNZaGRX,,8.25,0.83
+2KngczUUyKypmkPe2vbr5jBtAxGFfJwVqE6X6vLHxGvs,,8.21,0.82
+3Vt9hcu3HCqZajqqNPjy1bVmdi5C6f9q73QfgzKZeV7i,,8.07,0.81
+Bsafj6bHwmnPfBQZG2vTf6M5wgoW2Kg5AsNhW54twKA2,,8.04,0.8
+7P4YNbBApaD1aijnNsbqZhFNG5uBJ67z9mxGEXxyH4bg,,7.89,0.79
+GGfXyUVdE8sQe7iAR9s29e9DVoWZ6oXXK1rJRrSisD7f,,7.1,0.71
+8LeAYA5gie2fYZfaUUdY246q5tav99EpDE9LDynYNSz9,,6.69,0.67
+ByQUUijePim3b7nj5TC5pBNf7gM2x3jphrQXLBgTFfCj,,6.53,0.65
+FTLp8RPENCoR5MMQqgJ4yG6wBEhBZShw2UiM6egRnNbC,,6.39,0.64

BIN
src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/002_dune_buy_sametoken.xlsx


BIN
src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/003_dune_sametoken_time_diff.xlsx


+ 55 - 0
src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/003_handle_dune_buy_sametoken_time_diff.py

@@ -0,0 +1,55 @@
+
+# 获取每一个时间段的top20 持仓,汇总到一个excel表格中
+import pandas as pd
+import sys
+import os
+import time
+
+arr_file = []
+merged_df = None
+def makeurl( url,url_show):
+    return '=HYPERLINK("{}","{}")'.format(url,  url_show)
+def handle_df_fun():
+    
+    global arr_file , merged_df 
+    for index, file in enumerate(arr_file):
+        cur_df =   pd.read_csv(file )
+    
+        if index==0 :
+            merged_df = cur_df
+            continue
+    merged_df["early_trader_number"] =   (merged_df['buy_create_time_diff'] < 45).groupby(merged_df['token_address']).transform('sum')
+    
+    
+
+ 
+    
+    merged_df["gmgn"] = merged_df.apply(lambda ser: makeurl(
+    f"https://gmgn.ai/sol/token/{ser['token_address']}?tab=activity&maker={ser['trader_id']}" , "gmgn" ), axis=1)
+    merged_df["defined"] = merged_df.apply(lambda ser: makeurl(
+     f"https://www.defined.fi/sol/{ser['token_address']}?maker={ser['trader_id']}" , "defined" ), axis=1)
+    
+    merged_df["beizhu"] = None
+    merged_df =  merged_df.sort_values(by=['early_trader_number','token_address'], ascending=[False, True])
+ 
+ 
+ 
+
+    merged_df.to_excel(f'003_dune_sametoken_time_diff_{int(time.time())}.xlsx', index=False)
+    return
+ 
+    
+
+if __name__ == "__main__":
+ 
+ 
+    arr_file = os.listdir(os.getcwd())
+  
+    arr_file = [file for file in arr_file if "dune_sametoken_time_diff" in file and file.endswith(".csv")]
+ 
+    arr_file.sort()
+    print("read file: ",arr_file)
+    
+    handle_df_fun()
+ 
+    

+ 131 - 0
src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/dune_sametoken_time_diff.csv

@@ -0,0 +1,131 @@
+token_address,trader_id,buy_create_time_diff,create_time,trader_number
+BzBHziaQZqSBKd8DXqrNgsDNd75i7CB5hH1rsQRxpump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,36.233333333333334,2025-03-14 18:56,6
+BzBHziaQZqSBKd8DXqrNgsDNd75i7CB5hH1rsQRxpump,UKCC5vtp2U5281ZSaSqafDbb9aFcrj84BKsf6p5Aqxm,1150.6666666666667,2025-03-14 18:56,6
+BzBHziaQZqSBKd8DXqrNgsDNd75i7CB5hH1rsQRxpump,2oViQCbm1JWWwvvKeq2zsAns1cT48WDTk77aS7ZAPnjJ,25.35,2025-03-14 18:56,6
+BzBHziaQZqSBKd8DXqrNgsDNd75i7CB5hH1rsQRxpump,2swb9pJ9Ak5TLBsfsBcr5QVCStM5vNZAcyhRY9uZTSi5,28.25,2025-03-14 18:56,6
+BzBHziaQZqSBKd8DXqrNgsDNd75i7CB5hH1rsQRxpump,5FSt9LxycNWfdXFmhuDbYonoGcnBJDjZYvqC3ZuA9RGc,1445.15,2025-03-14 18:56,6
+BzBHziaQZqSBKd8DXqrNgsDNd75i7CB5hH1rsQRxpump,5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS,28.733333333333334,2025-03-14 18:56,6
+5CuCQwjejaAyc7Z1HfmzJHfRrrV8HPfPfgaazuzpump,J3ctoNuCEGXD63rf84GfgkXYczt7F6uycpVczzK57MfH,140.18333333333334,2025-03-17 19:12,7
+5CuCQwjejaAyc7Z1HfmzJHfRrrV8HPfPfgaazuzpump,5sEVaCVRRyfWPhw54c4z3h59ZvJ9tL5xK2tYfT4gQnDZ,145.75,2025-03-17 19:12,7
+5CuCQwjejaAyc7Z1HfmzJHfRrrV8HPfPfgaazuzpump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,31.233333333333334,2025-03-17 19:12,7
+5CuCQwjejaAyc7Z1HfmzJHfRrrV8HPfPfgaazuzpump,A2U5owsnFK2jzgBguZCDqXsPzra7ufpYG5N6CFCeQrk6,381.3333333333333,2025-03-17 19:12,7
+5CuCQwjejaAyc7Z1HfmzJHfRrrV8HPfPfgaazuzpump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,29.4,2025-03-17 19:12,7
+5CuCQwjejaAyc7Z1HfmzJHfRrrV8HPfPfgaazuzpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,23.616666666666667,2025-03-17 19:12,7
+5CuCQwjejaAyc7Z1HfmzJHfRrrV8HPfPfgaazuzpump,5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS,99.5,2025-03-17 19:12,7
+J8rZcqDBXWCtmz9C4qhdfiRA5ZQQjasa5aeghbnxpump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,83.83333333333333,2025-03-06 20:45,6
+J8rZcqDBXWCtmz9C4qhdfiRA5ZQQjasa5aeghbnxpump,A2U5owsnFK2jzgBguZCDqXsPzra7ufpYG5N6CFCeQrk6,13397.183333333332,2025-03-06 20:45,6
+J8rZcqDBXWCtmz9C4qhdfiRA5ZQQjasa5aeghbnxpump,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,33.06666666666667,2025-03-06 20:45,6
+J8rZcqDBXWCtmz9C4qhdfiRA5ZQQjasa5aeghbnxpump,ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd,31.383333333333333,2025-03-06 20:45,6
+J8rZcqDBXWCtmz9C4qhdfiRA5ZQQjasa5aeghbnxpump,2swb9pJ9Ak5TLBsfsBcr5QVCStM5vNZAcyhRY9uZTSi5,32.25,2025-03-06 20:45,6
+J8rZcqDBXWCtmz9C4qhdfiRA5ZQQjasa5aeghbnxpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,33.06666666666667,2025-03-06 20:45,6
+Ey4tXRVTiLtjZJE33T96KYxJ8TDdVyV7uDn6FuDCpump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,38.88333333333333,2025-03-13 13:48,5
+Ey4tXRVTiLtjZJE33T96KYxJ8TDdVyV7uDn6FuDCpump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,38.86666666666667,2025-03-13 13:48,5
+Ey4tXRVTiLtjZJE33T96KYxJ8TDdVyV7uDn6FuDCpump,CMGdz9VBDDmc5uoZFxux4Jv1gYxoUW1Xdu8NxfijCTxJ,3132.366666666667,2025-03-13 13:48,5
+Ey4tXRVTiLtjZJE33T96KYxJ8TDdVyV7uDn6FuDCpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,509.01666666666665,2025-03-13 13:48,5
+Ey4tXRVTiLtjZJE33T96KYxJ8TDdVyV7uDn6FuDCpump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,42.516666666666666,2025-03-13 13:48,5
+4QYaccriCgnrb3rxpibqv5vj7Wba669YBqvNEVeJpump,2swb9pJ9Ak5TLBsfsBcr5QVCStM5vNZAcyhRY9uZTSi5,165.1,2025-03-12 15:42,5
+4QYaccriCgnrb3rxpibqv5vj7Wba669YBqvNEVeJpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,274.76666666666665,2025-03-12 15:42,5
+4QYaccriCgnrb3rxpibqv5vj7Wba669YBqvNEVeJpump,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,274.76666666666665,2025-03-12 15:42,5
+4QYaccriCgnrb3rxpibqv5vj7Wba669YBqvNEVeJpump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,68.21666666666667,2025-03-12 15:42,5
+4QYaccriCgnrb3rxpibqv5vj7Wba669YBqvNEVeJpump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,65.2,2025-03-12 15:42,5
+2WLd1HqbPutTh1gowWFzkgGG9PgzVcnvqUs4iNXopump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,2629.383333333333,2025-03-04 04:30,6
+2WLd1HqbPutTh1gowWFzkgGG9PgzVcnvqUs4iNXopump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,8237.5,2025-03-04 04:30,6
+2WLd1HqbPutTh1gowWFzkgGG9PgzVcnvqUs4iNXopump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,18061.25,2025-03-04 04:30,6
+2WLd1HqbPutTh1gowWFzkgGG9PgzVcnvqUs4iNXopump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,14314.116666666667,2025-03-04 04:30,6
+2WLd1HqbPutTh1gowWFzkgGG9PgzVcnvqUs4iNXopump,CMGdz9VBDDmc5uoZFxux4Jv1gYxoUW1Xdu8NxfijCTxJ,1203.95,2025-03-04 04:30,6
+2WLd1HqbPutTh1gowWFzkgGG9PgzVcnvqUs4iNXopump,SGd7pJkt1heW4pTWLBHVtMoqaN1Anvvbb5wp5Juktrb,791.35,2025-03-04 04:30,6
+B92orCCYZ3J5kBzPDNRP9Sj1oC9cx2X289Myateopump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,9.183333333333334,2025-03-13 17:26,5
+B92orCCYZ3J5kBzPDNRP9Sj1oC9cx2X289Myateopump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,11.616666666666667,2025-03-13 17:26,5
+B92orCCYZ3J5kBzPDNRP9Sj1oC9cx2X289Myateopump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,3.75,2025-03-13 17:26,5
+B92orCCYZ3J5kBzPDNRP9Sj1oC9cx2X289Myateopump,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,3.75,2025-03-13 17:26,5
+B92orCCYZ3J5kBzPDNRP9Sj1oC9cx2X289Myateopump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,9.166666666666666,2025-03-13 17:26,5
+8eq6uKMYtJ2npJC2YGj2LCZ5xKZFX3TuB2LTXB9Epump,5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS,35.6,2025-03-14 23:18,5
+8eq6uKMYtJ2npJC2YGj2LCZ5xKZFX3TuB2LTXB9Epump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,91.36666666666666,2025-03-14 23:18,5
+8eq6uKMYtJ2npJC2YGj2LCZ5xKZFX3TuB2LTXB9Epump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,4050.15,2025-03-14 23:18,5
+8eq6uKMYtJ2npJC2YGj2LCZ5xKZFX3TuB2LTXB9Epump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,88.73333333333333,2025-03-14 23:18,5
+8eq6uKMYtJ2npJC2YGj2LCZ5xKZFX3TuB2LTXB9Epump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,88.73333333333333,2025-03-14 23:18,5
+Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,129.36666666666667,2025-03-06 03:17,8
+Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump,ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd,6.233333333333333,2025-03-06 03:17,8
+Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump,2oViQCbm1JWWwvvKeq2zsAns1cT48WDTk77aS7ZAPnjJ,12604.033333333333,2025-03-06 03:17,8
+Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,979.8166666666667,2025-03-06 03:17,8
+Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump,SGd7pJkt1heW4pTWLBHVtMoqaN1Anvvbb5wp5Juktrb,17.716666666666665,2025-03-06 03:17,8
+Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,979.8166666666667,2025-03-06 03:17,8
+Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump,CMGdz9VBDDmc5uoZFxux4Jv1gYxoUW1Xdu8NxfijCTxJ,171.83333333333334,2025-03-06 03:17,8
+Bx8NMNm84Pw6s7N688cWvDr8CDudgjz329vyqkoGpump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,6.383333333333334,2025-03-06 03:17,8
+8TcALAM4U7MMnuRiqMBf8pEsdnt94uknpg2jepEgpump,81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq,274.68333333333334,2025-03-09 12:48,5
+8TcALAM4U7MMnuRiqMBf8pEsdnt94uknpg2jepEgpump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,590.9666666666667,2025-03-09 12:48,5
+8TcALAM4U7MMnuRiqMBf8pEsdnt94uknpg2jepEgpump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,591.0833333333334,2025-03-09 12:48,5
+8TcALAM4U7MMnuRiqMBf8pEsdnt94uknpg2jepEgpump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,590.9833333333333,2025-03-09 12:48,5
+8TcALAM4U7MMnuRiqMBf8pEsdnt94uknpg2jepEgpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,3726.8333333333335,2025-03-09 12:48,5
+HxQVaDCJT5HnRMSE8dFv8sDGdLQ5RSASrccYdBaDpump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,178.41666666666666,2025-03-09 21:07,5
+HxQVaDCJT5HnRMSE8dFv8sDGdLQ5RSASrccYdBaDpump,2swb9pJ9Ak5TLBsfsBcr5QVCStM5vNZAcyhRY9uZTSi5,199.11666666666667,2025-03-09 21:07,5
+HxQVaDCJT5HnRMSE8dFv8sDGdLQ5RSASrccYdBaDpump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,184.9,2025-03-09 21:07,5
+HxQVaDCJT5HnRMSE8dFv8sDGdLQ5RSASrccYdBaDpump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,116.9,2025-03-09 21:07,5
+HxQVaDCJT5HnRMSE8dFv8sDGdLQ5RSASrccYdBaDpump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,115.71666666666667,2025-03-09 21:07,5
+AhJ2u3o7CK4sPk9WQ2rr8FwG1xSTBMMqkjXZbeqapump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,97.26666666666667,2025-03-13 21:20,5
+AhJ2u3o7CK4sPk9WQ2rr8FwG1xSTBMMqkjXZbeqapump,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,25.05,2025-03-13 21:20,5
+AhJ2u3o7CK4sPk9WQ2rr8FwG1xSTBMMqkjXZbeqapump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,5.083333333333333,2025-03-13 21:20,5
+AhJ2u3o7CK4sPk9WQ2rr8FwG1xSTBMMqkjXZbeqapump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,25.05,2025-03-13 21:20,5
+AhJ2u3o7CK4sPk9WQ2rr8FwG1xSTBMMqkjXZbeqapump,5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS,1092.2666666666667,2025-03-13 21:20,5
+G8VxZiVvkpbjcvcxMm1btLHjJrdfz9CdqXy44tM9pump,81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq,131.73333333333332,2025-02-28 16:51,5
+G8VxZiVvkpbjcvcxMm1btLHjJrdfz9CdqXy44tM9pump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,9.766666666666667,2025-02-28 16:51,5
+G8VxZiVvkpbjcvcxMm1btLHjJrdfz9CdqXy44tM9pump,ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd,203.91666666666666,2025-02-28 16:51,5
+G8VxZiVvkpbjcvcxMm1btLHjJrdfz9CdqXy44tM9pump,2swb9pJ9Ak5TLBsfsBcr5QVCStM5vNZAcyhRY9uZTSi5,222.81666666666666,2025-02-28 16:51,5
+G8VxZiVvkpbjcvcxMm1btLHjJrdfz9CdqXy44tM9pump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,226.63333333333333,2025-02-28 16:51,5
+CKCwS3gq4DHpvAD5FYCZq6qsZjaTv9mp67kYh4Vbpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,688.0666666666667,2025-03-16 07:46,5
+CKCwS3gq4DHpvAD5FYCZq6qsZjaTv9mp67kYh4Vbpump,2oViQCbm1JWWwvvKeq2zsAns1cT48WDTk77aS7ZAPnjJ,682.8333333333334,2025-03-16 07:46,5
+CKCwS3gq4DHpvAD5FYCZq6qsZjaTv9mp67kYh4Vbpump,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,688.05,2025-03-16 07:46,5
+CKCwS3gq4DHpvAD5FYCZq6qsZjaTv9mp67kYh4Vbpump,81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq,683.7666666666667,2025-03-16 07:46,5
+CKCwS3gq4DHpvAD5FYCZq6qsZjaTv9mp67kYh4Vbpump,ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd,835.4666666666667,2025-03-16 07:46,5
+hV7MQkCpjvuTTnPJXPhPXzvmtMxk8A8ct1KPiRMpump,A2U5owsnFK2jzgBguZCDqXsPzra7ufpYG5N6CFCeQrk6,134,2025-03-14 18:40,7
+hV7MQkCpjvuTTnPJXPhPXzvmtMxk8A8ct1KPiRMpump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,16.666666666666668,2025-03-14 18:40,7
+hV7MQkCpjvuTTnPJXPhPXzvmtMxk8A8ct1KPiRMpump,5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS,36.93333333333333,2025-03-14 18:40,7
+hV7MQkCpjvuTTnPJXPhPXzvmtMxk8A8ct1KPiRMpump,2oViQCbm1JWWwvvKeq2zsAns1cT48WDTk77aS7ZAPnjJ,21.683333333333334,2025-03-14 18:40,7
+hV7MQkCpjvuTTnPJXPhPXzvmtMxk8A8ct1KPiRMpump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,16.666666666666668,2025-03-14 18:40,7
+hV7MQkCpjvuTTnPJXPhPXzvmtMxk8A8ct1KPiRMpump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,17.466666666666665,2025-03-14 18:40,7
+hV7MQkCpjvuTTnPJXPhPXzvmtMxk8A8ct1KPiRMpump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,37,2025-03-14 18:40,7
+9LTnCiXxqZm29PpeQpzAAHadgWiPBkxESJqUKPSvpump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,1336.6666666666667,2025-03-12 00:35,5
+9LTnCiXxqZm29PpeQpzAAHadgWiPBkxESJqUKPSvpump,81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq,28.566666666666666,2025-03-12 00:35,5
+9LTnCiXxqZm29PpeQpzAAHadgWiPBkxESJqUKPSvpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,9.333333333333334,2025-03-12 00:35,5
+9LTnCiXxqZm29PpeQpzAAHadgWiPBkxESJqUKPSvpump,5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS,3276.35,2025-03-12 00:35,5
+9LTnCiXxqZm29PpeQpzAAHadgWiPBkxESJqUKPSvpump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,20.6,2025-03-12 00:35,5
+9zeStqRxC8TfJE71hbTkQV4xBSHc5LFnTUa54K9sGE1i,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,470888.9166666667,2024-04-13 21:59,5
+9zeStqRxC8TfJE71hbTkQV4xBSHc5LFnTUa54K9sGE1i,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,470918.06666666665,2024-04-13 21:59,5
+9zeStqRxC8TfJE71hbTkQV4xBSHc5LFnTUa54K9sGE1i,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,470866.0333333333,2024-04-13 21:59,5
+9zeStqRxC8TfJE71hbTkQV4xBSHc5LFnTUa54K9sGE1i,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,470866.01666666666,2024-04-13 21:59,5
+9zeStqRxC8TfJE71hbTkQV4xBSHc5LFnTUa54K9sGE1i,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,470918.06666666665,2024-04-13 21:59,5
+6zipf14FCZusfwF8FeyUP851XytF5T55oLdgARE5qyKK,SGd7pJkt1heW4pTWLBHVtMoqaN1Anvvbb5wp5Juktrb,,,6
+6zipf14FCZusfwF8FeyUP851XytF5T55oLdgARE5qyKK,81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq,,,6
+6zipf14FCZusfwF8FeyUP851XytF5T55oLdgARE5qyKK,ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd,,,6
+6zipf14FCZusfwF8FeyUP851XytF5T55oLdgARE5qyKK,5sEVaCVRRyfWPhw54c4z3h59ZvJ9tL5xK2tYfT4gQnDZ,,,6
+6zipf14FCZusfwF8FeyUP851XytF5T55oLdgARE5qyKK,A2U5owsnFK2jzgBguZCDqXsPzra7ufpYG5N6CFCeQrk6,,,6
+6zipf14FCZusfwF8FeyUP851XytF5T55oLdgARE5qyKK,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,,,6
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,149020.95,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,SGd7pJkt1heW4pTWLBHVtMoqaN1Anvvbb5wp5Juktrb,149051,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,9wYuJBuoBiNDxk97ZmCqdaBjB3gZ1iFnEBU2Jme3phpV,149676.78333333333,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,5sEVaCVRRyfWPhw54c4z3h59ZvJ9tL5xK2tYfT4gQnDZ,151074.36666666667,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,5RANC5iQzzeLFcr1D42Pih4ksUMfa7KXMoCkzoRhujuP,151341.25,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,HUzZ1MrEUXrdPJoAnn5B8uTcshwyyXxFW1EqY2dvcVhe,149635.6,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,2oViQCbm1JWWwvvKeq2zsAns1cT48WDTk77aS7ZAPnjJ,148976.61666666667,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq,149010.15,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,8jzB2HEK322ntFCfzUwajUt9hjYA25L9F8LangTcPfMY,150724.68333333332,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,DZm7P5hZBLFKzFqy4JzQaxUnWRkrr3AwDMa2kCrGr4Nc,149635.6,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,2swb9pJ9Ak5TLBsfsBcr5QVCStM5vNZAcyhRY9uZTSi5,148976.43333333332,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,H9kHjTaJqVrrSuZGwJWgQnjyhVmGANpqsA6eoqbbZrTk,149020.95,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd,149043.83333333334,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,CMGdz9VBDDmc5uoZFxux4Jv1gYxoUW1Xdu8NxfijCTxJ,150403.08333333334,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,A2U5owsnFK2jzgBguZCDqXsPzra7ufpYG5N6CFCeQrk6,150824.06666666668,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,J3ctoNuCEGXD63rf84GfgkXYczt7F6uycpVczzK57MfH,150424.56666666668,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,EW5o2Nr2oHdr8YbWfdAFkcpxT2bqvi2jdDpaTepvoQNa,148974.2,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,CJT24gYwv6Sadbj6jUb6ESnm6jYYZdBEzZoeH84C35tq,149011.25,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,UKCC5vtp2U5281ZSaSqafDbb9aFcrj84BKsf6p5Aqxm,148977.15,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,148976.93333333332,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,ALNngQwBnooVP41YWGM6yJZSLHTQ3eVZMaAKc9yigWTj,149635.71666666667,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS,148975.9,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,5FSt9LxycNWfdXFmhuDbYonoGcnBJDjZYvqC3ZuA9RGc,148979.78333333333,2024-12-01 06:40,24
+3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump,EWpftEEZJ7AJyGJprctqc131qQtpjWkoJahM1D9xdTiH,149569.26666666666,2024-12-01 06:40,24
+BhwwEnvzsEdncGWdDZv2airsw1HZVbRBBGfYhgZfpump,5BkT4TNnJE7Zq2s3DmGExGSjL7JpJBnxa6atsjARbkxS,17528.566666666666,2025-03-04 01:20,5
+BhwwEnvzsEdncGWdDZv2airsw1HZVbRBBGfYhgZfpump,6frSrTT9aarJuBWKE36uBQJDh3VcSHWeP7Hdhar9ap7g,5528.566666666667,2025-03-04 01:20,5
+BhwwEnvzsEdncGWdDZv2airsw1HZVbRBBGfYhgZfpump,ArHmZWQxH3j29X7nw6xzeFnLrYdywnEKz3oE2zpwXHtd,60.38333333333333,2025-03-04 01:20,5
+BhwwEnvzsEdncGWdDZv2airsw1HZVbRBBGfYhgZfpump,81XZEmB4eYXqdXktnZRVDaiyFbp6hATgygjK98QSbtXq,15252.45,2025-03-04 01:20,5
+BhwwEnvzsEdncGWdDZv2airsw1HZVbRBBGfYhgZfpump,5ENKzVezTxEYtZzF1W4mM1s3LjU6b2oBw8af2827ULKb,5419.4,2025-03-04 01:20,5

+ 70 - 0
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/001_01_merge_dune_hold_info_from_manydunecsv_to_一个多列的xlsx文档.py

@@ -0,0 +1,70 @@
+
+# 将special add 在不同时间持仓的csv合并为一个excel
+import pandas as pd
+import sys
+
+
+arr_file = []
+merged_df = None
+domains_df= None
+
+
+def makeurl( url,url_show):
+    return '=HYPERLINK("{}","{}")'.format(url,  url_show)
+
+def merge_df_fun():
+    arr_date_range =[]
+    arr_col_pct=[]
+    
+    global arr_file , merged_df , domains_df,token_add
+    for index, file in enumerate(arr_file):
+        date_range = file.replace(".csv","").split("_")
+        date_range = date_range[-2]+"_"+date_range[-1]
+
+        cur_df =   pd.read_csv(file ,dtype=object)
+        cur_df=cur_df.dropna(subset=['holder_owner'])
+
+        cur_domains_df = cur_df[['holder_owner' , 'domains_owned']]
+        domains_df = pd.concat([domains_df, cur_domains_df  ]).dropna().drop_duplicates(subset=['holder_owner'])
+         
+        cur_df=cur_df[['holder_owner','amount_M']]
+        cur_df =cur_df.astype({
+            "amount_M":float,
+        })
+
+        cur_df.rename(columns={'amount_M': f'AM_{date_range}'}, inplace=True)
+        arr_date_range.append(f'{date_range}')
+        arr_col_pct.append(f'AM_{date_range}')
+        if index==0 :
+            merged_df = cur_df
+            continue
+        merged_df = pd.merge(merged_df, cur_df, on='holder_owner', how='outer')
+  
+    
+    # merged_df=merged_df.fillna(-1)
+    merged_df = pd.merge(merged_df, domains_df, on='holder_owner', how='left')
+
+    merged_df["gmgn"] = merged_df.apply(lambda ser: makeurl(
+    f"https://gmgn.ai/sol/token/{token_add}?tab=activity&maker={ser['holder_owner']}" , "gmgn" ), axis=1)
+
+    merged_df["defined"] = merged_df.apply(lambda ser: makeurl(
+     f"https://www.defined.fi/sol/{token_add}?maker={ser['holder_owner']}" , "defined" ), axis=1)
+    
+  
+    merged_df.to_excel('001_01_merge_dune_hold_info_from_manydunecsv_to_一个多列的xlsx文档.xlsx' ,index=False)
+
+ 
+ 
+if __name__ == "__main__":
+ 
+    if len(sys.argv)<3:
+        print("args queshao ")
+        sys.exit(1)
+    token_add = sys.argv[1]
+    arr_file =sys.argv[2:]
+    arr_file = [file for file in arr_file if "dune_holders_xx" in file and file.endswith(".csv")]
+ 
+    arr_file.sort()
+    print("read file: ",arr_file)
+    merge_df_fun()
+ 

+ 77 - 0
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/001_merge_top20_holders_add.py

@@ -0,0 +1,77 @@
+
+# 获取每一个时间段的top20 持仓,汇总到一个excel表格中
+import pandas as pd
+import sys
+import os
+ 
+
+arr_file = []
+merged_df = None
+
+def map_exclude_df(df1,ex_df):
+  
+    
+    ex_df.rename(columns={'ex_add': 'holder_owner', 'info': 'domains_owned'}, inplace=True)
+
+    # 使用merge创建一个临时DataFrame,只包含匹配的行
+    temp_df = df1[['holder_owner']].merge(ex_df, on='holder_owner', how='left')
+    
+    # 更新df1的'b1'列
+    df1.set_index('holder_owner', inplace=True)
+    temp_df.set_index('holder_owner', inplace=True)
+    df1.update(temp_df)
+
+    # 重置索引
+    df1.reset_index(inplace=True)
+
+    return df1
+
+def merge_df_fun():
+ 
+    
+    global arr_file , merged_df , domains_df,token_add
+    for index, file in enumerate(arr_file):
+               
+        cur_df =   pd.read_csv(file ,dtype=object)
+        cur_df=cur_df.dropna(subset=['holder_owner'])
+
+        cur_df =cur_df.astype({
+            "amount_M":float,
+        })
+
+
+        cur_df=cur_df.sort_values(by=['amount_M'],ascending = False)
+        cur_df =cur_df.head(22)
+        cur_df=cur_df[['holder_owner','domains_owned']]
+
+
+        if index==0 :
+            merged_df = cur_df
+            continue
+        merged_df = pd.concat([merged_df, cur_df])
+  
+    
+    merged_df =merged_df.drop_duplicates(subset=['holder_owner'])
+
+    ex_df = pd.read_csv('exclude_add.csv',dtype=object)
+    merged_df=map_exclude_df(merged_df ,ex_df)
+
+    
+    merged_df.to_excel('001_top20_holders.xlsx', index=False)
+
+ 
+    
+
+if __name__ == "__main__":
+ 
+ 
+    arr_file = os.listdir(os.getcwd())
+  
+    arr_file = [file for file in arr_file if    file.startswith("dune_holders_xx") and file.endswith(".csv")]
+ 
+    arr_file.sort()
+    print("read file: ",arr_file)
+    
+    merge_df_fun()
+ 
+    

BIN
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/001_top20_holders.xlsx


BIN
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/002_dune_buy_sametoken.xlsx


+ 55 - 0
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/002_handle_dune_buy_sametoken.py

@@ -0,0 +1,55 @@
+
+# 获取每一个时间段的top20 持仓,汇总到一个excel表格中
+import pandas as pd
+import sys
+import os
+import time
+
+arr_file = []
+merged_df = None
+def makeurl( url,url_show):
+    return '=HYPERLINK("{}","{}")'.format(url,  url_show)
+def handle_df_fun():
+    
+    global arr_file , merged_df 
+    for index, file in enumerate(arr_file):
+        cur_df =   pd.read_csv(file )
+        cur_df =cur_df.astype({
+            "trader_number":int,
+        })
+
+        if index==0 :
+            merged_df = cur_df
+            continue
+
+    merged_df["gmgn"] = merged_df.apply(lambda ser: makeurl(
+    f"https://gmgn.ai/sol/token/{ser['token_address']}" , "gmgn" ), axis=1)
+
+    merged_df["defined"] = merged_df.apply(lambda ser: makeurl(
+     f"https://www.defined.fi/sol/{ser['token_address']}" , "defined" ), axis=1)
+    
+    merged_df["beizhu"] = None
+    merged_df["lasheng_time"] =None
+    merged_df=merged_df[['token_address', 'trader_number',  'min_block_time', 'time_diff',
+     'create_time','lasheng_time',	'gmgn',	'defined'	,'beizhu' ]]
+
+ 
+
+    merged_df.to_excel(f'002_dune_buy_sametoken_{int(time.time())}.xlsx', index=False)
+    return
+ 
+    
+
+if __name__ == "__main__":
+ 
+ 
+    arr_file = os.listdir(os.getcwd())
+  
+    arr_file = [file for file in arr_file if   file.startswith("dune_buy_sametoken_")  and file.endswith(".csv")]
+ 
+    arr_file.sort()
+    print("read file: ",arr_file)
+    
+    handle_df_fun()
+ 
+    

BIN
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/003_dune_sametoken_time_diff.xlsx


+ 55 - 0
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/003_handle_dune_buy_sametoken_time_diff.py

@@ -0,0 +1,55 @@
+
+# 获取每一个时间段的top20 持仓,汇总到一个excel表格中
+import pandas as pd
+import sys
+import os
+import time
+
+arr_file = []
+merged_df = None
+def makeurl( url,url_show):
+    return '=HYPERLINK("{}","{}")'.format(url,  url_show)
+def handle_df_fun():
+    
+    global arr_file , merged_df 
+    for index, file in enumerate(arr_file):
+        cur_df =   pd.read_csv(file )
+    
+        if index==0 :
+            merged_df = cur_df
+            continue
+    merged_df["early_trader_number"] =   (merged_df['buy_create_time_diff'] < 45).groupby(merged_df['token_address']).transform('sum')
+    
+    
+
+ 
+    
+    merged_df["gmgn"] = merged_df.apply(lambda ser: makeurl(
+    f"https://gmgn.ai/sol/token/{ser['token_address']}?tab=activity&maker={ser['trader_id']}" , "gmgn" ), axis=1)
+    merged_df["defined"] = merged_df.apply(lambda ser: makeurl(
+     f"https://www.defined.fi/sol/{ser['token_address']}?maker={ser['trader_id']}" , "defined" ), axis=1)
+    
+    merged_df["beizhu"] = None
+    merged_df =  merged_df.sort_values(by=['early_trader_number','token_address' , 'buy_create_time_diff'], ascending=[False, True , False])
+ 
+ 
+ 
+
+    merged_df.to_excel(f'003_dune_sametoken_time_diff_{int(time.time())}.xlsx', index=False)
+    return
+ 
+    
+
+if __name__ == "__main__":
+ 
+ 
+    arr_file = os.listdir(os.getcwd())
+  
+    arr_file = [file for file in arr_file if "dune_sametoken_time_diff" in file and file.endswith(".csv")]
+ 
+    arr_file.sort()
+    print("read file: ",arr_file)
+    
+    handle_df_fun()
+ 
+    

+ 43 - 0
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/dune_buy_sametoken_xx_xx_xx.csv

@@ -0,0 +1,43 @@
+token_address,min_block_time,trader_number,create_time,time_diff
+jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump,2025-03-15 17:25,31,2025-03-15 17:25,0
+o5PWn2bp8o2Ke6BALLRaKkhfbWv7DXrGpZxQ7drpump,2025-03-17 12:21,14,2025-03-17 12:19,1.85
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,2025-03-16 22:21,13,2025-03-16 21:46,35.68
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,2025-03-14 18:31,11,2024-10-08 17:03,226168.05
+3LQoffhYUJgZsFCkapyisjLKMBWmm9VLCtS7rdCapump,2025-03-12 19:24,11,2025-03-12 18:45,38.93
+FmFnRZWRLnZMcRDQGDCoHSdgLUFMZ7bAtD2qk75Vpump,2025-03-20 05:11,11,2025-03-20 05:02,8.72
+96fgEsL2MWJyjKL4y9An3YMmmxw2C85jyMH4ZgG7pump,2025-03-17 01:48,10,2025-03-17 01:46,2.1
+4UQKL8JCGaiuMdLrj1eqZGgWkiNUKYpy1WMV5RaSpump,2025-03-19 19:13,10,2025-03-19 19:11,1.45
+72K3JXa38wi9Qap2a4hPEfkaRurkmK6tj3otVxsHpump,2025-03-10 19:11,10,2025-03-10 18:52,18.48
+A2XiGmKR4HqK4V6nwKQMFEq7WmfTh4QUvtBpY2uSpump,2025-03-20 15:59,10,2025-03-20 12:17,221.45
+Dp5DFeUMcSisjiiVnPDKRd4fideoYnabBPoCC1pYw2qf,2025-03-14 16:54,10,2025-03-14 16:52,1.68
+wraVNd4B6Kj91hvNDXGtadtstQGv969x8tPDT5Hpump,2025-03-17 01:36,10,2025-03-17 01:35,1.53
+GBtn3YmkiTvhGmHLeiN2W7SYFgTyu11ZoXZ1MChspump,2025-03-14 17:32,9,2025-03-14 17:32,0.2
+n3fEXE1bg7J8y1Zr5emEr6o7NW9djrCmBJd3sKupump,2025-03-16 22:23,9,2025-03-16 22:22,0.6
+fQYrWAMG9oHMwC7SYymZG8m7a4CDfNDtUExFFEZpump,2025-03-26 03:45,9,2025-03-26 03:43,2.05
+H4kzQgCg24JyDNBVEgQy3VZXUorBuXkwQuW5bx4ypump,2025-03-14 22:08,8,2025-03-08 22:51,8597.13
+BSubUBTHxECeAYUsAs9FmjbuECvMBfuvs1PA8EkKpump,2025-03-17 15:38,8,2025-03-17 13:53,104.62
+6eA1y82s5yikisLHangQW9FmcTVkfYXRRLHwwqYQpump,2025-03-11 18:19,8,2025-03-11 14:51,208.33
+ARXq4bQKsEVAft5Mngu4iPsy4EviU8e1meEYr5vZpump,2025-03-15 00:18,8,2025-03-15 00:17,0.83
+7mCq31sDMzXyH7sCndFDCwMT8nR7w2gkbtFfCLVupump,2025-03-14 17:09,8,2025-03-14 17:08,0.88
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,2025-03-11 21:02,8,2025-03-11 20:52,9.73
+EF2cJdM8CaubmD44ZYDj1EPGBcoYq5JEqnWLVDhepump,2025-03-07 06:12,8,2025-03-07 05:49,22.08
+2QNZ5shvMiutr5ruWyWsdR1fcqLH2EAo6DG27qdKpump,2025-03-19 16:25,8,2025-03-19 16:18,7.05
+82KsV3YRYtQiiNkgdAR2E2HBcAgvPSgsrqJorCnvpump,2025-03-22 21:24,8,2025-03-22 21:21,2.48
+VjMa3mzfBgCyKRTQHg8pSuZRKCvKF8zMqVXQMU3pump,2025-03-12 03:49,8,2025-03-12 03:44,5.22
+HL7JEmYEByuochEcjgGWMQYFWkidCnTvfJVnG8Pcwn9J,2025-03-20 02:33,8,2024-04-06 21:21,499992.08
+HKspy5K9vEG78ou3SbxtgsQpbovrGFH67zfQWGwhpump,2025-03-18 16:58,8,2025-03-18 16:55,3.38
+3EvwezV6VEkC3xwCWS3mPXXQeDEfRXjrRJyERVtWpump,2025-03-23 18:04,8,2025-03-23 18:00,3.8
+Ckr1exizxJ7HM5u2fLHzS1L3QthNXP9fGV8CAbE1pump,2025-03-18 17:32,8,2025-03-18 16:24,68.23
+BfPwaRTVHL43b31oLgNnxxEsrq3E2rWPgMzLYyMapump,2025-03-10 20:23,8,2025-03-10 00:30,1192.42
+J5VnMCxjiTiGzP39uYJyphuH7sG1EDdJ5vDpAbMpump,2025-03-24 01:26,8,2025-03-24 01:03,22.9
+G45aN3V37H72rcDBY5rZdoL4GNFdc4WFfY9R8Ezopump,2025-03-23 19:31,8,2025-03-23 19:20,11.18
+26aPqhyuJFnMyVSGMct6R7eE6i6fj4nGsnpmP8qtNotG,2025-03-14 17:27,7,2025-03-14 17:26,1.08
+375G3324QYn5Sz4ERV4JDNPjZnwstfz6fn9hcyT8pump,2025-03-07 22:48,7,2025-03-07 22:43,5.27
+CZjhXkDbDWouAGNwgjqaE7sRrtXsVnZb4oU3eopFWCNx,2025-03-25 18:06,7,2025-03-24 17:34,1471.9
+DWVctQXG4uQxNmHv1JRPm6ParzyDvLswez6ZJ2yNpump,2025-03-19 19:57,7,2025-03-19 19:50,7.7
+Dz8W1z66T6K5rwitjn7MUhUvTTFGDQZU7fzBZcgkpump,2025-03-19 04:30,7,2025-03-19 01:31,179.62
+CN4SuB2rLvkFQWUpk5VtDLDWghzXn5zF4SheCpaQpump,2025-03-18 20:03,7,2025-03-18 19:46,17.05
+EF7NGbdLY938jNWCTvcF1JvPMmyXckMTUyAMGjTBpump,2025-03-26 17:06,7,2025-03-26 11:07,359.22
+HKHJGyCixL2gQjLUxbUWr83wF5BsNwJANjL1Axnppump,2025-03-16 21:07,7,2025-03-16 21:04,2.3
+6Wtk3sg8jdwdUGJCizeQCqjxk5zzr1QSVqKVq64Jpump,2025-03-19 01:10,7,2025-03-19 01:10,0.4
+DasQSkvurva6NSotsacRs6BynBqVBtXNQxe56iTspump,2025-03-16 22:17,7,2025-03-16 22:17,0.53

+ 24 - 0
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/dune_holders_xx_xx_0316日0330.csv

@@ -0,0 +1,24 @@
+holder_owner,domains_owned,amount_M,pct_supply
+C4jzBQuNYYRARk76ptxizkwvMt73cKRnPYisf3MDpF8B,,88,8.8
+7GpiTzud8oKFMWGXAaAHRmRUt7WBFGS8Sb1Tcjd9ZPU5,,36.52,3.65
+EZZk361QgZDMx52AmMyc4NjFkuaNrdegwAxrLEbeaR94,,31.37,3.14
+6eostGmh4KLmwhC3H1EzyTifDPKVT6GLMrxTZ3Kd5qhh,,26.17,2.62
+HySbYSzCvZFsavtXQnn83kzkXwyMofncXypRUFNzKkex,,24.36,2.44
+3sJX7iJfjg8xxrHfqbS7NGpEh3uUVeLKvcMifWyxVMFs,,24.01,2.4
+Ct8LEHd4tb3hDrjuoLVibZEdZgxDsKHJ9kUAYeoBC8B,,23.3,2.33
+BARBK2D9fB4xAvktcyX9VEMz75xXs7iCa26LZsgAjvmL,,21.14,2.11
+HxxVw4JQYgqxUGRruAzTj4Nrisc2e3qr9azVn7fVtnSo,,21,2.1
+EJM2zrEd4uc6662LVVdDN5bH9iDFy2A4mDuhLttMkhby,,17.81,1.78
+Hb11QhxySAo4aGtB85ST3AJE75jVzxd7t1tPw8Kq5QXk,,16.92,1.69
+7BXHBSAY37sXuuKMb58YDVNRiuGGSTaXs2f1T1KPr4kG,,16.09,1.61
+9H8wEA9ALybJbRmBxjendamofQJZa4VCW4z4fDo37zA4,,15.04,1.5
+7A7h5ZwftxfZWqGGaVJUcFRvDvKWRrkDtjorsM1DgMDd,,15.02,1.5
+EoiZ1EnNMZcJMhMddjs3S93r8uf7wDYsPPTeRACiASjH,,14.94,1.49
+FeFtYuuU3Ci9ngfnL3DGEu9ZBMYSxL4D9JbHTzvRK6W2,,14.52,1.45
+EyqRQFWYNg1PbkHNpvewPrrU6YSKFVj4d1DfHesxVFcq,,13.67,1.37
+FP1vTdPUjccYJxuNEYUNoRAJx1sxxwpdLjh9U6MPKEMA,,12.35,1.23
+2RnkZm1yj8i9Vx8tAG9Dh35NC6NV6mp6fuuPbn5n8riV,,12.17,1.22
+14DgH6mZtoNqACCvsNzj3pP7Lu1LiK8WaakREPbmnqjR,,10.46,1.05
+BZ7nYnXq269QqvUzRwGppSRcnYjAy1bgLSRMvuLthZ2i,,15.79,1.58
+BmMzYVNfp8VkAi6XAmXS1GpouEF5kphFfFRJRmFaAd4y,,15,1.5
+6APr4VVvjgaiXjLVErLn7o6nVDeCpazC67r63XjZf24a,,9.14,0.91

+ 50 - 0
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/dune_holders_xx_xx_0316日2200.csv

@@ -0,0 +1,50 @@
+holder_owner,domains_owned,amount_M,pct_supply
+5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1,bonklanatoken.sol,179.82,17.98
+C4jzBQuNYYRARk76ptxizkwvMt73cKRnPYisf3MDpF8B,,88,8.8
+C4cTbb5vL97sgTN2PCPPiUiKVGHw3X6fVdFtGZ9H7wnW,,52.69,5.27
+7spqLYvSMSiC1ThhM6pff7b2pNkA1XKfwxKzwpHwF7hm,,34.18,3.42
+EZZk361QgZDMx52AmMyc4NjFkuaNrdegwAxrLEbeaR94,,31.37,3.14
+7GpiTzud8oKFMWGXAaAHRmRUt7WBFGS8Sb1Tcjd9ZPU5,,26.68,2.67
+CswFtvaWiT8iGC7s36eSViLiz2fupkkYV2CJoHrM9VV8,,25.92,2.59
+Ct8LEHd4tb3hDrjuoLVibZEdZgxDsKHJ9kUAYeoBC8B,,23.77,2.38
+EA1aTKexggr2Uju9RAn5riZWPV9sNZ9miz81US4E3LrE,,23.09,2.31
+7gHDnBp3ApVnbePN7tA73DiDo2G9hYSRMfMvyN7TuVJ3,,21.68,2.17
+BARBK2D9fB4xAvktcyX9VEMz75xXs7iCa26LZsgAjvmL,,21.14,2.11
+BFSsb5keUUFeTFrV5PqpPcPLXXv7d1X6EBK4Sj9Vcnpu,,20.13,2.01
+EJM2zrEd4uc6662LVVdDN5bH9iDFy2A4mDuhLttMkhby,,17.81,1.78
+Hb11QhxySAo4aGtB85ST3AJE75jVzxd7t1tPw8Kq5QXk,,16.18,1.62
+HnHFgT8xuPSREMwLkWv8nRpSni3fuizwxx4tkAeZU7zY,,14.02,1.4
+9Uysc2NK3kTF3JG6R6BNyEPjgpavjr8qQuqMo2CuWsZU,,13.54,1.35
+Eq8YwZ9iwpdWAeS4bWZVvfEbtLMJvdWETwDdTPNsqrm3,,12,1.2
+EoiZ1EnNMZcJMhMddjs3S93r8uf7wDYsPPTeRACiASjH,,11.97,1.2
+2RnkZm1yj8i9Vx8tAG9Dh35NC6NV6mp6fuuPbn5n8riV,,11.34,1.13
+RZa9cGkpk71NJ2A2KP19mMMGxYABRhqMmsxYHip1aPm,,11.1,1.11
+3zvBEUmTUaNvgEBxpRrUCJvL1Cc1fokSLCZpcrFgYfSh,,10.95,1.1
+282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,,9.63,0.96
+14KFT7rSxwNcrZeg76R57p9TcsHso8AT9Mzv5bpMxp81,,9.6,0.96
+45H9MEfwcVPEbngHyw1P7bp2AuhysoycHMvAdSmJ59SC,,9.37,0.94
+6Qyx2XQpuLvpGxTDyXycW2DdBv7yeuokeiQ29NDLruNj,,9.12,0.91
+ABEL2ebYKrxWnKYj8Zv5FYVFbxnGg75cprwau5ZYRVjj,,8.36,0.84
+BZ7nYnXq269QqvUzRwGppSRcnYjAy1bgLSRMvuLthZ2i,,7.93,0.79
+1u3TV9eBxAH68YN9gjCGueUEH5ZQZXXMTGRMho3dQXg,,7.78,0.78
+14DgH6mZtoNqACCvsNzj3pP7Lu1LiK8WaakREPbmnqjR,,7.5,0.75
+JabWMpyvcBpUZtQv578uRKiHt1z25DCMS9h1atfrBBF,,7.3,0.73
+4xZjirX8A26dAVnQDa3nxTYuxozRFpPKyW6KD6FC5yZ7,,7.12,0.71
+FLy49j19q2btJo8QCs5SvVzedfKbUesK9bEZJa6hqAJN,,7.07,0.71
+Gf1mxHVT8XqU9uEZQLEtn1MXdjx9gxEX9h5Fq68iCqhf,,7,0.7
+9J5LEineUWJZsmgvJBf4d5eFU2Jt2cqp7aoVoPTHWVam,,6.19,0.62
+FP1vTdPUjccYJxuNEYUNoRAJx1sxxwpdLjh9U6MPKEMA,,6.1,0.61
+CNdEuC9hGaUMGjGEyfPchnm4xCnW7jQuLKuywES2FQPL,,6.06,0.61
+6QdUrwTuCgAACfqbhYpRteTMrWKwpaBv83CkjKwFk9Lo,,5.62,0.56
+5Wi9Jg9v6QW1UYuaaj4x4K7Kfstf5U44MPhMMtcdvJk1,,4.73,0.47
+DEdEW3SMPU2dCfXEcgj2YppmX9H3bnMDJaU4ctn2BQDQ,,4.28,0.43
+8QQYggwt2RNYnj8hGd4GAzYTW7W2Xyv3q3XkutTStY6V,,4.26,0.43
+DnV2eQ4G2pFjSEcNoRcjK7nmQKwbhgEcC4apyxKuQZAq,,3.66,0.37
+38gK9BN5oifmZgziUJZuhw9GKaVYNXDkfgVfY9RbBNDR,,3.62,0.36
+3m5oFyA4AWLrrcNby13ouhnnMbbtbXG2m9vv8XqPH6hG,,3.54,0.35
+5FPN2jJnnpqDwVHYPxr1rcLcjKQgAtRqy7GfBruJ7e81,,3.38,0.34
+DpURLdi3fZEe5Y9UjPwXEgeAgCLaCKVCdGCJMyvcSq1s,,3.37,0.34
+6xwPEJrzkQvUhuidjefQbBUBzAYc8Q6v4yDBxxfMXYe2,,3.07,0.31
+DPah2UCpD6pvSwnELnqtTU6jd4ri9yGyTZTYkeMKgkYB,,3.03,0.3
+EA9wsreXsAQhhXUYkXV5JctCoe4NbKEBVcNeVgAWSUtZ,,2.98,0.3
+CjEPgrK8bhySuENcCaLmpZBgK5hdAfhygs7pwitc42PB,,2.87,0.29

+ 45 - 0
src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/dune_sametoken_time_diffxx_xx_xx.csv

@@ -0,0 +1,45 @@
+token_address,trader_id,buy_create_time_diff,create_time,trader_number
+BSubUBTHxECeAYUsAs9FmjbuECvMBfuvs1PA8EkKpump,282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,380.23,2025-03-17 13:53,6
+BSubUBTHxECeAYUsAs9FmjbuECvMBfuvs1PA8EkKpump,EZZk361QgZDMx52AmMyc4NjFkuaNrdegwAxrLEbeaR94,335.9,2025-03-17 13:53,6
+BSubUBTHxECeAYUsAs9FmjbuECvMBfuvs1PA8EkKpump,3sJX7iJfjg8xxrHfqbS7NGpEh3uUVeLKvcMifWyxVMFs,104.62,2025-03-17 13:53,6
+BSubUBTHxECeAYUsAs9FmjbuECvMBfuvs1PA8EkKpump,14DgH6mZtoNqACCvsNzj3pP7Lu1LiK8WaakREPbmnqjR,552.43,2025-03-17 13:53,6
+BSubUBTHxECeAYUsAs9FmjbuECvMBfuvs1PA8EkKpump,HnHFgT8xuPSREMwLkWv8nRpSni3fuizwxx4tkAeZU7zY,801.62,2025-03-17 13:53,6
+BSubUBTHxECeAYUsAs9FmjbuECvMBfuvs1PA8EkKpump,3zvBEUmTUaNvgEBxpRrUCJvL1Cc1fokSLCZpcrFgYfSh,342.82,2025-03-17 13:53,6
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,3zvBEUmTUaNvgEBxpRrUCJvL1Cc1fokSLCZpcrFgYfSh,226183.72,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,3sJX7iJfjg8xxrHfqbS7NGpEh3uUVeLKvcMifWyxVMFs,226182.35,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,FP1vTdPUjccYJxuNEYUNoRAJx1sxxwpdLjh9U6MPKEMA,226188.87,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,226228.9,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,Ct8LEHd4tb3hDrjuoLVibZEdZgxDsKHJ9kUAYeoBC8B,226171.28,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,HySbYSzCvZFsavtXQnn83kzkXwyMofncXypRUFNzKkex,226168.05,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,EyqRQFWYNg1PbkHNpvewPrrU6YSKFVj4d1DfHesxVFcq,226175.87,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,BZ7nYnXq269QqvUzRwGppSRcnYjAy1bgLSRMvuLthZ2i,226199.48,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,14DgH6mZtoNqACCvsNzj3pP7Lu1LiK8WaakREPbmnqjR,226176.75,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,EZZk361QgZDMx52AmMyc4NjFkuaNrdegwAxrLEbeaR94,226168.7,2024-10-08 17:03,11
+5h45oWo4TwXxXNXzHzYuU6TA7zrDjgtFCQf64hRncBRU,2RnkZm1yj8i9Vx8tAG9Dh35NC6NV6mp6fuuPbn5n8riV,226182.32,2024-10-08 17:03,11
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,EZZk361QgZDMx52AmMyc4NjFkuaNrdegwAxrLEbeaR94,9.73,2025-03-11 20:52,8
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,2RnkZm1yj8i9Vx8tAG9Dh35NC6NV6mp6fuuPbn5n8riV,20.35,2025-03-11 20:52,8
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,14DgH6mZtoNqACCvsNzj3pP7Lu1LiK8WaakREPbmnqjR,177.07,2025-03-11 20:52,8
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,Eq8YwZ9iwpdWAeS4bWZVvfEbtLMJvdWETwDdTPNsqrm3,119.2,2025-03-11 20:52,8
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,Ct8LEHd4tb3hDrjuoLVibZEdZgxDsKHJ9kUAYeoBC8B,129.17,2025-03-11 20:52,8
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,EyqRQFWYNg1PbkHNpvewPrrU6YSKFVj4d1DfHesxVFcq,138.97,2025-03-11 20:52,8
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,212.9,2025-03-11 20:52,8
+2yFiCwdLiUfxq9PcNXQvu16QdgBFniCJP8P8gEXNpump,3zvBEUmTUaNvgEBxpRrUCJvL1Cc1fokSLCZpcrFgYfSh,20.47,2025-03-11 20:52,8
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,14DgH6mZtoNqACCvsNzj3pP7Lu1LiK8WaakREPbmnqjR,42,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,Ct8LEHd4tb3hDrjuoLVibZEdZgxDsKHJ9kUAYeoBC8B,59.55,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,9H8wEA9ALybJbRmBxjendamofQJZa4VCW4z4fDo37zA4,40.9,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,Eq8YwZ9iwpdWAeS4bWZVvfEbtLMJvdWETwDdTPNsqrm3,79.08,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,7GpiTzud8oKFMWGXAaAHRmRUt7WBFGS8Sb1Tcjd9ZPU5,45.65,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,HnHFgT8xuPSREMwLkWv8nRpSni3fuizwxx4tkAeZU7zY,123.1,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,3zvBEUmTUaNvgEBxpRrUCJvL1Cc1fokSLCZpcrFgYfSh,59.67,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,51.8,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,BZ7nYnXq269QqvUzRwGppSRcnYjAy1bgLSRMvuLthZ2i,42.2,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,EZZk361QgZDMx52AmMyc4NjFkuaNrdegwAxrLEbeaR94,39.55,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,7BXHBSAY37sXuuKMb58YDVNRiuGGSTaXs2f1T1KPr4kG,51.5,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,EyqRQFWYNg1PbkHNpvewPrrU6YSKFVj4d1DfHesxVFcq,35.68,2025-03-16 21:46,13
+2ZoJVM15fbbDgo6s5cTTX2Sj8V4sJ47rimb7gQhGpump,2RnkZm1yj8i9Vx8tAG9Dh35NC6NV6mp6fuuPbn5n8riV,59.62,2025-03-16 21:46,13
+VjMa3mzfBgCyKRTQHg8pSuZRKCvKF8zMqVXQMU3pump,Hb11QhxySAo4aGtB85ST3AJE75jVzxd7t1tPw8Kq5QXk,5.22,2025-03-12 03:44,6
+VjMa3mzfBgCyKRTQHg8pSuZRKCvKF8zMqVXQMU3pump,3sJX7iJfjg8xxrHfqbS7NGpEh3uUVeLKvcMifWyxVMFs,479.43,2025-03-12 03:44,6
+VjMa3mzfBgCyKRTQHg8pSuZRKCvKF8zMqVXQMU3pump,EJM2zrEd4uc6662LVVdDN5bH9iDFy2A4mDuhLttMkhby,5.22,2025-03-12 03:44,6
+VjMa3mzfBgCyKRTQHg8pSuZRKCvKF8zMqVXQMU3pump,282Si2J6j5MPnLbHxzrGDAYnTw5Gu4SnKMSt4EaVsecD,2175.58,2025-03-12 03:44,6
+VjMa3mzfBgCyKRTQHg8pSuZRKCvKF8zMqVXQMU3pump,EyqRQFWYNg1PbkHNpvewPrrU6YSKFVj4d1DfHesxVFcq,920.73,2025-03-12 03:44,6
+VjMa3mzfBgCyKRTQHg8pSuZRKCvKF8zMqVXQMU3pump,7BXHBSAY37sXuuKMb58YDVNRiuGGSTaXs2f1T1KPr4kG,917.28,2025-03-12 03:44,6

+ 4 - 1
src/library/analysis_token/3DRnsQ5GA2XKk8WJ3yB46KbcRWGtA3E6cgFaqzJWpump/exclude_add.csv → src/library/analysis_token/jLkPtLCKP6hrRxftWvtycTNX22ijbAqmayUuiZ9pump/exclude_add.csv

@@ -31,4 +31,7 @@ j1oeQoPeuEDmjvyMwBmCWexzCQup77kbKKxV59CnYbd,jupiter limit order taker account
 53owRWHqDocPYVtVxAQJSTE7rY6QWyWfDNAnWg5VpF9z,Pump.fun (JIANKUI) Bonding Curve
 H3oWNGDfr5pSPDM3eDYpLiT7WsUiUF8ee8WmepovDAGt,Meteora (JIANKUI-WSOL) Market
 BgYAdyHRjkQ4qaPMyt2SL53MNgfDFF6hiYy7tzwfDrtW,Raydium (WSOL-JIANKUI) Market
-8AcbTJPF2dyvabhjY8oz89SQWZArBeZzLHXnYWYWUzue,Meteora (JIANKUI-WSOL) Market
+8AcbTJPF2dyvabhjY8oz89SQWZArBeZzLHXnYWYWUzue,Meteora (JIANKUI-WSOL) Market
+53LCtLUHJvNxsf7C9xUFC8TCecV2yAEsZmCuCgnB8LR,Meteora (YAYDOLF-WSOL) Market
+9x13yovdBSLuTRM6RMng6vvaCezBQsL7uhLkGgyLKPhJ,Pump.fun (YAYDOLF) Bonding Curve
+C4cTbb5vL97sgTN2PCPPiUiKVGHw3X6fVdFtGZ9H7wnW,Meteora (YAYDOLF-WSOL) Market

BIN
src/library/analysis_token/new_token/df_gmgn_pump_total.xlsx


+ 2 - 2
src/library/analysis_token/笔记.md

@@ -6,10 +6,10 @@ excel 添加列,链接
 =HYPERLINK("https://gmgn.ai/sol/token/5puhwnyz2Tv8jSmmBD5DSqCwFVXwwPGZacymM7DQpump?tab=activity&maker="&A2,"gmgn")
 
 
- 
 
 
-="('"&A2&"'),"
+
+="('"&A1&"'),"
 
 https://dexscreener.com/solana?rankBy=trendingScoreH24&order=desc&dexIds=raydium&minAge=48&min24HChg=200