⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.1
Server IP:
185.238.29.86
Server:
Linux server2 6.8.12-6-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-6 (2024-12-19T19:05Z) x86_64
Server Software:
nginx/1.18.0
PHP Version:
8.1.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
coinbot
/
View File Name :
kapat.py
import decimal import math import time from binance.client import Client from binance.enums import * from requests.exceptions import ConnectTimeout import pymysql def calculate_additional_quantity(position): position_size = float(position['positionAmt']) if position['positionSide'] == 'SHORT' else float(position['positionAmt']) * -1 if position_size >= 0: return 0 unrealized_profit = float(position['unRealizedProfit']) if position['positionSide'] == 'LONG' else float(position['unRealizedProfit'])*-1 notional = float(position['notional']) if position['positionSide'] == 'LONG' else float(position['notional'])*-1 maxnotional = float(position['maxNotionalValue']) avaible_avg_usdt=maxnotional-(notional+unrealized_profit) additional_quantity=avaible_avg_usdt/float(position['markPrice']) return round(additional_quantity, 5) def maliyetortala(client,position,usdt_balance,toplam,ayar): if position['symbol']=='RNDRUSDT': return position_side = 'BUY' if position['positionSide'] == 'LONG' else 'SELL' artis_miktari=float(position['positionAmt'])*10 if position['positionSide'] == 'LONG' else float(position['positionAmt'])*10*-1 max_artis = calculate_additional_quantity(position) decimal_part = abs(decimal.Decimal(str(float(position['positionAmt']))).as_tuple().exponent) entry_price = float(position['markPrice']) cuzdan_max = "{:.{}f}".format(math.ceil((float(usdt_balance) * int(position['leverage'])) / entry_price), decimal_part) artis_dolar=(artis_miktari * entry_price)/int(position['leverage']) if float(ayar['destek']) >= toplam: return print(position['symbol'],artis_miktari ,float(cuzdan_max) , max_artis , artis_dolar, toplam) if artis_miktari > float(cuzdan_max) or artis_miktari > max_artis or artis_dolar >= toplam: print(46) return if float(artis_miktari) > 0: order = client.futures_create_order( symbol=position['symbol'], side=position_side, positionSide=position['positionSide'], quantity=artis_miktari, type=ORDER_TYPE_MARKET ) return def yenipozisyonac(client,ayar,symbol,side,usdt_balance,entry_price): try: if symbol[0] == '1' or symbol=='BLURUSDT' or symbol=='BLUEBIRDUSDT': print(10) return position_side = 'BUY' if side == 'LONG' else 'SELL' miktar=float(ayar['margine']) if miktar > float(usdt_balance): print(76) return deger = client.futures_leverage_bracket(symbol=symbol)[0]['brackets'][0]['initialLeverage'] leverage = 20 if deger >= 20 else deger decimal_part = abs(decimal.Decimal(str(float(miktar))).as_tuple().exponent) quantity = "{:.{}f}".format(math.ceil((float(miktar) * int(leverage)) / entry_price), decimal_part) order = client.futures_create_order( symbol=symbol, side=position_side, positionSide=side, quantity=quantity, type=ORDER_TYPE_MARKET ) except ConnectTimeout: print("Bağlantı zaman aşımı hatası. Yeniden deneyin.") return def pozisyonac(client,position,usdt_balance,ayar): try: if position['symbol'][0] == '1' or position['symbol']=='BLURUSDT' or position['symbol']=='BLUEBIRDUSDT': print(10) return position_side = 'SELL' if position['positionSide'] == 'LONG' else 'BUY' miktar=float(ayar['margine']) if miktar > float(usdt_balance): print(76) return decimal_part = abs(decimal.Decimal(str(float(position['positionAmt']))).as_tuple().exponent) tersyon='SHORT' if position['positionSide']=='LONG' else 'LONG' entry_price = float(position['markPrice']) quantity = "{:.{}f}".format(math.ceil((float(miktar) * int(position['leverage'])) / entry_price), decimal_part) order = client.futures_create_order( symbol=position['symbol'], side=position_side, positionSide=tersyon, quantity=quantity, type=ORDER_TYPE_MARKET ) except ConnectTimeout: print("Bağlantı zaman aşımı hatası. Yeniden deneyin.") return def close_positions_with_high_roi(ayar): while True: pozisyonlar=[] client = Client(ayar['binanceapikey'], ayar['binancesecretkey']) usdt_balance = client.futures_account()['availableBalance'] positions = client.futures_position_information() acc=client.futures_account_balance() for item in acc: if item['asset']=='USDT': balance=float(item['balance']) for position in positions: positionSide=position['positionSide'] position_size = float(position['positionAmt']) if positionSide=='LONG' else float(position['positionAmt'])*-1 if position_size <= 0: continue pozisyonlar.append(position['symbol']) islem.execute('SELECT * from coinlist where isActive=1') listem=islem.fetchall() toplam=balance-((float(ayar['margine'])*11*float(ayar['ortalamasay']))+((len(listem)-float(ayar['ortalamasay']))*float(ayar['margine']))) baglanti.commit() if listem is not None: for item in listem: if item['symbol'] not in pozisyonlar: entry_price = float(client.get_symbol_ticker(symbol=item['symbol'])['price']) yenipozisyonac(client,ayar,item['symbol'],'LONG',usdt_balance,entry_price) for position in positions: symbol = position['symbol'] position_size = float(position['positionAmt']) if position['positionSide']=='LONG' else float(position['positionAmt'])*-1 if position_size <= 0: continue unrealized_profit = float(position['unRealizedProfit']) notional = float(position['notional']) leverage = int(position['leverage']) roi = (unrealized_profit / (notional / leverage)) * 100 current_roi = round(roi, 2) if position['positionSide']=='LONG' else round(roi, 2)*-1 islem.execute('SELECT * from coinlist where isActive=1 and symbol=%s',symbol) dbquery=islem.fetchone() baglanti.commit() if dbquery is not None: if position['positionSide']=='LONG': if current_roi > float(dbquery['highroi']): islem.execute('UPDATE coinlist set highroi=%s where id=%s',(current_roi,dbquery['id'])) baglanti.commit() high_roi=current_roi else: high_roi=float(dbquery['highroi']) target_roi=high_roi - float(ayar['tp']) elif position['positionSide']=='SHORT': if current_roi > float(dbquery['deeproi']): islem.execute('UPDATE coinlist set deeproi=%s where id=%s',(current_roi,dbquery['id'])) baglanti.commit() deep_roi=current_roi else: deep_roi=float(dbquery['deeproi']) target_roi=deep_roi - float(ayar['tp']) if current_roi <=float(ayar['maliyet']): maliyetortala(client,position,usdt_balance,toplam,ayar) continue if current_roi <= target_roi and current_roi >=int(ayar['hedef']): p_side='SELL' if position['positionSide']=='LONG' else 'BUY' client.futures_create_order( symbol=symbol, side=p_side, positionSide=position['positionSide'], quantity=position_size, type=ORDER_TYPE_MARKET, ) islem.execute('update coinlist set highroi=0,deeproi=0 where symbol=%s',symbol) baglanti.commit() pozisyonac(client,position,usdt_balance,ayar) print(f"Yüksek ROI ({current_roi}%) ile {symbol} paritesindeki {position['positionSide']} pozisyon kapatıldı.") client.close_connection() time.sleep(1) # Saniyede bir kontrol etmek için 1 saniye bekle try: baglanti = pymysql.connect( host='127.0.0.1', db='coinbot', user='root', password='Ua04420076*', port=3306, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor ) with baglanti.cursor() as islem: islem.execute('SELECT * from settings where id=1') ayar=islem.fetchone() baglanti.commit() close_positions_with_high_roi(ayar) finally: # Veritabanı bağlantısını kapat if 'baglanti' in locals(): baglanti.close() # Programı sonlandır #sys.exit()