Tüm bakiye çarpı kaldıraç

abilerim ablalarım binance global futures pozisyon açarken parayı pozisyon sayısına bölüyor o kadar kod denedim başarılı olamadım yardımcı olurmusunuz chat gp de daha önce yazmıştı tüm bakiye çarpı kaldıraç pozisyon açıyordum kodu saklamadım kalabalıkda silindi gitti

if bullish_divergence:
if long_position is None:
balance = exchange.fetch_balance()[‘USDT’][‘free’]
if balance > 0:
leverage = 3 # 3x kaldıraç kullanıyoruz
exchange.set_leverage(leverage, symbol) # Kaldıraç ayarı

        amount_usdt = balance * leverage  # Kaldıraçlı işlem miktarı
        amount = amount_usdt / df['close'].iloc[-1]
        
        print("Long pozisyon açılıyor...")
        order = exchange.create_market_order(symbol, 'buy', amount, params={"leverage": leverage})
        long_position = order  # Long pozisyon açıldı

Lütfen yanlış anlamayın. Olayı (probleminizi) sadece ben mi anlamadım bilmiyorum fakat gerçekten anlamadım. Hangi işle uğraşıyorsanız bu forumdaki kişiler de sizle aynı işle uğraşıyormuş da hemen anlarlar nasıl olsa gibi yazmışsınız probleminizi.

Birkaç kez okudum, belki gerçekten yardımcı olabilirim diye.

Tam olarak ne yapmaya çalışıyorsunuz? Hatalı çalıştığını ifade ettiğiniz fonksiyonu matematiksel olarak açık ve net bir şekilde formulize eder misiniz lütfen? Kollarınızı tam ve net olarak paylaşır mısınız? Hangi paket/ modül bağımlılıkları, hangi sınıf ve metotlar kullanılıyor? Belki o zaman daha hızlı ilerleyebiliriz.

Bu arada bu gerçekten bilinen birşey de ben cahilliğimden dolayı bilmiyorsam özür dilerim :sweat_smile:

şimdi bunu deniyorum henüz al sinyali gelmedi

Kaldıraçlı bakiye, tüm bakiye kullanılıyor

                    amount_usdt = balance * leverage # Kaldıraçlı bakiye
                    amount = round(amount_usdt / df['close'].iloc[-1], 8) # Hassasiyet 8 basamak
                    current_price = df['close'].iloc[-1] # Debug print
                    print(f"Kullanılacak bakiye (USDT): {amount_usdt}, İşlem miktarı ({symbol}): {amount}, Anlık fiyat: {current_price}") # Debug print
                    print("Long pozisyon açılıyor...")
                    order = exchange.create_market_order(symbol, 'buy', amount)
                    long_position = order # order objesini tutmaya devam et, None kontrolü için yeterli
                    position_amount = amount

import ccxt
import pandas as pd
import time
from datetime import datetime

Binance Futures API Bilgileri (Kendi API bilgilerinizle değiştirin!)

exchange = ccxt.binance({
‘apiKey’: ‘xxxxx’, # Buraya API anahtarınızı girin
‘secret’: ‘xxxxx’, # Buraya secret anahtarınızı girin
‘enableRateLimit’: True,
‘options’: {
‘defaultType’: ‘future’
}
})

Parametreler

rsi_period = 10
symbol = ‘1000PEPE/USDT’ # İşlem sembolü
timeframe = ‘1m’ # Dakikalık grafik (1 dakika)
divergence_period = 60 # Uyumsuzluk kontrolü için geçmiş periyot sayısı
leverage = 4 # Kaldıraç oranını belirleyin

def calculate_rsi(data, period):
“”“RSI (Göreceli Güç Endeksi) hesaplar.”“”
delta = data.diff()
up, down = delta.copy(), delta.copy()
up[up < 0] = 0
down[down > 0] = 0
roll_up = up.rolling(period).mean()
roll_down = down.abs().rolling(period).mean()
rs = roll_up / roll_down
rsi_val = 100.0 - (100.0 / (1.0 + rs))
return rsi_val

def check_divergence(df, divergence_period):
“”“Uyumsuzluk (Divergence) koşullarını kontrol eder.”“”
high_prices = df[‘high’].iloc[-divergence_period:].values
low_prices = df[‘low’].iloc[-divergence_period:].values
rsi_values = df[‘rsi’].iloc[-divergence_period:].values

bearish_divergence = False
bullish_divergence = False

# Ayı Uyumsuzluğu (Bearish Divergence) Kontrolü
if high_prices[-1] > max(high_prices[:-1]) and rsi_values[-1] < max(rsi_values[:-1]):
    bearish_divergence = True

# Boğa Uyumsuzluğu (Bullish Divergence) Kontrolü
if low_prices[-1] < min(low_prices[:-1]) and rsi_values[-1] > min(rsi_values[:-1]):
    bullish_divergence = True

return bullish_divergence, bearish_divergence

def run_strategy():
long_position = None # Long pozisyon durumunu takip etmek için
position_amount = 0

# Kaldıraç oranı ayarı
try:
    exchange.set_leverage(leverage, symbol)
    print(f"Kaldıraç {leverage}x olarak ayarlandı.")
except Exception as e:
    print(f"Kaldıraç ayarlanırken hata oluştu: {e}")

# Başlangıçta açık pozisyon kontrolü
try:
    positions = exchange.fetch_positions([symbol]) # Tek sembol için pozisyonları getir
    for position in positions:
        if position['symbol'] == symbol and position['side'] == 'long' and position['contracts'] > 0:
            long_position = True # Açık pozisyon bulundu
            position_amount = position['contracts'] # Pozisyon miktarını al
            print(f"Başlangıçta açık long pozisyon bulundu. Miktar: {position_amount}")
            break # Sembol için pozisyon bulunduğunda döngüden çık
