• 13-02-2025, 02:24:23
    #1
    mantık şudur

    rsi 7 gün 35 al sat 65 üstü sat

    forma girdiğiniz değerler üzerinden 2 dakikada bir işlem açar

    İşlem Yapılacak Birim: XRPUSDT yada CGPTUSDT yada hangi birimleri kullanıyorsanız DOGEUSDT gibi gibi yazın ( BÜYÜK HARFLERLE)

    İşlem Miktarı: %10 30 50 70 100 elinizdeki birimin ne kadarı ile işlem yapacaksanız

    botu çalıştır dediğinizde siz durdurana kadar 2 dakikada bir işlem açar.

    lokal hostta denemelerini yaptım kar yada zarar etmedim riskli işlem seviyorsanız ona göre botu düzenleyebilir / düzenletebilirsiniz..



    index.html

    <!DOCTYPE html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Trading Bot</title>
        <!-- jQuery ekleyin -->
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
        <style>
            body {
                font-family: Arial, sans-serif;
                margin: 20px;
            }
            #output {
                margin-top: 20px;
                padding: 10px;
                background-color: #f9f9f9;
                border: 1px solid #ddd;
                border-radius: 5px;
            }
            button {
                margin-top: 10px;
            }
        </style>
    </head>
    <body>
        <h1>Otomatik Trading Botu</h1>
        <form id="botForm">
            <label for="symbol">İşlem Yapılacak Birim:</label>
            <input type="text" name="symbol" id="symbol" required placeholder="Örnek: CGPTUSDT">
            <br><br>
            <label for="tradePercentage">İşlem Miktarı:</label>
            <select name="tradePercentage" id="tradePercentage" required>
                <option value="10">%10</option>
                <option value="30">%30</option>
                <option value="50">%50</option>
                <option value="70">%70</option>
                <option value="100">%100</option>
            </select>
            <br><br>
            <button type="submit" id="startButton">Botu Başlat</button>
            <button type="button" id="stopButton" disabled>Botu Durdur</button>
        </form>
        <div id="output"></div>
    
        <script>
            $(document).ready(function() {
                let intervalId = null; // Interval ID'sini saklamak için
    
                // Botu başlat
                $('#botForm').on('submit', function(e) {
                    e.preventDefault(); // Formun sayfayı yenilemesini engelle
    
                    const symbol = $('#symbol').val();
                    const tradePercentage = $('#tradePercentage').val();
    
                    // Başlat butonunu devre dışı bırak, Durdur butonunu etkinleştir
                    $('#startButton').prop('disabled', true);
                    $('#stopButton').prop('disabled', false);
    
                    // İlk işlemi hemen yap
                    runBot(symbol, tradePercentage);
    
                    // 5 dakikada bir işlem yap
                    intervalId = setInterval(function() {
                        runBot(symbol, tradePercentage);
                    }, 1 * 60 * 1000); // 5 dakika = 300.000 milisaniye
                });
    
                // Botu durdur
                $('#stopButton').on('click', function() {
                    if (intervalId !== null) {
                        clearInterval(intervalId); // Interval'i temizle
                        intervalId = null;
                        $('#output').append('<p>Bot durduruldu.</p>');
                    }
    
                    // Durdur butonunu devre dışı bırak, Başlat butonunu etkinleştir
                    $('#startButton').prop('disabled', false);
                    $('#stopButton').prop('disabled', true);
                });
    
                // Botu çalıştır
                function runBot(symbol, tradePercentage) {
                    $.ajax({
                        url: 'bot.php',
                        type: 'POST',
                        data: {
                            symbol: symbol,
                            tradePercentage: tradePercentage
                        },
                        success: function(response) {
                            $('#output').append('<p>' + response + '</p>'); // Yanıtı ekrana ekle
                        },
                        error: function(xhr, status, error) {
                            $('#output').append('<p style="color: red;">Bir hata oluştu: ' + error + '</p>');
                        }
                    });
                }
            });
        </script>
    </body>
    </html>
    bot.php

    <?php
    
    // config.php dosyasını include et
    require_once 'config.php';
    
    // Binance API isteği gönderen fonksiyon
    function binanceRequest($url, $params = [], $method = 'GET', $isPrivate = false) {
        global $api_key, $api_secret;
    
        // Parametreleri query string'e çevir
        $query = http_build_query($params, '', '&');
        
        // Eğer private endpoint ise imza ekle
        if ($isPrivate) {
            $signature = hash_hmac('sha256', $query, $api_secret);
            $query .= "&signature=$signature";
        }
    
        // API endpoint'i oluştur
        $endpoint = "https://api.binance.com$url?$query";
    
        // cURL başlat
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $endpoint);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            "X-MBX-APIKEY: $api_key"
        ]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
    
        // CA sertifikası kullan
        curl_setopt($ch, CURLOPT_CAINFO, 'D:\lokal\www\kripto_bot\cacert.pem');
    
        // İsteği gönder ve yanıtı al
        $response = curl_exec($ch);
    
        // Hata kontrolü
        if (curl_errno($ch)) {
            return 'cURL Hatası: ' . curl_error($ch);
        }
    
        // cURL'i kapat
        curl_close($ch);
    
        // Yanıtı JSON olarak decode et
        return json_decode($response, true);
    }
    
    // Belirli bir birimin fiyatını al
    function getPrice($symbol) {
        $ticker = binanceRequest('/api/v3/ticker/price', ['symbol' => $symbol]);
        return $ticker['price'] ?? null;
    }
    
    // RSI hesapla
    function calculateRsi($symbol, $period = 14) {
        $klines = binanceRequest('/api/v3/klines', [
            'symbol' => $symbol,
            'interval' => '15m', // 5 dakikalık mum verileri
            'limit' => $period + 1
        ]);
    
        if (empty($klines)) {
            return null;
        }
    
        $gains = [];
        $losses = [];
    
        for ($i = 1; $i < count($klines); $i++) {
            $change = (float)$klines[$i][4] - (float)$klines[$i - 1][4]; // Kapanış fiyatları arasındaki fark
            if ($change > 0) {
                $gains[] = $change;
                $losses[] = 0;
            } else {
                $gains[] = 0;
                $losses[] = abs($change);
            }
        }
    
        $avgGain = array_sum($gains) / $period;
        $avgLoss = array_sum($losses) / $period;
    
        if ($avgLoss == 0) {
            return 100;
        }
    
        $rs = $avgGain / $avgLoss;
        return 100 - (100 / (1 + $rs));
    }
    
    // Alım emri ver
    function placeBuyOrder($symbol, $quantity) {
        $params = [
            'symbol' => $symbol,
            'side' => 'BUY',
            'type' => 'MARKET', // Piyasa fiyatından alım
            'quantity' => $quantity,
            'timestamp' => round(microtime(true) * 1000)
        ];
        return binanceRequest('/api/v3/order', $params, 'POST', true);
    }
    
    // Satım emri ver
    function placeSellOrder($symbol, $quantity) {
        $params = [
            'symbol' => $symbol,
            'side' => 'SELL',
            'type' => 'MARKET', // Piyasa fiyatından satım
            'quantity' => $quantity,
            'timestamp' => round(microtime(true) * 1000)
        ];
        return binanceRequest('/api/v3/order', $params, 'POST', true);
    }
    
    // Bakiyeyi kontrol et
    function getBalance($asset) {
        $account = binanceRequest('/api/v3/account', [], 'GET', true);
    
        // Yanıtın geçerli olup olmadığını kontrol et
        if ($account === null || !isset($account['balances']) || !is_array($account['balances'])) {
            return 0; // Hata durumunda 0 döndür
        }
    
        foreach ($account['balances'] as $balance) {
            if ($balance['asset'] === $asset) {
                return (float)$balance['free'];
            }
        }
        return 0;
    }
    
    // Botun ana mantığı
    function runBot($symbol, $tradePercentage) {
        // Risk yönetimi ayarları
        $stopLossPercentage = 1; // Stop-loss yüzdesi (%1)
        $takeProfitPercentage = 2; // Take-profit yüzdesi (%2)
    
        // RSI ayarları
        $rsiPeriod = 7; // RSI periyodu
        $rsiBuyThreshold = 35; // RSI < 30 ise alım sinyali
        $rsiSellThreshold = 65; // RSI > 70 ise satım sinyali
    
        // Belirli bir birimin fiyatını al
        $price = getPrice($symbol);
        if ($price === null) {
            return "Fiyat bilgisi alınamadı.\n";
        }
    
        $output = "$symbol Güncel Fiyat: $price\n";
    
        // RSI hesapla
        $rsi = calculateRsi($symbol, $rsiPeriod);
        if ($rsi === null) {
            return "RSI hesaplanamadı.\n";
        }
    
        $output .= "RSI: $rsi\n";
    
        // USDT ve seçilen birimin bakiyesini kontrol et
        $usdtBalance = getBalance('USDT');
        $assetBalance = getBalance(explode('USDT', $symbol)[0]);
    
        // Alım-satım stratejisi
        if ($rsi < $rsiBuyThreshold && $usdtBalance > 0) {
            // Alım yap
            $quantity = ($usdtBalance * ($tradePercentage / 100)) / $price; // İşlem miktarı
            $output .= "Alım yapılıyor...\n";
            $result = placeBuyOrder($symbol, $quantity);
            $output .= print_r($result, true);
    
            // Stop-loss ve take-profit seviyelerini belirle (1:2 risk/getiri oranı)
            $stopLossPrice = $price * (1 - ($stopLossPercentage / 100));
            $takeProfitPrice = $price * (1 + ($takeProfitPercentage / 100));
            $output .= "Stop-Loss: $stopLossPrice, Take-Profit: $takeProfitPrice\n";
    
            // Satım koşullarını kontrol et
            while (true) {
                $currentPrice = getPrice($symbol);
                if ($currentPrice <= $stopLossPrice || $currentPrice >= $takeProfitPrice) {
                    $output .= "Satım yapılıyor...\n";
                    $result = placeSellOrder($symbol, $quantity);
                    $output .= print_r($result, true);
                    break;
                }
                sleep(10); // 10 saniye bekle
            }
        } elseif ($rsi > $rsiSellThreshold && $assetBalance > 0) {
            // Satım yap
            $quantity = $assetBalance * ($tradePercentage / 100); // İşlem miktarı
            $output .= "Satım yapılıyor...\n";
            $result = placeSellOrder($symbol, $quantity);
            $output .= print_r($result, true);
        } else {
            $output .= "İşlem yapılacak sinyal yok.\n";
        }
    
        return $output;
    }
    
    // Formdan gelen verileri al
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $symbol = $_POST['symbol'] ?? 'CGPTUSDT'; // Varsayılan: CGPTUSDT
        $tradePercentage = $_POST['tradePercentage'] ?? 50; // Varsayılan: %50
    
        // Botu çalıştır ve sonuçları döndür
        echo runBot($symbol, $tradePercentage);
    }
    
    ?>
    config.php

    <?php
    $api_key = 'api anahtarı buraya';
    $api_secret = 'scret key buraya';
    
    
    
    ?>
    binance api kütüphanesini indirin ve lokal host www / bot klasörünüz / klasörüne yükleyin

    kodun hata vermemesi için cacert.pem'i bot.php nin olduğu dizine yükleyin ve satırı düzenleyin

    curl_setopt($ch, CURLOPT_CAINFO, 'D:lokalwwwkripto_botcacert.pem');

    başarılar.



    Daha gelişmiş hali;

    index.php

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Kripto Alım-Satım Botu</title>
        <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
        <style>
            body {
                background-color: #f8f9fa;
            }
            .container {
                max-width: 600px;
                margin-top: 50px;
            }
            .form-group label {
                font-weight: bold;
            }
            #results {
                margin-top: 20px;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <h1 class="text-center mb-4">Kripto Alım-Satım Botu</h1>
            <form id="tradingForm">
                <div class="form-group">
                    <label for="asset">İşlem Yapılacak Birim (Örnek: XRPUSDT, BTCUSDT)</label>
                    <input type="text" class="form-control" id="asset" placeholder="Örnek: XRPUSDT" required>
                </div>
                <div class="form-group">
                    <label for="amount">İşlem Miktarı (%)</label>
                    <input type="number" class="form-control" id="amount" placeholder="Örnek: 50" min="1" max="100" required>
                </div>
                <button type="button" id="startBot" class="btn btn-success btn-block">Botu Başlat</button>
                <button type="button" id="stopBot" class="btn btn-danger btn-block">Botu Durdur</button>
            </form>
            <div id="results" class="mt-4"></div>
        </div>
    
        <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
        <script>
            $(document).ready(function() {
                // Botu Başlat Butonu
                $('#startBot').click(function() {
                    const asset = $('#asset').val().toUpperCase(); // Büyük harfe çevir
                    const amount = $('#amount').val();
    
                    if (!asset || !amount) {
                        alert('Lütfen tüm alanları doldurun!');
                        return;
                    }
    
                    $.post('bot.php', { action: 'start', asset: asset, amount: amount }, function(response) {
                        $('#results').html('<div class="alert alert-success">Bot başlatıldı: ' + asset + ' - %' + amount + '</div>');
                    }).fail(function() {
                        $('#results').html('<div class="alert alert-danger">Bot başlatılamadı!</div>');
                    });
                });
    
                // Botu Durdur Butonu
                $('#stopBot').click(function() {
                    $.post('bot.php', { action: 'stop' }, function(response) {
                        $('#results').html('<div class="alert alert-danger">Bot durduruldu!</div>');
                    }).fail(function() {
                        $('#results').html('<div class="alert alert-danger">Bot durdurulamadı!</div>');
                    });
                });
            });
        </script>
    </body>
    </html>
    bot.php
    <?php
    include 'config.php';
    require BINANCE_API_PATH . '/BinanceAPI.php';
    
    use BinanceAPI\BinanceAPI;
    
    $api = new BinanceAPI(BINANCE_API_KEY, BINANCE_SECRET_KEY);
    
    // Bot durumu
    $isRunning = false;
    
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        $action = $_POST['action'];
    
        if ($action === 'start') {
            $asset = $_POST['asset'];
            $amount = $_POST['amount'];
            $isRunning = true;
    
            while ($isRunning) {
                // Fiyat verilerini al
                $prices = $api->getPriceData($asset);
    
                // Teknik analizleri hesapla
                $rsi = calculateRSI($prices);
                $ema = calculateEMA($prices);
                $macd = calculateMACD($prices);
    
                // Alım/Satım mantığı
                if ($rsi < 30 && $ema > $macd) {
                    $order = placeOrder($asset, 'BUY', $amount);
                    logTransaction($asset, 'BUY', $amount, $order['price']);
                    applyStoploss($asset, $order['price']);
                } elseif ($rsi > 70 && $ema < $macd) {
                    $order = placeOrder($asset, 'SELL', $amount);
                    logTransaction($asset, 'SELL', $amount, $order['price']);
                }
    
                // 1 dakika bekle
                sleep(60);
            }
        } elseif ($action === 'stop') {
            $isRunning = false;
            echo 'Bot durduruldu!';
        }
    }
    
    function calculateRSI($prices, $period = 14) {
        // RSI hesaplama mantığı
        $gains = [];
        $losses = [];
    
        for ($i = 1; $i < count($prices); $i++) {
            $change = $prices[$i] - $prices[$i - 1];
            if ($change > 0) {
                $gains[] = $change;
                $losses[] = 0;
            } else {
                $gains[] = 0;
                $losses[] = abs($change);
            }
        }
    
        $avgGain = array_sum($gains) / $period;
        $avgLoss = array_sum($losses) / $period;
    
        $rs = $avgGain / $avgLoss;
        return 100 - (100 / (1 + $rs));
    }
    
    function calculateEMA($prices, $period = 10) {
        // EMA hesaplama mantığı
        $multiplier = 2 / ($period + 1);
        $ema = $prices[0];
    
        for ($i = 1; $i < count($prices); $i++) {
            $ema = ($prices[$i] - $ema) * $multiplier + $ema;
        }
    
        return $ema;
    }
    
    function calculateMACD($prices) {
        // MACD hesaplama mantığı
        $ema12 = calculateEMA($prices, 12);
        $ema26 = calculateEMA($prices, 26);
        return $ema12 - $ema26;
    }
    
    function placeOrder($asset, $type, $amount) {
        global $api;
        return $api->placeOrder($asset, $type, $amount);
    }
    
    function logTransaction($asset, $type, $amount, $price) {
        $conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
        $stmt = $conn->prepare("INSERT INTO transactions (asset, type, amount, price) VALUES (?, ?, ?, ?)");
        $stmt->bind_param("ssdd", $asset, $type, $amount, $price);
        $stmt->execute();
        $stmt->close();
        $conn->close();
    }
    
    function applyStoploss($asset, $entryPrice) {
        global $api;
        $currentPrice = $api->getPriceData($asset);
    
        $stoplossPrice = $entryPrice * (1 - STOPLOSS_PERCENT / 100);
        $takeProfitPrice = $entryPrice * (1 + TAKE_PROFIT_PERCENT / 100);
    
        if ($currentPrice <= $stoplossPrice || $currentPrice >= $takeProfitPrice) {
            $api->placeOrder($asset, 'SELL', 100); // %100 pozisyonu kapat
        }
    }
    ?>
    config.php
    <?php
    // Binance API Bilgileri
    define('BINANCE_API_KEY', 'your_api_key_here');
    define('BINANCE_SECRET_KEY', 'your_secret_key_here');
    
    // MySQL Veritabanı Bilgileri
    define('DB_HOST', 'localhost');
    define('DB_USER', 'root');
    define('DB_PASS', 'password');
    define('DB_NAME', 'trading_bot');
    
    // Binance API Kütüphanesi Yolu
    define('BINANCE_API_PATH', __DIR__ . '/binance-api-php');
    
    // Stoploss Ayarları
    define('STOPLOSS_PERCENT', 2); // %2 stoploss
    define('TAKE_PROFIT_PERCENT', 4); // %4 kar al
    ?>
    veritabanı
    CREATE TABLE transactions (
        id INT AUTO_INCREMENT PRIMARY KEY,
        asset VARCHAR(10) NOT NULL,
        type ENUM('BUY', 'SELL') NOT NULL,
        amount DECIMAL(10, 2) NOT NULL,
        price DECIMAL(20, 8) NOT NULL,
        timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    ne değişti ?

    rsi
    ema
    ve macd verileri analiz ederek
    %2 zarar sat %4 kar al yapıldı
    veriler veri tabanına yazıldı
    her işelm sonucu kar zarar takibi yapılabilir duruma getirildi
    • ucubirarada
    • Jonezz
    • Mehmetmasa
    ucubirarada, Jonezz, Mehmetmasa ve 4 kişi bunu beğendi.
    7 kişi bunu beğendi.
  • 13-02-2025, 02:27:05
    #2
    Hocam çalışmalarının daim olmasını dilerim ama bu tarz sadece yapay zekaya yazdırılan kodlarda genelde güvenlik kontrolleri olmaz bunu bi sunucuda çalıştırısanız api bilgileriniz riske girebilir yada başka güvenlik sorunları ortaya çıkabilir.
    Ayrıca bitek rsi değerine bakarak al sat yapmak çok mantıklı gelmedi be
  • 13-02-2025, 02:30:15
    #3
    cgrmetin adlı üyeden alıntı: mesajı görüntüle
    Hocam çalışmalarının daim olmasını dilerim ama bu tarz sadece yapay zekaya yazdırılan kodlarda genelde güvenlik kontrolleri olmaz bunu bi sunucuda çalıştırısanız api bilgileriniz riske girebilir yada başka güvenlik sorunları ortaya çıkabilir.
    Ayrıca bitek rsi değerine bakarak al sat yapmak çok mantıklı gelmedi be
    hocam çok şey ekledim ve ham kodları verdim sadece örnek olsun diye

    6 7 saattir uğraşıyorum grafikler dbler ekleme çıkarmalar formlar

    kısacası ben yol haritası verdim gerisi sizde
  • 13-02-2025, 02:44:28
    #4
    Misafir adlı üyeden alıntı: mesajı görüntüle
    hocam çok şey ekledim ve ham kodları verdim sadece örnek olsun diye

    6 7 saattir uğraşıyorum grafikler dbler ekleme çıkarmalar formlar

    kısacası ben yol haritası verdim gerisi sizde
    Bu deepseek kullanmak için illa üye mi olmak gerek arama kutusu yok mu chatgpt veya copilot gibi üyeliksiz
  • 13-02-2025, 04:59:08
    #5
    üye olmak gerek evet
  • 13-02-2025, 08:22:08
    #6
    Deepseek ten verim alabildiniz mi ?

    Bana biraz cevap süreleri çok uzun geldi
  • 13-02-2025, 19:40:03
    #7
    Mun adlı üyeden alıntı: mesajı görüntüle
    Deepseek ten verim alabildiniz mi ?

    Bana biraz cevap süreleri çok uzun geldi
    openai den daha kapsamlı ve keskin yanıtlar veriyor, kodlama konusunda daha iyi
    makale konusunda karışık promtralara daha net ve iyi yanıt veriyor
    ama kullanımı kısıtlı 1 konusmada maximum sınır çabuk geliyor.
    • Mun
    • altaysoft
    Mun ve bunu beğendi.
    2 kişi bunu beğendi.
  • 13-02-2025, 20:22:07
    #8
    günlük işlem sınırı kalktı son gelişmiş halini yayınladım
    ekleme çıkarmalar yapıp geliştirmeye devam edeceğim sunabileceğim son hali budur

    hata durumunda deepseek'den destek alın.

    her hangi bir sorumluluk kabul etmiyorum

    açık kaynak olduğu için geliştirmesi sizin elinizde
    sunucuda mutlak güvenlik sorunları oluşturabilir
    tüm testler localhost'da yapılmıştır ve localde kullanılmasını önerebilirim
    cpu vs kasmadığı için sabah başlatın akşam sonlandırın tek sayfa açık kaldığı sürece sürekli işlem yapacaktır kapatmadan botu durdurmayı yada wamp vb serveri kapatmayı unutmayın.

    başarılar.
  • 24-03-2025, 11:43:50
    #9
    Misafir adlı üyeden alıntı: mesajı görüntüle
    günlük işlem sınırı kalktı son gelişmiş halini yayınladım
    ekleme çıkarmalar yapıp geliştirmeye devam edeceğim sunabileceğim son hali budur

    hata durumunda deepseek'den destek alın.

    her hangi bir sorumluluk kabul etmiyorum

    açık kaynak olduğu için geliştirmesi sizin elinizde
    sunucuda mutlak güvenlik sorunları oluşturabilir
    tüm testler localhost'da yapılmıştır ve localde kullanılmasını önerebilirim
    cpu vs kasmadığı için sabah başlatın akşam sonlandırın tek sayfa açık kaldığı sürece sürekli işlem yapacaktır kapatmadan botu durdurmayı yada wamp vb serveri kapatmayı unutmayın.

    başarılar.

    hocam bu konuda bıraz cahılım bu bot bınancede al satmı yapıyor ksıaca ozetlersek ornek verıyorum
    100 dolar var bıtcoın alım satımına ışlem mı yapıyor ornek %20 kar koyduk gunluk 100 dolarlık btc yı alt fıyattan alıp %20 kar koyup otomatık mı satıyor ve bu işleme aksama kadar veya ben dur dıyene kadar devam mı edıyor eğer zararına satarsa ozamna parayı çöp etmezmi?
    eğer boyle ıse gunluk 100 dolar kar ettırsek aylık 100 bın tl para yapar ve muthış bı rakam ama bunu bınance bılmıyor mu bu bızım aklımıza gelıyor da baskasının aklına gelmıyor mu?