trolltrade / app.py
tatate's picture
a
4a4792a
raw
history blame
45.5 kB
import requests
import time
from web3 import Web3
from time import gmtime, strftime
from st_keyup import st_keyup
import datetime
import streamlit as st
import json
# Initialise les valeurs des booléens
if "bool1" not in st.session_state:
st.session_state.bool1 = False
if "bool2" not in st.session_state:
st.session_state.bool2 = False
if "bool3" not in st.session_state:
st.session_state.bool3 = False
if "bool4" not in st.session_state:
st.session_state.bool4 = False
if "bool5" not in st.session_state:
st.session_state.bool5 = False
if "bool6" not in st.session_state:
st.session_state.bool6 = False
if "bool_abi" not in st.session_state:
st.session_state.bool_abi = False
# Initialise les valeurs des prix et montants
if "price1" not in st.session_state:
st.session_state.price1 = ""
if "price2" not in st.session_state:
st.session_state.price2 = ""
if "price3" not in st.session_state:
st.session_state.price3 = ""
if "price4" not in st.session_state:
st.session_state.price4 = ""
if "price5" not in st.session_state:
st.session_state.price5 = ""
if "price6" not in st.session_state:
st.session_state.price6 = ""
if "amount1" not in st.session_state:
st.session_state.amount1 = ""
if "amount2" not in st.session_state:
st.session_state.amount2 = ""
if "amount3" not in st.session_state:
st.session_state.amount3 = ""
if "amount4" not in st.session_state:
st.session_state.amount4 = ""
if "amount5" not in st.session_state:
st.session_state.amount5 = ""
if "amount6" not in st.session_state:
st.session_state.amount6 = ""
if "abi" not in st.session_state:
st.session_state.abi = ""
# Initialise les valeurs des prix et montants
if "trx1" not in st.session_state:
st.session_state.trx1 = "no trx"
if "trx2" not in st.session_state:
st.session_state.trx2 = "no trx"
if "trx3" not in st.session_state:
st.session_state.trx3 = "no trx"
if "trx4" not in st.session_state:
st.session_state.trx4 = "no trx"
if "trx5" not in st.session_state:
st.session_state.trx5 = "no trx"
if "trx6" not in st.session_state:
st.session_state.trx6 = "no trx"
# Fonction pour modifier la valeur du booléen 1
def toggle_bool1():
st.session_state.bool1 = not st.session_state.bool1
time.sleep(1)
# Fonction pour modifier la valeur du booléen 2
def toggle_bool2():
st.session_state.bool2 = not st.session_state.bool2
time.sleep(1)
# Fonction pour modifier la valeur du booléen 3
def toggle_bool3():
st.session_state.bool3 = not st.session_state.bool3
time.sleep(1)
def toggle_bool4():
st.session_state.bool4 = not st.session_state.bool4
time.sleep(1)
def toggle_bool5():
st.session_state.bool5 = not st.session_state.bool5
time.sleep(1)
def toggle_bool6():
st.session_state.bool6 = not st.session_state.bool6
time.sleep(0.1)
st.write(
"""
<style>
body {
background-color: green !important;
color: white;
}
</style>
""",
unsafe_allow_html=True
)
st.title('🔗💬 TrollTrade - Buy/Sell BSC')
st.write('TrollTrade is a powerful trading bot designed to help users of the PancakeSwap platform improve their trading strategy. ')
prompt_address_user_container = st.empty() #situation de l'espace de trading
prompt_address_user_container.write("Wallet Adress : 0xD7eA51d434D0897DE93400b43341FB3115585111")
prompt_address_userBNB = st.text_input('Give your Wallet Address')
prompt_address_user = st.text_input('Give your Private Key')
st.write("----------------")
st.title('🔗💬 let s go trade...')
prompt_token_address = st.text_input('Choose the BSC Token Adress')
tokenAdress_container = st.empty() #situation de l'espace de trading
tokenAdress_container.write("Token Adress : 0x922722e9ef614ec9a3e94b78496e92abfbb5a624")
st.write("----------------")
output_container2 = st.empty()
output_container = st.empty()
output_container3 = st.empty()
output_container_symbole = st.empty()
output_container2.write("Time : " + strftime("%Y-%m-%d %H:%M:%S"))
output_container_symbole.write("Symbole : ")
output_container.write("Price : ")
trade7_container = st.empty() #ammount of token
trade8_container = st.empty() #ammount of token BNB
trade7_container.write("Ammount Token : ")
trade8_container.write("Ammount BNB: ")
output_container.write("Price : ")
output_container2.write("Time : " + strftime("%Y-%m-%d %H:%M:%S"))
st.write("----------------")
st.write("When Sell?")
# Crée des champs de saisie pour les prix et les montants
col1, col2, col3 = st.columns(3)
with col1:
st.write("Trade 1")
st.session_state.price1 = st.text_input("Price 1", st.session_state.price1)
st.session_state.amount1 = st.text_input("Amount 1", st.session_state.amount1)
st.write("Boolean 1:")
if st.button("START/STOP - 1"):
toggle_bool1()
# Réexécute uniquement cette partie du code
st.experimental_rerun()
st.write("Trade : " + ("True" if st.session_state.bool1 else "False"))
with col2:
st.write("Trade 2")
st.session_state.price2 = st.text_input("Price 2", st.session_state.price2)
st.session_state.amount2 = st.text_input("Amount 2", st.session_state.amount2)
st.write("Boolean 2:")
if st.button("START/STOP - 2"):
toggle_bool2()
st.experimental_rerun()
st.write("Trade : " + ("True" if st.session_state.bool2 else "False"))
with col3:
st.write("Trade 3")
st.session_state.price3 = st.text_input("Price 3", st.session_state.price3)
st.session_state.amount3 = st.text_input("Amount 3", st.session_state.amount3)
st.write("Boolean 2:")
if st.button("START/STOP - 3"):
toggle_bool3()
st.experimental_rerun()
st.write("Trade : " + ("True" if st.session_state.bool3 else "False"))
st.write("----------------")
st.write("When Buy ?")
col4 ,col5 ,col6 = st.columns(3)
with col4:
st.write("Trade 4")
st.session_state.price4 = st.text_input("Price 4", st.session_state.price4)
st.session_state.amount4= st.text_input("Amount 4 ", st.session_state.amount4)
st.write("Boolean 4:")
if st.button("START/STOP - 4"):
toggle_bool4()
st.experimental_rerun()
st.write("Trade : " + ("True" if st.session_state.bool4 else "False"))
with col5:
st.write("Trade 5")
st.session_state.price5 = st.text_input("Price 5", st.session_state.price5)
st.session_state.amount5 = st.text_input("Amount 5", st.session_state.amount5)
st.write("Boolean 5 :")
if st.button("START/STOP - 5"):
toggle_bool5()
st.experimental_rerun()
st.write("Trade : " + ("True" if st.session_state.bool5 else "False"))
with col6:
st.write("Trade 6")
st.session_state.price6 = st.text_input("Price 6", st.session_state.price6)
st.session_state.amount6 = st.text_input("Amount 6", st.session_state.amount6)
st.write("Boolean 6 :")
if st.button("START/STOP -6"):
toggle_bool6()
st.experimental_rerun()
st.write("Trade : " + ("True" if st.session_state.bool6 else "False"))
st.write("----------------")
# Affiche les informations sur les trades dans un tableau
table_data = [("Trade Sell 1", st.session_state.price1, st.session_state.amount1, "True" if st.session_state.bool1 else "False", st.session_state.trx1),
("Trade Sell 2", st.session_state.price2, st.session_state.amount2, "True" if st.session_state.bool2 else "False", st.session_state.trx2),
("Trade Sell 3", st.session_state.price3, st.session_state.amount3, "True" if st.session_state.bool3 else "False", st.session_state.trx3),
("Trade Buy 1", st.session_state.price4, st.session_state.amount4, "True" if st.session_state.bool4 else "False", st.session_state.trx4),
("Trade Buy 2", st.session_state.price5, st.session_state.amount5, "True" if st.session_state.bool5 else "False", st.session_state.trx5),
("Trade Buy 3", st.session_state.price6, st.session_state.amount6, "True" if st.session_state.bool6 else "False", st.session_state.trx6)]
st.write("Table of trades:")
with st.container():
col1, col2, col3, col4, col5 = st.columns(5)
col1.write("Trade")
col2.write("Price")
col3.write("Amount")
col4.write("Status")
col5.write("TRX")
for data in table_data:
with st.container():
col1.write(data[0])
col2.write(data[1])
col3.write(data[2])
col4.write(data[3])
col5.write(data[4])
url = "https://api.dexscreener.com/latest/dex/tokens/"
w3 = Web3(Web3.HTTPProvider('https://bsc-dataseed1.binance.org:443'))
def modify_price(pricex, symbol, total, BNB):
price = pricex
print("edit price")
trade7_container.write("Ammount Token : " + str(total) + " " + symbol)
trade8_container.write("Ammount BNB : " + str(BNB) + " " + "BNB")
output_container.write("Price : " + pricex + " USD")
output_container_symbole.write("Symbole : " + symbol)
output_container2.write("Time : " + strftime("%Y-%m-%d %H:%M:%S"))
time.sleep(1)
def analyser_amount_token(myaddress, token):
bsc = "https://bsc-dataseed.binance.org:443"
web3 = Web3(Web3.HTTPProvider(bsc))
contract_a = your_contract_adress_retrieval_function(token)
if 'bool_abi' not in st.session_state:
st.session_state.bool_abi = False
bool_abii = False
abi = ""
else:
bool_abii = st.session_state.bool_abi
abi = get_abi(token, bool_abii)
if abi == "":
return 0
contract = web3.eth.contract(address=contract_a, abi=abi)
totalSupply = contract.functions.totalSupply().call()
address = web3.to_checksum_address(myaddress)
balance12 = contract.functions.balanceOf(myaddress).call()
print(balance12)
balance1 = web3.from_wei(balance12,"ether")
return balance1
def analyser_amount_BNB(myaddress):
bsc = "https://bsc-dataseed.binance.org/"
web3 = Web3(Web3.HTTPProvider(bsc))
balance = web3.eth.get_balance(myaddress)
print(balance)
result = web3.from_wei(balance, "ether")
print(result)
return result
def analyser_prix(adress_token):
url2 = url + adress_token
while True:
try:
response = requests.get(url2)
price = response.json()['pairs'][0]['priceUsd']
priceBNB = response.json()['pairs'][0]['priceNative']
price_change_5m = response.json()['pairs'][0]['priceChange']['m5']
price_change_1h = response.json()['pairs'][0]['priceChange']['h1']
price_change_6h = response.json()['pairs'][0]['priceChange']['h6']
price_change_24h = response.json()['pairs'][0]['priceChange']['h24']
symbole = response.json()['pairs'][0]["baseToken"]["symbol"]
# call the function and pass the initial value of x
if prompt_address_userBNB.strip():
addressUser = prompt_address_userBNB.strip()
else:
addressUser = "0xD7eA51d434D0897DE93400b43341FB3115585111"
amount_user = analyser_amount_token(addressUser,adress_token)
amount_BNB = analyser_amount_BNB(addressUser)
modify_price(price, symbole,amount_user,amount_BNB)
#modify_token_address(prompt_token_address)
print("Price : " + str(price )+ " - Price 5m : " + str(price_change_5m) + " - Price 1h : " + str(price_change_1h) + " - Price 6H " + str(price_change_6h) + " - Price 1J " + str(price_change_24h))
time.sleep(1)
return price
except requests.exceptions.RequestException as e:
print("Erreur lors de la récupération des données: ", e)
time.sleep(1)
def analyser_prixBNB(adress_token):
url2 = url + adress_token
print(url2)
while True:
try:
response = requests.get(url2)
priceBNB = response.json()['pairs'][0]['priceNative']
return priceBNB
except requests.exceptions.RequestException as e:
print("Erreur lors de la récupération des données: ", e)
time.sleep(1)
def get_abi(token, bool_abi_h):
# Vérifier si l'ABI est déjà stocké dans les variables de session
print(bool_abi_h)
print("abi")
if bool_abi_h:
print("IF")
abih = st.session_state['abi']
return abih
else:
print("ELSE")
# Récupérer l'ABI depuis la source appropriée
abi = your_abi_retrieval_function(token)
print(abi)
st.session_state['abi'] = abi
print("yasdadasd")
return abi
# Retourner l'ABI
def your_contract_adress_retrieval_function(token):
bsc = "https://bsc-dataseed.binance.org:443"
web3 = Web3(Web3.HTTPProvider(bsc))
url_eth = "https://api.bscscan.com/api"
contract_address = web3.to_checksum_address(token)
return contract_address
tempa = 0
def your_abi_retrieval_function(token):
if 'bool_abi' not in st.session_state:
st.session_state.bool_abi = True
if not st.session_state.bool_abi:
st.session_state.bool_abi = True
print("returnabi_1")
print(st.session_state.bool_abi)
token_v = token
print(token_v)
bsc = "https://bsc-dataseed.binance.org:443"
web3 = Web3(Web3.HTTPProvider(bsc))
url_eth = "https://api.bscscan.com/api"
contract_address = web3.to_checksum_address(token_v)
API_ENDPOINT = url_eth+"?module=contract&action=getabi&address="+str(contract_address)
r = requests.get(url = API_ENDPOINT)
response = r.json()
abi=json.loads(response["result"])
print("returnabi_2")
return abi
st.experimental_rerun()
else:
abi3 = st.session_state['abi']
return abi3
def reset_value(temp):
numtrade = temp
if numtrade == 1:
st.session_state.amount1 = 0
st.session_state.price1 = 0
if numtrade == 2:
st.session_state.amount2 = 0
st.session_state.price2 = 0
if numtrade == 3:
st.session_state.amount3 = 0
st.session_state.price3 = 0
if numtrade == 4:
st.session_state.amount4 = 0
st.session_state.price3 = 0
if numtrade == 5:
st.session_state.amount5 = 0
st.session_state.price3 = 0
if numtrade == 6:
st.session_state.amount6 = 0
st.session_state.price3 = 0
def sellToken(amountToken, sender_address, tokenToSell, prixNative):
bsc = "https://bsc-dataseed.binance.org/"
web3 = Web3(Web3.HTTPProvider(bsc))
print(web3.is_connected())
# Adresse du contrat du routeur PancakeSwap
panRouterContractAddress = '0x10ED43C718714eb63d5aA57B78B54704E256024E'
panabi = '[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]'
# Adresse du contrat de BNB (WBNB)
receive = web3.to_checksum_address("0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c")
# Configuration du contrat PancakeSwap
contract = web3.eth.contract(address=panRouterContractAddress, abi=panabi)
nonce = web3.eth.get_transaction_count(sender_address)
start = time.time()
# Conversion des adresses en format checksum
checksum_address_sender = web3.to_checksum_address(sender_address)
checksum_address_tokenToSell = web3.to_checksum_address(tokenToSell)
# Calcul du montant total du token
totaltoken = 1000000000000000000 * int(amountToken)
# Calcul du montant total de BNB à recevoir
totalBNB = (float(prixNative) * float(amountToken) * 0.99 - float(0.000737585))
# Création de la transaction pour l'échange de tokens contre BNB
pancakeswap2_txn = contract.functions.swapExactTokensForETH(
totaltoken, # Montant du token à vendre
0, # Montant minimum de BNB à recevoir (0 pour ignorer)
[checksum_address_tokenToSell, receive], # Adresses du contrat du token et du contrat BNB
checksum_address_sender, # Adresse de l'acheteur
(int(time.time()) + 10000) # Timestamp + 10000 (durée de validité de la transaction)
).build_transaction({
'from': checksum_address_sender,
'gas': 250000,
'gasPrice': web3.to_wei('5', 'gwei'),
'nonce': nonce,
})
# Signature et envoi de la transaction
signed_txn = web3.eth.account.sign_transaction(pancakeswap2_txn, private_key="xxx")
tx_token = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
print("TRX : " + web3.to_hex(tx_token))
trxfinal = web3.to_hex(tx_token)
return trxfinal
def buyToken(amountToken, sender_address, tokenToBuy, prixNative):
bsc = "https://bsc-dataseed.binance.org/"
web3 = Web3(Web3.HTTPProvider(bsc))
print(web3.is_connected())
#pancakeswap router #pancakeswap router abi
panRouterContractAddress = '0x10ED43C718714eb63d5aA57B78B54704E256024E'
panabi = '[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]'
#balance = web3.eth.get_balance(sender_address)
#humanReadable = web3.from_wei(balance,'ether')
#Contract Address of Token we want to buy
spend = web3.to_checksum_address("0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c") #wbnb contract
#Setup the PancakeSwap contract
contract = web3.eth.contract(address=panRouterContractAddress, abi=panabi)
nonce = web3.eth.get_transaction_count(sender_address)
start = time.time()
print(sender_address)
checksum_address_sender = web3.to_checksum_address(sender_address)
checksum_address_tokenToBuy = web3.to_checksum_address(tokenToBuy)
print(checksum_address_sender)
totaltoken = 1000000000000000000 * int(amountToken)
totalBNB = (float(prixNative) * float(amountToken) * 1.01 + float(0.000737585))
pancakeswap2_txn = contract.functions.swapETHForExactTokens(
totaltoken, # set to 0, or specify minimum amount of tokeny you want to receive - consider decimals!!!
# set to 0, or specify minimum amount of tokeny you want to receive - consider decimals!!!
[spend,checksum_address_tokenToBuy],
checksum_address_sender,
(int(time.time()) + 10000)
).build_transaction({
'from': checksum_address_sender,
'value': web3.to_wei(totalBNB,'ether'),#This is the Token(BNB) amount you want to Swap from
'gas': 250000,
'gasPrice': web3.to_wei('5','gwei'),
'nonce': nonce,
})
signed_txn = web3.eth.account.sign_transaction(pancakeswap2_txn, private_key="privatekey")
tx_token = web3.eth.send_raw_transaction(signed_txn.rawTransaction)
print("TRX : " + web3.to_hex(tx_token))
trxfinal = web3.to_hex(tx_token)
return trxfinal
while True:
time.sleep(1)
if prompt_token_address:
price_now = analyser_prix(prompt_token_address)
print(st.session_state.bool1)
prompt_addres_userBNB = "0xD7eA51d434D0897DE93400b43341FB3115585111"
prixNative = analyser_prixBNB(prompt_token_address)
if st.session_state.bool1:
print("CHECK PRICE TRADE 1")
if price_now > st.session_state.price1:
print("Trade Sell 1 : ")
#st.session_state.trx1 = sellToken(st.session_state.amount1, prompt_addres_userBNB, prompt_token_address, prixNative)
toggle_bool1()
reset_value(1)
st.write("Trade 1 done")
st.experimental_rerun()
if st.session_state.bool2:
print("CHECK PRICE TRADE 2")
if price_now > st.session_state.price2:
print("Trade Sell 2 : ")
#st.session_state.trx2 = sellToken(st.session_state.amount2, prompt_addres_userBNB, prompt_token_address, prixNative)
toggle_bool2()
st.write("Trade 2 done")
reset_value(2)
st.experimental_rerun()
if st.session_state.bool3:
print("CHECK PRICE TRADE 3")
if price_now > st.session_state.price3:
print("Trade Sell 3 : ")
#st.session_state.trx3 = sellToken(st.session_state.amount3, prompt_addres_userBNB, prompt_token_address, prixNative)
toggle_bool3()
reset_value(3)
st.experimental_rerun()
if st.session_state.bool4:
print("CHECK PRICE TRADE 4")
if price_now < st.session_state.price4 and st.session_state.price4 > 0:
print("Trade BUY 4 : ")
#st.session_state.trx4 = buyToken(st.session_state.amount4, prompt_addres_userBNB, prompt_token_address, prixNative)
toggle_bool4()
reset_value(4)
st.experimental_rerun()
if st.session_state.bool5:
print("CHECK PRICE TRADE 5")
if price_now < st.session_state.price5 and st.session_state.price5 > 0:
print("Trade BUY 5 : ")
#st.session_state.trx5 = buyToken(st.session_state.amount5, prompt_addres_userBNB, prompt_token_address, prixNative)
toggle_bool5()
reset_value(5)
st.experimental_rerun()
if st.session_state.bool6:
print("CHECK PRICE TRADE 6")
if price_now < st.session_state.price6 and st.session_state.price6 > 0:
print("Trade BUY 6 : ")
#st.session_state.trx6 = buyToken(st.session_state.amount6, prompt_addres_userBNB, prompt_token_address, prixNative)
toggle_bool6()
reset_value(6)
st.experimental_rerun()
time.sleep(1)