except Exception as e:
    print(f"Pozisyon kontrolü sırasında hata oluştu: {e}")

while True:
    try:
        ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=rsi_period + divergence_period)
        df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
        df['rsi'] = calculate_rsi(df['close'], rsi_period)

        bullish_divergence, bearish_divergence = check_divergence(df, divergence_period)

        now = datetime.now()
        current_time = now.strftime("%H:%M:%S")

        if bullish_divergence:
            if long_position is None: # long_position == None yerine long_position is None daha doğru
                balance = exchange.fetch_balance()['USDT']['free']
                print(f"Boğa Uyumsuzluğu Tespit Edildi. Saat: {current_time}, Mevcut bakiye (USDT): {balance}") # Debug print
                if balance > 0:
                    # Kaldıraçlı bakiye, tüm bakiye kullanılıyor
                    amount_usdt = balance * leverage # Kaldıraçlı bakiye
                    amount = round(amount_usdt / df['close'].iloc[-1], 8) # Hassasiyet 8 basamak
                    current_price = df['close'].iloc[-1] # Debug print
                    print(f"Kullanılacak bakiye (USDT): {amount_usdt}, İşlem miktarı ({symbol}): {amount}, Anlık fiyat: {current_price}") # Debug print
                    print("Long pozisyon açılıyor...")
                    order = exchange.create_market_order(symbol, 'buy', amount)
                    long_position = order # order objesini tutmaya devam et, None kontrolü için yeterli
                    position_amount = amount

        if bearish_divergence:
            if long_position is not None: #  long_position != None yerine long_position is not None daha doğru
                if position_amount > 0: # position_amount > 0 kontrolü gereksiz gibi duruyor ama kalsın şimdilik
                    print(f"Ayı Uyumsuzluğu Tespit Edildi. Saat: {current_time}, Long pozisyon kapatılıyor... Miktar: {position_amount}")
                    order = exchange.create_market_order(symbol, 'sell', position_amount)
                    long_position = None
                    position_amount = 0
                    print("Long pozisyon tamamen kapatıldı.")
            else:
                print(f"Sat sinyali geldi (Long pozisyon yok). Saat: {current_time}") # Eklenen satır

    except ccxt.NetworkError as e:
        print(f"Ağ hatası oluştu: {e}")
    except ccxt.ExchangeError as e:
        print(f"Borsa hatası oluştu: {e}")
    except Exception as e:
        print(f"Hata oluştu: {e}")

    time.sleep(10)
    print("BEKLEME..........")

if name == ‘main’:
run_strategy()

kodun tamamını ekledim ustam

futures cüzdan da 30 dolarım varsa long sinyali geldiğinde 5 kaldıraç çarpı 150 dolarlık pozisyon açmam gerekirken binance 30 doları 5 e bölüyor 5 dolarlık pozisyon açtırıyor

Özür dilerim, alttaki bağlantıyı inceleyiniz lütfen. Böylede kodlar daha anlaşılır ve test edilebilir olur

Bir borsa robotuna benziyor. Programlama ile ilgili soru sorarken, herkesin borsa terimlerine hakim olduğunu düşünmek iyimser bir yaklaşım olur. Global future position açmak konusunu programcıların bildiğini düşünmek de iyimser kaçar.

Konu parasal bir mevzu ve herkesin binance vs hesabı olmadığını düşünürsek bu kodların denenmesi de oldukça zor olacaktır.

Yani çalışırlığını test etmek için bile ayrıca test kodu yazmak gerekiyor.

Ya kodun tamamını görüp, nasıl çalıştığını tek tek incelemek gerekir yada sorununuzu daha netleştirmek için çaba sarfetmeniz gerekir.

Zaten sorununuzu adım adım cümleler haline getirdiğinizde kodlanabilirliğin kolaylaştığını göreceksiniz.

Mesela bu bölme istediğiniz bir şey mi istemediğiniz bir şey mi?

İstemiyorsanız bu bölmeyi yaptığı satırı bulup bu bölmeyi kaldırırsınız.

İstediğiniz bir durum mu bu durumda bu satırı bulup istediğiniz sayıya bölersiniz.

Olaya trade yönünden bakarsak durum daha da farklı.

Hangisi önceliğiniz?

Yükseldiğinde spot satmak mı istersiniz, yoksa koşulunuza göre viop ta ters vade mi açmak istersiniz bu kararları nerede tutuyorsunuz.

Önceliğiniz hangisi bir sürü koşul var.

Kısıtlar oluşturup algoritmanızı ( algoritma kelimesini kullanmaktan nefret ederim.) oluştırmadan bir akış şeması oluşturup hangi koşulda ne yapmasını istediğinizi bir grafik akış şeması haline getirirseniz, kodlaması çocuk oyuncağı olur.

Aksi halde:

Değişkeninizin değerinin bile ne olduğunu ve nereden alığını dahi anlamıyorum, göremiyorum.

Benzer bir kaç sorunuza rastladım ondan dolayı yazıyorum. Ciddi mali bir işle uğraşırken rastgele kod parçalarınıza çözüm ararsanız bütünü göremediğimizden yanlış kodlar önerebiliriz.

Siz kaldıraçlı işlem yapmayı beklerken, alış yada satış kararları almasına neden olabiliriz kodun.

O kadar okudum şu cümlenizden bölsün mü bölmesin mi istiyorsunuz anlayamadım. Dolaylı yoldan bölüyorsa ve denedim başarılı olamadım deyince herhalde bölünmesini istemiyor gibi dolaylı yoldan tahmin yapabiliyorum.

Şu soruları ne kadar net ve anlaşılır sorarsanız çözüm bulma şansınız o derece açık ve çabuk olur.

Kolay gelsin.