yok 300$ ver gruba gir
yok referansımla kaydol 500$ yatır yok bilmem ne
olmadı herkese bot 100$
dünya kadar kafa patlattım emek verdim benden yana helaldir.
satmaya çalışmamanız, insanlara zarar vermemeniz halinde.
Localhostta kurun sakin sakin analiz yapın yol gösterir iyi kötü işleme siz karar vereceksiniz yine ..
Hosting'e yüklerseniz güvenlik açığı oluşacaktır bu bakımdan backend dosyasını saklayın veya api anahtarını girmeyin veya güvenlik kodu login vs birşey yapın işte

scriptin yaptığı yapacağı hatalı analiz yada alacağınız işlemlerden kendiniz sorumlusunuz.
Kripto çok risklidir paranızı hızla tamamen kaybedebilirsiniz.
küçük rakamlarla test ediniz 10$ 2x 3x gibi..
Analiz için sadece dosyaları oluşturup bir dizine atın ekstra ayara gerek yoktur hepsi api üzerinden olduğu için yormaz sizi.
analiz sonrası işlem açmak için api anahtarına ihtiyacınız olacak, api almayı bile bilmiyorsanız zaten bu işlere kalkışmayın, nasıl alınacağını anlatmayacağım.
api anahtarınızı ve screet key'inizi backend.php dosyası içerisinden değiştiriniz.
analizinizi ve işleminizi saniyeler içinde yapabilirsiniz.
scriptin kurulumu yada kullanımıyla ilgili her hangi bir destek verilmeyecektir.
konu altına sorarsanız gördükçe yanıtlarım.
Neyi analiz ediyor bu script derseniz;

buda bonusu tradingview de benden bedave!

Geçelim kodlara rar zip vs vermeyeceğim direk apaçık kaynak birinci elden..
index.php
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Binance Teknik Analiz Sistemi</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<!-- TradingView Widget Script -->
<script type="text/javascript" src="https://s3.tradingview.com/tv.js"></script>
<script src="script.js"></script>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
padding: 20px;
}
.container {
max-width: 1200px;
margin: 0 auto;
background: white;
border-radius: 15px;
box-shadow: 0 20px 40px rgba(0,0,0,0.1);
overflow: hidden;
}
.header {
background: linear-gradient(135deg, #2c3e50 0%, #34495e 100%);
color: white;
padding: 30px;
text-align: center;
}
.header h1 {
font-size: 2.5em;
margin-bottom: 10px;
}
.header p {
opacity: 0.9;
font-size: 1.1em;
}
.form-section {
padding: 20px;
background: #f8f9fa;
}
.form-grid {
display: flex;
flex-wrap: wrap;
gap: 5px;
margin-bottom: 15px;
}
.form-group {
flex: 1 1 150px;
min-width: 0;
margin-right: 5px;
display: flex;
flex-direction: column;
}
.form-group label {
font-weight: 600;
margin-bottom: 3px;
color: #2c3e50;
font-size: 12px;
}
.form-group input, .form-group select {
padding: 5px;
border: 1px solid #e9ecef;
border-radius: 4px;
font-size: 13px;
transition: border-color 0.3s;
}
.form-group input:focus, .form-group select:focus {
outline: none;
border-color: #667eea;
}
.btn {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 15px 30px;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: transform 0.2s;
}
.btn:hover {
transform: translateY(-2px);
}
.btn:disabled {
opacity: 0.6;
cursor: not-allowed;
transform: none;
}
.results {
padding: 40px;
display: none;
}
.score-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 30px;
margin-bottom: 30px;
}
.score-card {
background: white;
border-radius: 15px;
padding: 25px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
text-align: center;
}
.score-card.long {
border-left: 5px solid #27ae60;
}
.score-card.short {
border-left: 5px solid #e74c3c;
}
.score-value {
font-size: 3em;
font-weight: bold;
margin: 15px 0;
}
.score-card.long .score-value {
color: #27ae60;
}
.score-card.short .score-value {
color: #e74c3c;
}
.indicators-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
margin-bottom: 30px;
}
.indicator-card {
background: white;
border-radius: 10px;
padding: 20px;
box-shadow: 0 5px 15px rgba(0,0,0,0.08);
}
.indicator-header {
display: flex;
justify-content: between;
align-items: center;
margin-bottom: 15px;
}
.indicator-name {
font-weight: 600;
color: #2c3e50;
}
.signal-badge {
padding: 5px 12px;
border-radius: 20px;
font-size: 12px;
font-weight: 600;
text-transform: uppercase;
}
.signal-badge.long {
background: #d4edda;
color: #155724;
}
.signal-badge.short {
background: #f8d7da;
color: #721c24;
}
.signal-badge.neutral {
background: #e2e3e5;
color: #383d41;
}
.tp-sl-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.tp-sl-card {
background: white;
border-radius: 10px;
padding: 20px;
box-shadow: 0 5px 15px rgba(0,0,0,0.08);
}
.loading {
text-align: center;
padding: 40px;
display: none;
}
.spinner {
border: 4px solid #f3f3f3;
border-top: 4px solid #667eea;
border-radius: 50%;
width: 50px;
height: 50px;
animation: spin 1s linear infinite;
margin: 0 auto 20px;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.error {
background: #f8d7da;
color: #721c24;
padding: 15px;
border-radius: 8px;
margin: 20px 0;
display: none;
}
.trade-buttons {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-top: 30px;
}
.trade-btn {
padding: 15px;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s;
}
.trade-btn.long {
background: #27ae60;
color: white;
}
.trade-btn.short {
background: #e74c3c;
color: white;
}
.trade-btn:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}
/* TradingView Widget Stilleri */
.tradingview-widgets {
margin-bottom: 30px;
}
@media (max-width: 1200px) {
.tradingview-widgets {
grid-template-columns: 1fr;
}
}
.widget-container {
background: white;
border-radius: 10px;
padding: 10px;
box-shadow: 0 5px 15px rgba(0,0,0,0.08);
overflow: hidden;
}
#tradingview_price_chart,
#tradingview_tech_analysis {
height: 100%;
width: 100%;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>🚀 Binance Teknik Analiz</h1>
<p>Canlı verilerle Long/Short pozisyon analizi</p>
</div>
<div class="form-section">
<form id="analysisForm">
<div class="form-grid">
<div class="form-group">
<label for="symbol">İşlem Çifti</label>
<input type="text" id="symbol" name="symbol" value="" required>
</div>
<div class="form-group">
<label for="timeframe">Zaman Dilimi</label>
<select id="timeframe" name="timeframe" required>
<option value="1m">1 Dakika</option>
<option value="3m" selected>3 Dakika</option>
<option value="5m">5 Dakika</option>
<option value="15m">15 Dakika</option>
<option value="30m">30 Dakika</option>
<option value="1h">1 Saat</option>
<option value="4h">4 Saat</option>
<option value="8h">8 Saat</option>
<option value="12h">12 Saat</option>
<option value="1d">1 Gün</option>
</select>
</div>
<div class="form-group">
<label for="amount">Miktar (USDT)</label>
<input type="number" id="amount" name="amount" min="10" value="" required>
</div>
<div class="form-group">
<label for="tpAmount">TP Miktarı (USDT)</label>
<input type="number" id="tpAmount" name="tpAmount" min="0.1" step="0.1" value="">
</div>
<div class="form-group">
<label for="slAmount">SL Miktarı (USDT)</label>
<input type="number" id="slAmount" name="slAmount" min="0.1" step="0.1" value="">
</div>
</div>
<button type="submit" class="btn" id="analyzeBtn">
📊 Analiz Et
</button>
</form>
</div>
<div class="loading" id="loading">
<div class="spinner"></div>
<p>Binance API'den veriler çekiliyor ve analiz ediliyor...</p>
</div>
<div class="error" id="error"></div>
<div class="results" id="results">
<h2 style="text-align: center; margin-bottom: 30px; color: #2c3e50;">📈 Analiz Sonuçları</h2>
<div class="score-grid">
<div class="score-card long">
<h3>LONG Güven Skoru</h3>
<div class="score-value" id="longScore">0</div>
<p>/ 100</p>
</div>
<div class="score-card short">
<h3>SHORT Güven Skoru</h3>
<div class="score-value" id="shortScore">0</div>
<p>/ 100</p>
</div>
</div>
<h3 style="margin-bottom: 20px; color: #2c3e50;">🔍 Teknik İndikatörler</h3>
<div class="indicators-grid" id="indicators"></div>
<h3 style="margin-bottom: 20px; color: #2c3e50;">🎯 TP/SL Önerileri</h3>
<div class="tp-sl-grid" id="tpslGrid"></div>
<h3 style="margin: 30px 0 20px; color: #2c3e50;">📈 TradingView Grafikleri</h3>
<div class="tradingview-widgets">
<div class="widget-container" style="width:100%;max-width:100%;">
<div class="tradingview-widget-container" id="tradingviewChart">
<div id="tradingview_price_chart"></div>
</div>
</div>
</div>
<div class="trade-buttons">
<button class="trade-btn long" onclick="executeTrade('long')">
📈 LONG Pozisyon Aç
</button>
<button class="trade-btn short" onclick="executeTrade('short')">
📉 SHORT Pozisyon Aç
</button>
</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>api.php<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['error' => 'Method not allowed']);
exit;
}
$input = json_decode(file_get_contents('php://input'), true);
$symbol = strtoupper($input['symbol'] ?? 'BTCUSDT');
$timeframe = $input['timeframe'] ?? '15m';
$amount = floatval($input['amount'] ?? 100);
// Hassas sayı formatı için yardımcı fonksiyon
function formatNumber($value, $precision = 8) {
if (is_array($value)) {
foreach ($value as $key => $val) {
$value[$key] = formatNumber($val, $precision);
}
return $value;
}
return is_numeric($value) ? round((float)$value, $precision) : $value;
}
// Binance Futures API'den veri çekme
function fetchBinanceData($symbol, $interval, $limit = 200) {
// Symbol'den USDT kısmını çıkar, API zaten ekliyor
$cleanSymbol = str_replace('USDT', '', $symbol);
$url = "https://fapi.binance.com/fapi/v1/klines?symbol={$cleanSymbol}USDT&interval={$interval}&limit={$limit}";
$context = stream_context_create([
'http' => [
'timeout' => 10,
'user_agent' => 'Mozilla/5.0 (compatible; TechnicalAnalysis/1.0)'
]
]);
$response = file_get_contents($url, false, $context);
if ($response === false) {
throw new Exception('Binance Futures API bağlantı hatası');
}
$data = json_decode($response, true);
if (!$data) {
throw new Exception('Geçersiz API yanıtı');
}
return $data;
}
// OHLCV verilerini işleme - PRECISION FIX
function processOHLCV($rawData) {
$processed = [];
foreach ($rawData as $candle) {
$processed[] = [
'timestamp' => (int)$candle[0],
'open' => (float)$candle[1],
'high' => (float)$candle[2],
'low' => (float)$candle[3],
'close' => (float)$candle[4],
'volume' => (float)$candle[5]
];
}
return $processed;
}
// EMA hesaplama - FIXED
function calculateEMA($prices, $period) {
if (count($prices) < $period) {
return [end($prices)]; // Yetersiz veri durumunda son fiyatı döndür
}
$ema = [];
$multiplier = 2 / ($period + 1);
// İlk EMA değeri SMA ile başlar
$sum = 0;
for ($i = 0; $i < $period; $i++) {
$sum += $prices[$i];
}
$sma = $sum / $period;
$ema[] = $sma;
// Doğru EMA hesaplama
for ($i = 1; $i < count($prices) - $period + 1; $i++) {
$ema[] = ($prices[$i + $period - 1] * $multiplier) + ($ema[$i - 1] * (1 - $multiplier));
}
return $ema;
}
// SMA hesaplama
function calculateSMA($prices, $period) {
if (count($prices) < $period) {
return [end($prices)]; // Yetersiz veri durumunda son fiyatı döndür
}
$sma = [];
for ($i = $period - 1; $i < count($prices); $i++) {
$sum = 0;
for ($j = $i - $period + 1; $j <= $i; $j++) {
$sum += $prices[$j];
}
$sma[] = $sum / $period;
}
return $sma;
}
// MACD hesaplama - FIXED
function calculateMACD($prices, $fastPeriod = 12, $slowPeriod = 26, $signalPeriod = 9) {
if (count($prices) < $slowPeriod + $signalPeriod) {
return [
'macd' => 0,
'signal' => 0,
'histogram' => 0
];
}
$fastEMA = calculateEMA($prices, $fastPeriod);
$slowEMA = calculateEMA($prices, $slowPeriod);
// Dizi uzunluklarını eşitle
$macdLine = [];
$minLength = min(count($fastEMA), count($slowEMA));
for ($i = 0; $i < $minLength; $i++) {
$macdLine[] = $fastEMA[$i] - $slowEMA[$i];
}
$signalLine = calculateEMA($macdLine, $signalPeriod);
$histogram = [];
$signalStart = count($macdLine) - count($signalLine);
for ($i = 0; $i < count($signalLine); $i++) {
$histogram[] = $macdLine[$signalStart + $i] - $signalLine[$i];
}
return [
'macd' => end($macdLine),
'signal' => end($signalLine),
'histogram' => end($histogram)
];
}
// VWAP hesaplama
function calculateVWAP($data) {
$totalVolume = 0;
$totalVolumePrice = 0;
foreach ($data as $candle) {
$typicalPrice = ($candle['high'] + $candle['low'] + $candle['close']) / 3;
$totalVolumePrice += $typicalPrice * $candle['volume'];
$totalVolume += $candle['volume'];
}
return $totalVolume > 0 ? $totalVolumePrice / $totalVolume : 0;
}
// ATR hesaplama - FIXED Wilder's smoothing
function calculateATR($data, $period = 14) {
if (count($data) < $period + 1) {
return 0;
}
$trueRanges = [];
for ($i = 1; $i < count($data); $i++) {
$high = $data[$i]['high'];
$low = $data[$i]['low'];
$prevClose = $data[$i-1]['close'];
$tr1 = $high - $low;
$tr2 = abs($high - $prevClose);
$tr3 = abs($low - $prevClose);
$trueRanges[] = max($tr1, $tr2, $tr3);
}
// Wilder's smoothing method
$atr = [];
$firstATR = array_sum(array_slice($trueRanges, 0, $period)) / $period;
$atr[] = $firstATR;
for ($i = $period; $i < count($trueRanges); $i++) {
$atr[] = (($atr[count($atr) - 1] * ($period - 1)) + $trueRanges[$i]) / $period;
}
return end($atr);
}
// ADX hesaplama - FIXED
function calculateADX($data, $period = 14) {
if (count($data) < $period * 2) {
return 25; // Fallback değer
}
$plusDM = [];
$minusDM = [];
$trueRanges = [];
// Calculate DM and TR
for ($i = 1; $i < count($data); $i++) {
$highDiff = $data[$i]['high'] - $data[$i-1]['high'];
$lowDiff = $data[$i-1]['low'] - $data[$i]['low'];
// +DM and -DM
if ($highDiff > $lowDiff && $highDiff > 0) {
$plusDM[] = $highDiff;
} else {
$plusDM[] = 0;
}
if ($lowDiff > $highDiff && $lowDiff > 0) {
$minusDM[] = $lowDiff;
} else {
$minusDM[] = 0;
}
// True Range
$high = $data[$i]['high'];
$low = $data[$i]['low'];
$prevClose = $data[$i-1]['close'];
$tr1 = $high - $low;
$tr2 = abs($high - $prevClose);
$tr3 = abs($low - $prevClose);
$trueRanges[] = max($tr1, $tr2, $tr3);
}
// Calculate smoothed values using Wilder's method
$smoothedTR = array_sum(array_slice($trueRanges, 0, $period));
$smoothedPlusDM = array_sum(array_slice($plusDM, 0, $period));
$smoothedMinusDM = array_sum(array_slice($minusDM, 0, $period));
$dx = [];
// Continue smoothing and calculate DX
for ($i = $period; $i < count($trueRanges); $i++) {
// Wilder's smoothing
$smoothedTR = $smoothedTR - ($smoothedTR / $period) + $trueRanges[$i];
$smoothedPlusDM = $smoothedPlusDM - ($smoothedPlusDM / $period) + $plusDM[$i];
$smoothedMinusDM = $smoothedMinusDM - ($smoothedMinusDM / $period) + $minusDM[$i];
// Calculate +DI and -DI
$plusDI = ($smoothedTR != 0) ? 100 * ($smoothedPlusDM / $smoothedTR) : 0;
$minusDI = ($smoothedTR != 0) ? 100 * ($smoothedMinusDM / $smoothedTR) : 0;
// Calculate DX
$sum = $plusDI + $minusDI;
if ($sum != 0) {
$dx[] = 100 * (abs($plusDI - $minusDI) / $sum);
} else {
$dx[] = 0;
}
}
// Calculate ADX (smoothed DX)
if (count($dx) >= $period) {
$adx = array_sum(array_slice($dx, 0, $period)) / $period;
// Continue smoothing ADX
for ($i = $period; $i < count($dx); $i++) {
$adx = (($adx * ($period - 1)) + $dx[$i]) / $period;
}
return $adx;
}
return 25;
}
// Pivot Points hesaplama
function calculatePivotPoints($data) {
$lastCandle = end($data);
$high = $lastCandle['high'];
$low = $lastCandle['low'];
$close = $lastCandle['close'];
$pivot = ($high + $low + $close) / 3;
$r1 = (2 * $pivot) - $low;
$s1 = (2 * $pivot) - $high;
return [
'pivot' => $pivot,
'r1' => $r1,
's1' => $s1
];
}
// Supertrend hesaplama - FIXED
function calculateSupertrend($data, $period = 10, $multiplier = 3) {
if (count($data) < $period + 5) {
return ['signal' => 'neutral', 'value' => 0];
}
$atr = calculateATR($data, $period);
if ($atr == 0) {
return ['signal' => 'neutral', 'value' => 0];
}
$lastCandle = end($data);
$hl2 = ($lastCandle['high'] + $lastCandle['low']) / 2;
$upperBand = $hl2 + ($multiplier * $atr);
$lowerBand = $hl2 - ($multiplier * $atr);
// Simple but correct Supertrend signal
$signal = $lastCandle['close'] > $lowerBand ? 'buy' : 'sell';
return [
'signal' => $signal,
'value' => $signal === 'buy' ? $lowerBand : $upperBand
];
}
// Order Flow hesaplama - IMPROVED
function calculateOrderFlow($data) {
$recentCandles = array_slice($data, -20); // Son 20 mum
$buyVolume = 0;
$sellVolume = 0;
foreach ($recentCandles as $candle) {
$bodySize = abs($candle['close'] - $candle['open']);
$totalRange = max(0.00001, $candle['high'] - $candle['low']); // Sıfıra bölme hatasını önle
if ($candle['close'] > $candle['open']) {
// Yükselen mum
$buyRatio = $bodySize / $totalRange;
$buyVolume += $candle['volume'] * $buyRatio;
$sellVolume += $candle['volume'] * (1 - $buyRatio);
} else {
// Düşen mum
$sellRatio = $bodySize / $totalRange;
$sellVolume += $candle['volume'] * $sellRatio;
$buyVolume += $candle['volume'] * (1 - $sellRatio);
}
}
$totalVolume = $buyVolume + $sellVolume;
$flow = $totalVolume > 0 ? ($buyVolume - $sellVolume) / $totalVolume : 0;
return $flow;
}
try {
// Binance'den veri çek
$rawData = fetchBinanceData($symbol, $timeframe);
$data = processOHLCV($rawData);
if (count($data) < 50) {
throw new Exception('Yeterli veri yok');
}
// Fiyat dizilerini hazırla
$closes = array_column($data, 'close');
$highs = array_column($data, 'high');
$lows = array_column($data, 'low');
$opens = array_column($data, 'open');
$currentPrice = end($closes);
// Zaman dilimine göre optimize edilmiş parametreler
$timeframeParams = [
'1m' => ['ema' => 8, 'macd' => [8, 21, 5]],
'3m' => ['ema' => 10, 'macd' => [10, 24, 7]],
'5m' => ['ema' => 12, 'macd' => [12, 26, 9]],
'15m' => ['ema' => 14, 'macd' => [12, 26, 9]],
'30m' => ['ema' => 16, 'macd' => [14, 28, 9]],
'1h' => ['ema' => 20, 'macd' => [16, 30, 9]],
'4h' => ['ema' => 24, 'macd' => [18, 32, 9]],
'8h' => ['ema' => 26, 'macd' => [20, 34, 9]],
'12h' => ['ema' => 28, 'macd' => [22, 36, 9]],
'1d' => ['ema' => 30, 'macd' => [24, 38, 9]],
'2d' => ['ema' => 32, 'macd' => [26, 40, 9]],
'3d' => ['ema' => 32, 'macd' => [26, 40, 9]],
'1w' => ['ema' => 32, 'macd' => [26, 40, 9]]
];
$params = $timeframeParams[$timeframe] ?? $timeframeParams['15m'];
// İndikatörleri hesapla
$ema = calculateEMA($closes, $params['ema']);
$currentEMA = end($ema);
$macd = calculateMACD($closes, $params['macd'][0], $params['macd'][1], $params['macd'][2]);
$vwap = calculateVWAP($data);
$orderFlow = calculateOrderFlow($data);
$adx = calculateADX($data);
$pivots = calculatePivotPoints($data);
$atr = calculateATR($data);
$basis = calculateSMA($closes, 20);
$currentBasis = end($basis);
$supertrend = calculateSupertrend($data);
// Sinyal hesaplama
$longScore = 0;
$shortScore = 0;
$indicators = [];
// EMA Sinyali
if ($currentPrice > $currentEMA) {
$longScore += 10;
$indicators['EMA'] = ['signal' => 'long', 'value' => $currentEMA, 'score' => 10];
} else {
$shortScore += 10;
$indicators['EMA'] = ['signal' => 'short', 'value' => $currentEMA, 'score' => 10];
}
// MACD Sinyali
if ($macd['macd'] > 0 && $macd['histogram'] > 0) {
$longScore += 15;
$indicators['MACD'] = ['signal' => 'long', 'value' => $macd, 'score' => 15];
} elseif ($macd['macd'] < 0 && $macd['histogram'] < 0) {
$shortScore += 15;
$indicators['MACD'] = ['signal' => 'short', 'value' => $macd, 'score' => 15];
} else {
$indicators['MACD'] = ['signal' => 'neutral', 'value' => $macd, 'score' => 0];
}
// VWAP Sinyali
if ($currentPrice > $vwap) {
$longScore += 20;
$indicators['VWAP'] = ['signal' => 'long', 'value' => $vwap, 'score' => 20];
} else {
$shortScore += 20;
$indicators['VWAP'] = ['signal' => 'short', 'value' => $vwap, 'score' => 20];
}
// Order Flow Sinyali
if ($orderFlow > 0.1) {
$longScore += 10;
$indicators['Order Flow'] = ['signal' => 'long', 'value' => $orderFlow, 'score' => 10];
} elseif ($orderFlow < -0.1) {
$shortScore += 10;
$indicators['Order Flow'] = ['signal' => 'short', 'value' => $orderFlow, 'score' => 10];
} else {
$indicators['Order Flow'] = ['signal' => 'neutral', 'value' => $orderFlow, 'score' => 0];
}
// ADX Sinyali (trend gücü)
if ($adx > 25) {
$longScore += 15;
$shortScore += 15; // Güçlü trend her iki yönde de önemli
$indicators['ADX'] = ['signal' => 'strong', 'value' => $adx, 'score' => 15];
} else {
$indicators['ADX'] = ['signal' => 'weak', 'value' => $adx, 'score' => 0];
}
// Pivot Sinyali
if ($currentPrice > $pivots['pivot']) {
$longScore += 5;
$indicators['Pivot'] = ['signal' => 'long', 'value' => $pivots, 'score' => 5];
} else {
$shortScore += 5;
$indicators['Pivot'] = ['signal' => 'short', 'value' => $pivots, 'score' => 5];
}
// Basis (Bollinger Bands merkezi) Sinyali
if ($currentPrice > $currentBasis) {
$longScore += 10;
$indicators['Basis'] = ['signal' => 'long', 'value' => $currentBasis, 'score' => 10];
} else {
$shortScore += 10;
$indicators['Basis'] = ['signal' => 'short', 'value' => $currentBasis, 'score' => 10];
}
// Supertrend Sinyali
if ($supertrend['signal'] === 'buy') {
$longScore += 15;
$indicators['Supertrend'] = ['signal' => 'long', 'value' => $supertrend, 'score' => 15];
} else {
$shortScore += 15;
$indicators['Supertrend'] = ['signal' => 'short', 'value' => $supertrend, 'score' => 15];
}
// ATR Sinyali (volatilite)
$indicators['ATR'] = ['signal' => 'info', 'value' => $atr, 'score' => 0];
// TP/SL hesaplama
// Kullanıcının girdiği miktar değerlerini al, yoksa varsayılan değerleri kullan
$tpAmount = isset($_POST['tpAmount']) ? floatval($_POST['tpAmount']) : 0.25;
$slAmount = isset($_POST['slAmount']) ? floatval($_POST['slAmount']) : 0.15;
// TP/SL değerlerini kullanıcının girdiği miktar değerlerine göre hesapla
$longTP = $currentPrice + $tpAmount;
$longSL = $currentPrice - $slAmount;
$shortTP = $currentPrice - $tpAmount;
$shortSL = $currentPrice + $slAmount;
// Tüm değerleri formatla
$response = [
'success' => true,
'symbol' => $symbol,
'timeframe' => $timeframe,
'currentPrice' => formatNumber($currentPrice),
'longScore' => min($longScore, 100),
'shortScore' => min($shortScore, 100),
'indicators' => formatNumber($indicators),
'tpsl' => [
'long' => ['tp' => formatNumber($longTP), 'sl' => formatNumber($longSL)],
'short' => ['tp' => formatNumber($shortTP), 'sl' => formatNumber($shortSL)]
],
'atr' => formatNumber($atr),
'timestamp' => time()
];
// JSON_PRESERVE_ZERO_FRACTION: Ondalık sıfırları koru
echo json_encode($response, JSON_PRESERVE_ZERO_FRACTION);
} catch (Exception $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'error' => $e->getMessage()
]);
}
?>backend.php<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['error' => 'Method not allowed']);
exit;
}
$input = json_decode(file_get_contents('php://input'), true);
$symbol = strtoupper($input['symbol'] ?? '');
$side = strtolower($input['side'] ?? ''); // 'long' or 'short'
$amount = floatval($input['amount'] ?? 0);
$tp = floatval($input['tp'] ?? 0);
$sl = floatval($input['sl'] ?? 0);
$currentPrice = floatval($input['currentPrice'] ?? 0);
// Giriş validasyonu
if (empty($symbol) || !in_array($side, ['long', 'short']) || $amount <= 0) {
http_response_code(400);
echo json_encode([
'success' => false,
'error' => 'Geçersiz parametreler'
]);
exit;
}
// Binance API anahtarları
$API_KEY = 'apikeyburaya'; // Binance API anahtarınız
$SECRET_KEY = 'scretkeyburaya'; // Binance API sırrınız
// Demo mod kontrolü
$DEMO_MODE = false; // Gerçek işlem için false yapın
function logTrade($data) {
$logFile = 'trades.log';
$timestamp = date('Y-m-d H:i:s');
$logEntry = "[{$timestamp}] " . json_encode($data) . "\n";
file_put_contents($logFile, $logEntry, FILE_APPEND | LOCK_EX);
}
function generateOrderId() {
return 'ORDER_' . time() . '_' . rand(1000, 9999);
}
// Sembol bilgilerinden hassasiyet ve minimum miktar bilgilerini al
function getSymbolInfo($symbol, $exchangeInfo) {
if (!isset($exchangeInfo['symbols'])) {
return ['quantityPrecision' => 3, 'minQty' => 0.001];
}
foreach ($exchangeInfo['symbols'] as $symbolInfo) {
if ($symbolInfo['symbol'] === $symbol) {
return [
'quantityPrecision' => $symbolInfo['quantityPrecision'] ?? 3,
'minQty' => 0.001 // Varsayılan minimum miktar
];
}
}
// Sembol bulunamadıysa varsayılan değerleri döndür
return ['quantityPrecision' => 3, 'minQty' => 0.001];
}
function calculateQuantity($amount, $price, $quantityPrecision = 3) {
// USDT miktarını coin miktarına çevir ve doğru hassasiyette yuvarla
$rawQuantity = $amount / $price;
// Binance için doğru hassasiyette yuvarla
$precision = pow(10, $quantityPrecision);
return floor($rawQuantity * $precision) / $precision;
}
// Binance API için imza oluşturma
function generateSignature($query_string, $secret) {
return hash_hmac('sha256', $query_string, $secret);
}
// Binance API'ye istek gönderme
function sendBinanceRequest($endpoint, $params = [], $method = 'GET', $apiKey = '', $secretKey = '') {
// Futures API için farklı base URL kullan
$baseUrl = 'https://api.binance.com';
if (strpos($endpoint, 'fapi/') === 0) {
$baseUrl = 'https://fapi.binance.com';
}
$url = $baseUrl . '/' . $endpoint;
// Timestamp ekle
$params['timestamp'] = round(microtime(true) * 1000);
// Query string oluştur
$query_string = http_build_query($params);
// İmza oluştur
$signature = generateSignature($query_string, $secretKey);
// İmzayı query string'e ekle
$query_string .= '&signature=' . $signature;
// URL'yi oluştur
$url = $url . '?' . $query_string;
// cURL ile istek gönder
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Header'ları ayarla
$headers = ['X-MBX-APIKEY: ' . $apiKey];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// HTTP metodunu ayarla
if ($method === 'POST') {
curl_setopt($ch, CURLOPT_POST, true);
} elseif ($method === 'DELETE') {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
}
// İsteği gönder
$response = curl_exec($ch);
// Hata kontrolü
if (curl_errno($ch)) {
throw new Exception('Binance API isteği başarısız: ' . curl_error($ch));
}
// cURL bağlantısını kapat
curl_close($ch);
// JSON yanıtını çöz
$result = json_decode($response, true);
// Hata kontrolü
if (isset($result['code']) && $result['code'] !== 200) {
throw new Exception('Binance API hatası: ' . ($result['msg'] ?? 'Bilinmeyen hata'));
}
return $result;
}
// Kaldıraç ayarını değiştirme
function setLeverage($symbol, $leverage, $apiKey, $secretKey) {
$params = [
'symbol' => $symbol,
'leverage' => $leverage
];
return sendBinanceRequest('fapi/v1/leverage', $params, 'POST', $apiKey, $secretKey);
}
// Pozisyon modunu ayarlama (HEDGE veya ONE_WAY)
function setPositionMode($hedgeMode, $apiKey, $secretKey) {
$params = [
'dualSidePosition' => $hedgeMode ? 'true' : 'false'
];
return sendBinanceRequest('fapi/v1/positionSide/dual', $params, 'POST', $apiKey, $secretKey);
}
// Piyasa emri gönderme (Futures için)
function sendMarketOrder($symbol, $side, $quantity, $apiKey, $secretKey) {
$params = [
'symbol' => $symbol,
'side' => $side === 'long' ? 'BUY' : 'SELL',
'type' => 'MARKET',
'quantity' => $quantity,
'reduceOnly' => 'false',
'newOrderRespType' => 'RESULT'
];
return sendBinanceRequest('fapi/v1/order', $params, 'POST', $apiKey, $secretKey);
}
// Take Profit emri gönderme (Futures için)
function sendTakeProfitOrder($symbol, $side, $quantity, $price, $apiKey, $secretKey) {
$params = [
'symbol' => $symbol,
'side' => $side === 'long' ? 'SELL' : 'BUY', // TP için ters yön
'type' => 'LIMIT',
'timeInForce' => 'GTC',
'quantity' => $quantity,
'price' => $price,
'reduceOnly' => 'true',
'newOrderRespType' => 'RESULT'
];
return sendBinanceRequest('fapi/v1/order', $params, 'POST', $apiKey, $secretKey);
}
// Stop Loss emri gönderme (Futures için)
function sendStopLossOrder($symbol, $side, $quantity, $stopPrice, $apiKey, $secretKey) {
$params = [
'symbol' => $symbol,
'side' => $side === 'long' ? 'SELL' : 'BUY', // SL için ters yön
'type' => 'STOP_MARKET',
'quantity' => $quantity,
'stopPrice' => $stopPrice,
'reduceOnly' => 'true',
'newOrderRespType' => 'RESULT'
];
return sendBinanceRequest('fapi/v1/order', $params, 'POST', $apiKey, $secretKey);
}
// Hesap bilgilerini alma (Futures için)
function getAccountInfo($apiKey, $secretKey) {
return sendBinanceRequest('fapi/v2/account', [], 'GET', $apiKey, $secretKey);
}
// Sembol bilgilerini alma (Futures için)
function getExchangeInfo($symbol, $apiKey, $secretKey) {
$params = [];
if (!empty($symbol)) {
$params['symbol'] = $symbol;
}
return sendBinanceRequest('fapi/v1/exchangeInfo', $params, 'GET', $apiKey, $secretKey);
}
try {
// Demo mod için basit miktar hesaplama
$quantity = $DEMO_MODE ? calculateQuantity($amount, $currentPrice) : 0;
if ($DEMO_MODE) {
// Demo işlem
$orderId = generateOrderId();
$tradeData = [
'orderId' => $orderId,
'symbol' => $symbol,
'side' => $side,
'amount' => $amount,
'quantity' => $quantity,
'price' => $currentPrice,
'tp' => $tp,
'sl' => $sl,
'status' => 'DEMO_FILLED',
'timestamp' => time(),
'mode' => 'DEMO'
];
// İşlemi logla
logTrade($tradeData);
// TP/SL emirlerini de simüle et
$tpOrderId = generateOrderId();
$slOrderId = generateOrderId();
$tpData = [
'orderId' => $tpOrderId,
'parentOrder' => $orderId,
'symbol' => $symbol,
'side' => $side === 'long' ? 'short' : 'long',
'type' => 'TAKE_PROFIT',
'quantity' => $quantity,
'price' => $tp,
'status' => 'PENDING',
'timestamp' => time(),
'mode' => 'DEMO'
];
$slData = [
'orderId' => $slOrderId,
'parentOrder' => $orderId,
'symbol' => $symbol,
'side' => $side === 'long' ? 'short' : 'long',
'type' => 'STOP_LOSS',
'quantity' => $quantity,
'price' => $sl,
'status' => 'PENDING',
'timestamp' => time(),
'mode' => 'DEMO'
];
logTrade($tpData);
logTrade($slData);
$response = [
'success' => true,
'mode' => 'DEMO',
'message' => 'Demo işlem başarıyla gerçekleştirildi',
'mainOrder' => $tradeData,
'tpOrder' => $tpData,
'slOrder' => $slData,
'totalOrders' => 3
];
} else {
// Gerçek işlem (API anahtarları gerekli)
if (empty($API_KEY) || empty($SECRET_KEY)) {
throw new Exception('API anahtarları tanımlanmamış');
}
// Sembol formatını düzelt (BTC -> BTCUSDT)
if (strpos($symbol, 'USDT') === false) {
$symbol .= 'USDT';
}
// Sembol bilgilerini al
$exchangeInfo = getExchangeInfo($symbol, $API_KEY, $SECRET_KEY);
// Sembol hassasiyet bilgilerini al
$symbolInfo = getSymbolInfo($symbol, $exchangeInfo);
$quantityPrecision = $symbolInfo['quantityPrecision'];
// Miktar hesaplama (doğru hassasiyette)
$quantity = calculateQuantity($amount, $currentPrice, $quantityPrecision);
// Hesap bilgilerini kontrol et
$accountInfo = getAccountInfo($API_KEY, $SECRET_KEY);
// Kaldıraç ayarını 10x olarak ayarla
try {
$leverageResult = setLeverage($symbol, 10, $API_KEY, $SECRET_KEY);
logTrade(['action' => 'setLeverage', 'symbol' => $symbol, 'leverage' => 10, 'result' => $leverageResult]);
} catch (Exception $leverageEx) {
// Kaldıraç ayarı başarısız olsa bile devam et
logTrade(['action' => 'setLeverage', 'symbol' => $symbol, 'leverage' => 10, 'error' => $leverageEx->getMessage()]);
}
// Pozisyon modunu ayarla (ONE_WAY)
try {
$positionModeResult = setPositionMode(false, $API_KEY, $SECRET_KEY);
logTrade(['action' => 'setPositionMode', 'mode' => 'ONE_WAY', 'result' => $positionModeResult]);
} catch (Exception $positionEx) {
// Pozisyon modu ayarı başarısız olsa bile devam et
logTrade(['action' => 'setPositionMode', 'mode' => 'ONE_WAY', 'error' => $positionEx->getMessage()]);
}
// Miktar bilgisini logla
logTrade([
'action' => 'calculateQuantity',
'symbol' => $symbol,
'amount' => $amount,
'price' => $currentPrice,
'quantityPrecision' => $quantityPrecision,
'calculatedQuantity' => $quantity
]);
// Ana emir (MARKET)
$orderSide = $side === 'long' ? 'BUY' : 'SELL';
$mainOrder = sendMarketOrder($symbol, $side, $quantity, $API_KEY, $SECRET_KEY);
if (!isset($mainOrder['orderId'])) {
throw new Exception('Ana emir gerçekleştirilemedi: ' . json_encode($mainOrder));
}
// Emir durumunu logla
$tradeData = [
'orderId' => $mainOrder['orderId'],
'symbol' => $symbol,
'side' => $side,
'amount' => $amount,
'quantity' => $mainOrder['executedQty'] ?? $quantity,
'price' => $mainOrder['price'] ?? $currentPrice,
'tp' => $tp,
'sl' => $sl,
'status' => $mainOrder['status'] ?? 'UNKNOWN',
'timestamp' => time(),
'mode' => 'LIVE'
];
logTrade($tradeData);
// TP/SL emirleri (Futures için ayrı ayrı gönder)
$tpslSide = $side === 'long' ? 'SELL' : 'BUY'; // TP/SL için ters yön
$tpslQuantity = $mainOrder['executedQty'] ?? $quantity;
try {
// Take Profit emri
$tpOrder = sendTakeProfitOrder(
$symbol,
$side,
$tpslQuantity,
$tp, // Limit Price
$API_KEY,
$SECRET_KEY
);
// Take Profit emrini logla
logTrade([
'orderId' => $tpOrder['orderId'] ?? 'UNKNOWN',
'parentOrder' => $mainOrder['orderId'],
'symbol' => $symbol,
'side' => $tpslSide,
'type' => 'TAKE_PROFIT',
'quantity' => $tpslQuantity,
'price' => $tp,
'status' => $tpOrder['status'] ?? 'UNKNOWN',
'timestamp' => time(),
'mode' => 'LIVE'
]);
// Stop Loss emri
$slOrder = sendStopLossOrder(
$symbol,
$side,
$tpslQuantity,
$sl, // Stop Price
$API_KEY,
$SECRET_KEY
);
// Stop Loss emrini logla
logTrade([
'orderId' => $slOrder['orderId'] ?? 'UNKNOWN',
'parentOrder' => $mainOrder['orderId'],
'symbol' => $symbol,
'side' => $tpslSide,
'type' => 'STOP_LOSS',
'quantity' => $tpslQuantity,
'stopPrice' => $sl,
'status' => $slOrder['status'] ?? 'UNKNOWN',
'timestamp' => time(),
'mode' => 'LIVE'
]);
$response = [
'success' => true,
'mode' => 'LIVE',
'message' => 'İşlem başarıyla gerçekleştirildi',
'mainOrder' => $tradeData,
'tpOrder' => $tpOrder,
'slOrder' => $slOrder,
'totalOrders' => 3
];
} catch (Exception $ocoEx) {
// OCO emri başarısız olsa bile ana emir gerçekleşti
$response = [
'success' => true,
'mode' => 'LIVE',
'message' => 'Ana emir gerçekleştirildi fakat TP/SL emirleri başarısız oldu',
'mainOrder' => $tradeData,
'ocoError' => $ocoEx->getMessage(),
'totalOrders' => 1
];
}
}
echo json_encode($response);
} catch (Exception $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'error' => $e->getMessage()
]);
}
?>script.js// TradingView Widget'ları için fonksiyonlar
function loadTradingViewWidgets(symbol, interval) {
// Sembol formatını ayarla ("BTC" -> "BINANCE:BTCUSDT")
const formattedSymbol = `BINANCE:${symbol}USDT`;
// Zaman dilimini ayarla
const formattedInterval = convertTimeframeToTradingView(interval);
console.log(`TradingView grafikleri yükleniyor: ${formattedSymbol}, ${formattedInterval}`);
// Fiyat grafiği widget'ı
loadPriceChart(formattedSymbol, formattedInterval);
// Teknik analiz widget'ı
loadTechnicalAnalysis(formattedSymbol, formattedInterval);
}
// Zaman dilimini TradingView formatına çevir
function convertTimeframeToTradingView(interval) {
// Binance -> TradingView formatı çevirisi
const conversions = {
'1m': '1',
'3m': '3',
'5m': '5',
'15m': '15',
'30m': '30',
'1h': '60',
'2h': '120',
'4h': '240',
'6h': '360',
'8h': '480',
'12h': '720',
'1d': 'D',
'3d': '3D',
'1w': 'W',
'1M': 'M'
};
return conversions[interval] || 'D'; // Varsayılan olarak günlük
}
// Fiyat grafiği widget'ını yükle
function loadPriceChart(symbol, interval) {
const container = document.getElementById('tradingview_price_chart');
if (!container) return;
// Önceki widget'i temizle
container.innerHTML = '';
new TradingView.widget({
width: "100%",
height: 400,
"symbol": symbol,
"interval": interval,
"timezone": "Etc/UTC",
"theme": "dark",
"style": "1",
"locale": "tr",
"toolbar_bg": "#f1f3f6",
"enable_publishing": false,
"hide_side_toolbar": false,
"allow_symbol_change": true,
"container_id": "tradingview_price_chart",
"studies": [
"ZigZag@tv-basicstudies",
"StochasticRSI@tv-basicstudies"
]
});
}
// Teknik analiz widget'ını yükle
function loadTechnicalAnalysis(symbol, interval) {
const container = document.getElementById('tradingview_tech_analysis');
if (!container) return;
// Önceki widget'i temizle
container.innerHTML = '';
// Sembolü TradingView formatına uygun hale getir
const symbolWithoutPrefix = symbol.replace('BINANCE:', '');
const tvInterval = getTimeframeForTechnicalAnalysis(interval);
// Widget HTML'ini oluştur
container.innerHTML = `
<div class="tradingview-widget-container">
<div id="tradingview_tech_analysis_inner"></div>
<div class="tradingview-widget-copyright">
<span class="blue-text">Teknik Analiz</span>
</a> TradingView tarafından
</div>
<script type="text/javascript" src="https://s3.tradingview.com/external-embedding/embed-widget-technical-analysis.js" async>
{
"interval": "${tvInterval}",
"width": "100%",
"isTransparent": false,
"height": 400,
"symbol": "${symbolWithoutPrefix}",
"showIntervalTabs": true,
"locale": "en",
"displayMode": "single",
"colorTheme": "dark"
}
</script>
</div>
`;
}
// TradingView Technical Analysis Widget için zaman dilimini dönüştür
function getTimeframeForTechnicalAnalysis(interval) {
// Binance -> TradingView Technical Analysis formatı çevirisi
const conversions = {
'1m': '1m',
'3m': '5m', // 3m desteklenmediği için en yakın değer
'5m': '5m',
'15m': '15m',
'30m': '30m',
'1h': '1h',
'4h': '4h',
'8h': '4h', // 8h desteklenmediği için en yakın değer
'12h': '1D', // 12h desteklenmediği için en yakın değer
'1d': '1D',
};
return conversions[interval] || '1D'; // Varsayılan olarak günlük
}
$(document).ready(function() {
let currentAnalysis = null;
let binanceSocket = null;
// Sayfa kapatıldığında WebSocket bağlantısını kapat
$(window).on('beforeunload', function() {
if (binanceSocket) {
console.log('Sayfa kapatılıyor, WebSocket bağlantısı kesiliyor...');
binanceSocket.disconnect();
}
});
// WebSocket bağlantısını başlatma fonksiyonu
function initWebSocket(symbol) {
// Eğer önceki bir bağlantı varsa kapat
if (binanceSocket) {
binanceSocket.disconnect();
}
console.log(`${symbol} için WebSocket bağlantısı başlatılıyor...`);
// Yeni WebSocket bağlantısı oluştur
binanceSocket = new BinanceWebSocket(symbol, {
onOpen: () => {
console.log(`${symbol} için WebSocket bağlantısı açıldı`);
},
onDepthUpdate: (data) => {
console.log('Depth güncellemesi alındı');
const result = processDepthData(data);
if (result) {
console.log('Depth verileri işlendi:', result);
}
},
onError: (error) => {
console.error('WebSocket hatası:', error);
},
onClose: () => {
console.log(`${symbol} için WebSocket bağlantısı kapandı`);
}
});
// Bağlantıyı başlat
binanceSocket.connect();
}
// Form submit
$('#analysisForm').on('submit', function(e) {
e.preventDefault();
const formData = {
symbol: $('#symbol').val().toUpperCase(),
amount: parseFloat($('#amount').val()),
timeframe: $('#timeframe').val(),
tpAmount: parseFloat($('#tpAmount').val()),
slAmount: parseFloat($('#slAmount').val())
};
// Validasyon
if (!formData.symbol || formData.amount < 10) {
showError('Lütfen geçerli değerler girin');
return;
}
// TradingView widget'larını yükle
loadTradingViewWidgets(formData.symbol, formData.timeframe);
analyzeMarket(formData);
});
function analyzeMarket(data) {
showLoading(true);
hideError();
hideResults();
$.ajax({
url: 'api.php',
method: 'POST',
contentType: 'application/json',
data: JSON.stringify(data),
timeout: 30000,
success: function(response) {
showLoading(false);
if (response.success) {
currentAnalysis = response;
displayResults(response);
} else {
showError(response.error || 'Analiz hatası');
}
},
error: function(xhr, status, error) {
showLoading(false);
let errorMessage = 'Bağlantı hatası';
if (xhr.responseJSON && xhr.responseJSON.error) {
errorMessage = xhr.responseJSON.error;
} else if (status === 'timeout') {
errorMessage = 'İstek zaman aşımına uğradı';
} else if (status === 'parsererror') {
errorMessage = 'Veri işleme hatası';
}
showError(errorMessage);
}
});
}
function displayResults(data) {
// Skorları göster
$('#longScore').text(data.longScore);
$('#shortScore').text(data.shortScore);
// İndikatörleri göster
displayIndicators(data.indicators, data.currentPrice);
// TP/SL göster
displayTPSL(data.tpsl, data.currentPrice);
// Sonuçları göster
showResults();
}
function displayIndicators(indicators, currentPrice) {
const container = $('#indicators');
container.empty();
Object.keys(indicators).forEach(name => {
const indicator = indicators[name];
const card = createIndicatorCard(name, indicator, currentPrice);
container.append(card);
});
}
function createIndicatorCard(name, indicator, currentPrice) {
const signalClass = indicator.signal === 'long' ? 'long' :
indicator.signal === 'short' ? 'short' : 'neutral';
const signalText = indicator.signal === 'long' ? 'LONG' :
indicator.signal === 'short' ? 'SHORT' :
indicator.signal === 'strong' ? 'GÜÇLÜ' :
indicator.signal === 'weak' ? 'ZAYIF' :
indicator.signal === 'info' ? 'BİLGİ' : 'NÖTR';
let valueText = '';
if (name === 'MACD') {
valueText = `MACD: ${indicator.value.macd.toFixed(4)}<br>
Signal: ${indicator.value.signal.toFixed(4)}<br>
Histogram: ${indicator.value.histogram.toFixed(4)}`;
} else if (name === 'Pivot') {
valueText = `Pivot: ${indicator.value.pivot.toFixed(2)}<br>
R1: ${indicator.value.r1.toFixed(2)}<br>
S1: ${indicator.value.s1.toFixed(2)}`;
} else if (name === 'Supertrend') {
valueText = `Signal: ${indicator.value.signal.toUpperCase()}<br>
Value: ${indicator.value.value.toFixed(2)}`;
} else if (name === 'Order Flow') {
valueText = `Flow: ${(indicator.value * 100).toFixed(2)}%`;
} else if (typeof indicator.value === 'number') {
valueText = `Value: ${indicator.value.toFixed(2)}`;
}
return `
<div class="indicator-card">
<div class="indicator-header">
<span class="indicator-name">${name}</span>
<span class="signal-badge ${signalClass}">${signalText}</span>
</div>
<div class="indicator-details">
<p>${valueText}</p>
<p><strong>Skor: ${indicator.score}</strong></p>
</div>
</div>
`;
}
function displayTPSL(tpsl, currentPrice) {
const container = $('#tpslGrid');
container.empty();
// Long TP/SL
const longCard = `
<div class="tp-sl-card">
<h4 style="color: #27ae60; margin-bottom: 15px;">📈 LONG Pozisyon</h4>
<p><strong>Mevcut Fiyat:</strong> ${currentPrice.toFixed(2)} USDT</p>
<p><strong>Take Profit:</strong> ${tpsl.long.tp.toFixed(2)} USDT</p>
<p><strong>Stop Loss:</strong> ${tpsl.long.sl.toFixed(2)} USDT</p>
<p><strong>Risk/Reward:</strong> ${((tpsl.long.tp - currentPrice) / (currentPrice - tpsl.long.sl)).toFixed(2)}</p>
</div>
`;
// Short TP/SL
const shortCard = `
<div class="tp-sl-card">
<h4 style="color: #e74c3c; margin-bottom: 15px;">📉 SHORT Pozisyon</h4>
<p><strong>Mevcut Fiyat:</strong> ${currentPrice.toFixed(2)} USDT</p>
<p><strong>Take Profit:</strong> ${tpsl.short.tp.toFixed(2)} USDT</p>
<p><strong>Stop Loss:</strong> ${tpsl.short.sl.toFixed(2)} USDT</p>
<p><strong>Risk/Reward:</strong> ${((currentPrice - tpsl.short.tp) / (tpsl.short.sl - currentPrice)).toFixed(2)}</p>
</div>
`;
container.append(longCard + shortCard);
}
function showLoading(show) {
if (show) {
$('#loading').show();
$('#analyzeBtn').prop('disabled', true).text('Analiz Ediliyor...');
} else {
$('#loading').hide();
$('#analyzeBtn').prop('disabled', false).text('📊 Analiz Et');
}
}
function showError(message) {
$('#error').text(message).show();
}
function hideError() {
$('#error').hide();
}
function showResults() {
$('#results').show();
}
function hideResults() {
$('#results').hide();
}
// Global fonksiyon - emir gönderme
window.executeTrade = function(side) {
if (!currentAnalysis) {
alert('Önce analiz yapmalısınız');
return;
}
const confirmation = confirm(
`${side.toUpperCase()} pozisyon açmak istediğinizden emin misiniz?\n\n` +
`Sembol: ${currentAnalysis.symbol}\n` +
`Miktar: ${$('#amount').val()} USDT\n` +
`Mevcut Fiyat: ${currentAnalysis.currentPrice.toFixed(2)}\n` +
`TP: ${currentAnalysis.tpsl[side].tp.toFixed(2)}\n` +
`SL: ${currentAnalysis.tpsl[side].sl.toFixed(2)}`
);
if (!confirmation) return;
const tradeData = {
symbol: currentAnalysis.symbol,
side: side,
amount: parseFloat($('#amount').val()),
tp: currentAnalysis.tpsl[side].tp,
sl: currentAnalysis.tpsl[side].sl,
currentPrice: currentAnalysis.currentPrice
};
// Emir gönder
$.ajax({
url: 'backend.php',
method: 'POST',
contentType: 'application/json',
data: JSON.stringify(tradeData),
success: function(response) {
if (response.success) {
alert(
`✅ ${response.message}\n\n` +
`Emir ID: ${response.mainOrder ? response.mainOrder.orderId : response.order.orderId}\n` +
`Mod: ${response.mode}\n` +
`${response.totalOrders ? `Toplam Emir: ${response.totalOrders}` : ''}`
);
} else {
alert(`❌ Hata: ${response.error}`);
}
},
error: function(xhr) {
const error = xhr.responseJSON ? xhr.responseJSON.error : 'Bağlantı hatası';
alert(`❌ Emir gönderilemedi: ${error}`);
}
});
};
// Otomatik yenileme (isteğe bağlı)
let autoRefreshInterval;
function startAutoRefresh() {
if (currentAnalysis) {
autoRefreshInterval = setInterval(() => {
const formData = {
symbol: currentAnalysis.symbol,
amount: parseFloat($('#amount').val()),
timeframe: $('#timeframe').val()
};
analyzeMarket(formData);
}, 30000); // 30 saniyede bir yenile
}
}
function stopAutoRefresh() {
if (autoRefreshInterval) {
clearInterval(autoRefreshInterval);
autoRefreshInterval = null;
}
}
// WebSocket bağlantısını başlatma
function initWebSocket(symbol) {
// Önceki bağlantıyı kapat
if (binanceSocket) {
binanceSocket.disconnect();
}
// Yeni bağlantı oluştur
binanceSocket = new BinanceWebSocket(symbol, {
onOpen: () => {
console.log('WebSocket bağlantısı başarılı');
},
onDepthUpdate: (data) => {
const depthInfo = processDepthData(data);
// UI güncelleme
document.getElementById('bidPercentage').style.width = `${depthInfo.bidPercentage}%`;
document.getElementById('bidPercentage').textContent = `${depthInfo.bidPercentage.toFixed(2)}%`;
document.getElementById('askPercentage').style.width = `${depthInfo.askPercentage}%`;
document.getElementById('askPercentage').textContent = `${depthInfo.askPercentage.toFixed(2)}%`;
document.getElementById('bidVolume').textContent = depthInfo.totalBidVolume.toFixed(2);
document.getElementById('askVolume').textContent = depthInfo.totalAskVolume.toFixed(2);
// Baskınlık durumu
let dominanceText = 'Dengeli';
if (depthInfo.bidPercentage >= 70) {
dominanceText = 'Güçlü Alıcı Baskınlığı';
} else if (depthInfo.askPercentage >= 70) {
dominanceText = 'Güçlü Satıcı Baskınlığı';
} else if (depthInfo.bidPercentage >= 60) {
dominanceText = 'Alıcı Eğilimi';
} else if (depthInfo.askPercentage >= 60) {
dominanceText = 'Satıcı Eğilimi';
}
document.getElementById('dominance').textContent = dominanceText;
},
onError: (error) => {
console.error('WebSocket hatası:', error);
},
onClose: () => {
console.log('WebSocket bağlantısı kapandı');
}
});
binanceSocket.connect();
}
// Sayfa kapatılırken WebSocket bağlantısını ve otomatik yenilemeyi kapat
$(window).on('beforeunload', function() {
if (binanceSocket) {
binanceSocket.disconnect();
}
stopAutoRefresh();
});
});trades.logBoş bir txt dosyası yeterli işlem yaptıkça loglayacak hata vs varsa orada görebilirsinizörnek log dosyası
[2025-06-02 13:16:58] {"action":"setLeverage","symbol":"XRPUSDT","leverage":10,"result":{"symbol":"XRPUSDT","leverage":10,"maxNotionalValue":"10000000"}}
[2025-06-02 13:16:59] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 13:47:35] {"action":"setLeverage","symbol":"ETHUSDT","leverage":10,"result":{"symbol":"ETHUSDT","leverage":10,"maxNotionalValue":"150000000"}}
[2025-06-02 13:47:36] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 13:47:36] {"action":"calculateQuantity","symbol":"ETHUSDT","amount":100,"price":2503.79,"quantityPrecision":3,"calculatedQuantity":0.039}
[2025-06-02 13:47:37] {"orderId":8389765899255901361,"symbol":"ETHUSDT","side":"long","amount":100,"quantity":"0.039","price":"0.00","tp":2504.04,"sl":2503.64,"status":"FILLED","timestamp":1748872057,"mode":"LIVE"}
[2025-06-02 13:47:38] {"orderId":8389765899255907754,"parentOrder":8389765899255901361,"symbol":"ETHUSDT","side":"SELL","type":"TAKE_PROFIT","quantity":"0.039","price":2504.04,"status":"NEW","timestamp":1748872058,"mode":"LIVE"}
[2025-06-02 13:48:34] {"action":"setLeverage","symbol":"ETHUSDT","leverage":10,"result":{"symbol":"ETHUSDT","leverage":10,"maxNotionalValue":"150000000"}}
[2025-06-02 13:48:35] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 13:48:35] {"action":"calculateQuantity","symbol":"ETHUSDT","amount":100,"price":2502.09,"quantityPrecision":3,"calculatedQuantity":0.039}
[2025-06-02 13:48:36] {"orderId":8389765899256328102,"symbol":"ETHUSDT","side":"long","amount":100,"quantity":"0.039","price":"0.00","tp":2502.34,"sl":2501.94,"status":"FILLED","timestamp":1748872116,"mode":"LIVE"}
[2025-06-02 13:48:37] {"orderId":8389765899256336100,"parentOrder":8389765899256328102,"symbol":"ETHUSDT","side":"SELL","type":"TAKE_PROFIT","quantity":"0.039","price":2502.34,"status":"NEW","timestamp":1748872117,"mode":"LIVE"}
[2025-06-02 13:49:14] {"action":"setLeverage","symbol":"ETHUSDT","leverage":10,"result":{"symbol":"ETHUSDT","leverage":10,"maxNotionalValue":"150000000"}}
[2025-06-02 13:49:15] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 13:49:15] {"action":"calculateQuantity","symbol":"ETHUSDT","amount":100,"price":2503.02,"quantityPrecision":3,"calculatedQuantity":0.039}
[2025-06-02 13:49:16] {"orderId":8389765899256620907,"symbol":"ETHUSDT","side":"long","amount":100,"quantity":"0.039","price":"0.00","tp":2503.27,"sl":2502.87,"status":"FILLED","timestamp":1748872156,"mode":"LIVE"}
[2025-06-02 13:49:17] {"orderId":8389765899256623827,"parentOrder":8389765899256620907,"symbol":"ETHUSDT","side":"SELL","type":"TAKE_PROFIT","quantity":"0.039","price":2503.27,"status":"NEW","timestamp":1748872157,"mode":"LIVE"}
[2025-06-02 13:50:42] {"action":"setLeverage","symbol":"BTCUSDT","leverage":10,"result":{"symbol":"BTCUSDT","leverage":10,"maxNotionalValue":"230000000"}}
[2025-06-02 13:50:43] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 13:50:43] {"action":"calculateQuantity","symbol":"BTCUSDT","amount":100,"price":103852.3,"quantityPrecision":3,"calculatedQuantity":0}
[2025-06-02 13:51:13] {"action":"setLeverage","symbol":"BTCUSDT","leverage":10,"result":{"symbol":"BTCUSDT","leverage":10,"maxNotionalValue":"230000000"}}
[2025-06-02 13:51:14] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 13:51:14] {"action":"calculateQuantity","symbol":"BTCUSDT","amount":200,"price":103785.7,"quantityPrecision":3,"calculatedQuantity":0.001}
[2025-06-02 13:51:14] {"orderId":696885537986,"symbol":"BTCUSDT","side":"long","amount":200,"quantity":"0.001","price":"0.00","tp":103785.95,"sl":103785.55,"status":"FILLED","timestamp":1748872274,"mode":"LIVE"}
[2025-06-02 13:53:54] {"action":"setLeverage","symbol":"XRPUSDT","leverage":10,"result":{"symbol":"XRPUSDT","leverage":10,"maxNotionalValue":"10000000"}}
[2025-06-02 13:53:54] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 13:53:54] {"action":"calculateQuantity","symbol":"XRPUSDT","amount":200,"price":2.1407,"quantityPrecision":1,"calculatedQuantity":93.4}
[2025-06-02 13:53:55] {"orderId":105732539869,"symbol":"XRPUSDT","side":"short","amount":200,"quantity":"93.4","price":"0.0000","tp":1.8907,"sl":2.2907,"status":"FILLED","timestamp":1748872435,"mode":"LIVE"}
[2025-06-02 13:53:56] {"orderId":105732540086,"parentOrder":105732539869,"symbol":"XRPUSDT","side":"BUY","type":"TAKE_PROFIT","quantity":"93.4","price":1.8907,"status":"NEW","timestamp":1748872436,"mode":"LIVE"}
[2025-06-02 13:53:57] {"orderId":105732541564,"parentOrder":105732539869,"symbol":"XRPUSDT","side":"BUY","type":"STOP_LOSS","quantity":"93.4","stopPrice":2.2907,"status":"NEW","timestamp":1748872437,"mode":"LIVE"}
[2025-06-02 14:24:08] {"action":"setLeverage","symbol":"BNTUSDT","leverage":10,"result":{"symbol":"BNTUSDT","leverage":10,"maxNotionalValue":"104166"}}
[2025-06-02 14:24:09] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 14:24:09] {"action":"calculateQuantity","symbol":"BNTUSDT","amount":50,"price":0.65226,"quantityPrecision":0,"calculatedQuantity":76}
[2025-06-02 14:24:10] {"orderId":2547648102,"symbol":"BNTUSDT","side":"long","amount":50,"quantity":"76","price":"0.0000000","tp":0.90226,"sl":0.50226,"status":"FILLED","timestamp":1748874250,"mode":"LIVE"}
[2025-06-02 14:24:11] {"orderId":2547648160,"parentOrder":2547648102,"symbol":"BNTUSDT","side":"SELL","type":"TAKE_PROFIT","quantity":"76","price":0.90226,"status":"NEW","timestamp":1748874251,"mode":"LIVE"}
[2025-06-02 14:24:11] {"orderId":2547648179,"parentOrder":2547648102,"symbol":"BNTUSDT","side":"SELL","type":"STOP_LOSS","quantity":"76","stopPrice":0.50226,"status":"NEW","timestamp":1748874251,"mode":"LIVE"}
[2025-06-02 14:28:11] {"action":"setLeverage","symbol":"AVAXUSDT","leverage":10,"result":{"symbol":"AVAXUSDT","leverage":10,"maxNotionalValue":"8000000"}}
[2025-06-02 14:28:13] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 14:28:13] {"action":"calculateQuantity","symbol":"AVAXUSDT","amount":50,"price":20.61,"quantityPrecision":0,"calculatedQuantity":2}
[2025-06-02 14:28:14] {"orderId":30017244551,"symbol":"AVAXUSDT","side":"short","amount":50,"quantity":"2","price":"0.0000","tp":20.36,"sl":20.76,"status":"FILLED","timestamp":1748874494,"mode":"LIVE"}
[2025-06-02 14:28:15] {"orderId":30017245022,"parentOrder":30017244551,"symbol":"AVAXUSDT","side":"BUY","type":"TAKE_PROFIT","quantity":"2","price":20.36,"status":"NEW","timestamp":1748874495,"mode":"LIVE"}
[2025-06-02 14:28:16] {"orderId":30017245341,"parentOrder":30017244551,"symbol":"AVAXUSDT","side":"BUY","type":"STOP_LOSS","quantity":"2","stopPrice":20.76,"status":"NEW","timestamp":1748874496,"mode":"LIVE"}
[2025-06-02 14:34:27] {"action":"setLeverage","symbol":"BNTUSDT","leverage":10,"result":{"symbol":"BNTUSDT","leverage":10,"maxNotionalValue":"104166"}}
[2025-06-02 14:34:28] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 14:34:28] {"action":"calculateQuantity","symbol":"BNTUSDT","amount":50,"price":0.65298,"quantityPrecision":0,"calculatedQuantity":76}
[2025-06-02 14:34:28] {"orderId":2547673844,"symbol":"BNTUSDT","side":"long","amount":50,"quantity":"76","price":"0.0000000","tp":0.90298,"sl":0.50298,"status":"FILLED","timestamp":1748874868,"mode":"LIVE"}
[2025-06-02 14:34:29] {"orderId":2547673905,"parentOrder":2547673844,"symbol":"BNTUSDT","side":"SELL","type":"TAKE_PROFIT","quantity":"76","price":0.90298,"status":"NEW","timestamp":1748874869,"mode":"LIVE"}
[2025-06-02 14:34:30] {"orderId":2547673916,"parentOrder":2547673844,"symbol":"BNTUSDT","side":"SELL","type":"STOP_LOSS","quantity":"76","stopPrice":0.50298,"status":"NEW","timestamp":1748874870,"mode":"LIVE"}
[2025-06-02 15:03:58] {"action":"setLeverage","symbol":"AVAXUSDT","leverage":10,"result":{"symbol":"AVAXUSDT","leverage":10,"maxNotionalValue":"8000000"}}
[2025-06-02 15:03:59] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 15:03:59] {"action":"calculateQuantity","symbol":"AVAXUSDT","amount":50,"price":20.462,"quantityPrecision":0,"calculatedQuantity":2}
[2025-06-02 15:04:00] {"orderId":30017902154,"symbol":"AVAXUSDT","side":"short","amount":50,"quantity":"2","price":"0.0000","tp":20.212,"sl":20.612,"status":"FILLED","timestamp":1748876640,"mode":"LIVE"}
[2025-06-02 15:04:00] {"orderId":30017902683,"parentOrder":30017902154,"symbol":"AVAXUSDT","side":"BUY","type":"TAKE_PROFIT","quantity":"2","price":20.212,"status":"NEW","timestamp":1748876640,"mode":"LIVE"}
[2025-06-02 15:04:01] {"orderId":30017903188,"parentOrder":30017902154,"symbol":"AVAXUSDT","side":"BUY","type":"STOP_LOSS","quantity":"2","stopPrice":20.612,"status":"NEW","timestamp":1748876641,"mode":"LIVE"}
[2025-06-02 15:08:26] {"action":"setLeverage","symbol":"XRPUSDT","leverage":10,"result":{"symbol":"XRPUSDT","leverage":10,"maxNotionalValue":"10000000"}}
[2025-06-02 15:08:27] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 15:08:27] {"action":"calculateQuantity","symbol":"XRPUSDT","amount":50,"price":2.1436,"quantityPrecision":1,"calculatedQuantity":23.3}
[2025-06-02 15:08:27] {"orderId":105738399925,"symbol":"XRPUSDT","side":"short","amount":50,"quantity":"23.3","price":"0.0000","tp":1.8936,"sl":2.2936,"status":"FILLED","timestamp":1748876907,"mode":"LIVE"}
[2025-06-02 15:08:28] {"orderId":105738400854,"parentOrder":105738399925,"symbol":"XRPUSDT","side":"BUY","type":"TAKE_PROFIT","quantity":"23.3","price":1.8936,"status":"NEW","timestamp":1748876908,"mode":"LIVE"}
[2025-06-02 15:08:29] {"orderId":105738401715,"parentOrder":105738399925,"symbol":"XRPUSDT","side":"BUY","type":"STOP_LOSS","quantity":"23.3","stopPrice":2.2936,"status":"NEW","timestamp":1748876909,"mode":"LIVE"}
[2025-06-02 15:08:54] {"action":"setLeverage","symbol":"PNUTUSDT","leverage":10,"result":{"symbol":"PNUTUSDT","leverage":10,"maxNotionalValue":"125000"}}
[2025-06-02 15:08:56] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 15:08:56] {"action":"calculateQuantity","symbol":"PNUTUSDT","amount":50,"price":0.25182,"quantityPrecision":0,"calculatedQuantity":198}
[2025-06-02 15:08:57] {"orderId":7268371413,"symbol":"PNUTUSDT","side":"short","amount":50,"quantity":"198","price":"0.0000000","tp":0.00182,"sl":0.40182,"status":"FILLED","timestamp":1748876937,"mode":"LIVE"}
[2025-06-02 15:08:58] {"orderId":7268371602,"parentOrder":7268371413,"symbol":"PNUTUSDT","side":"BUY","type":"TAKE_PROFIT","quantity":"198","price":0.00182,"status":"NEW","timestamp":1748876938,"mode":"LIVE"}
[2025-06-02 15:08:59] {"orderId":7268372039,"parentOrder":7268371413,"symbol":"PNUTUSDT","side":"BUY","type":"STOP_LOSS","quantity":"198","stopPrice":0.40182,"status":"NEW","timestamp":1748876939,"mode":"LIVE"}
[2025-06-02 18:52:45] {"action":"setLeverage","symbol":"XRPUSDT","leverage":10,"result":{"symbol":"XRPUSDT","leverage":10,"maxNotionalValue":"10000000"}}
[2025-06-02 18:52:45] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 18:52:45] {"action":"calculateQuantity","symbol":"XRPUSDT","amount":50,"price":2.1668,"quantityPrecision":1,"calculatedQuantity":23}
[2025-06-02 18:52:46] {"orderId":105755074327,"symbol":"XRPUSDT","side":"long","amount":50,"quantity":"23.0","price":"0.0000","tp":2.4168,"sl":2.0168,"status":"FILLED","timestamp":1748890366,"mode":"LIVE"}
[2025-06-02 18:52:47] {"orderId":105755074510,"parentOrder":105755074327,"symbol":"XRPUSDT","side":"SELL","type":"TAKE_PROFIT","quantity":"23.0","price":2.4168,"status":"NEW","timestamp":1748890367,"mode":"LIVE"}
[2025-06-02 18:52:48] {"orderId":105755074584,"parentOrder":105755074327,"symbol":"XRPUSDT","side":"SELL","type":"STOP_LOSS","quantity":"23.0","stopPrice":2.0168,"status":"NEW","timestamp":1748890368,"mode":"LIVE"}
[2025-06-02 18:53:29] {"action":"setLeverage","symbol":"ETHUSDT","leverage":10,"result":{"symbol":"ETHUSDT","leverage":10,"maxNotionalValue":"150000000"}}
[2025-06-02 18:53:30] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 18:53:30] {"action":"calculateQuantity","symbol":"ETHUSDT","amount":50,"price":2540.87,"quantityPrecision":3,"calculatedQuantity":0.019}
[2025-06-02 18:53:31] {"orderId":8389765899372177269,"symbol":"ETHUSDT","side":"long","amount":50,"quantity":"0.019","price":"0.00","tp":2541.12,"sl":2540.72,"status":"FILLED","timestamp":1748890411,"mode":"LIVE"}
[2025-06-02 18:53:32] {"orderId":8389765899372177751,"parentOrder":8389765899372177269,"symbol":"ETHUSDT","side":"SELL","type":"TAKE_PROFIT","quantity":"0.019","price":2541.12,"status":"NEW","timestamp":1748890412,"mode":"LIVE"}
[2025-06-02 18:53:33] {"orderId":8389765899372178090,"parentOrder":8389765899372177269,"symbol":"ETHUSDT","side":"SELL","type":"STOP_LOSS","quantity":"0.019","stopPrice":2540.72,"status":"NEW","timestamp":1748890413,"mode":"LIVE"}
[2025-06-02 18:54:25] {"action":"setLeverage","symbol":"ETHUSDT","leverage":10,"result":{"symbol":"ETHUSDT","leverage":10,"maxNotionalValue":"150000000"}}
[2025-06-02 18:54:26] {"action":"setPositionMode","mode":"ONE_WAY","error":"Binance API hatas\u0131: No need to change position side."}
[2025-06-02 18:54:26] {"action":"calculateQuantity","symbol":"ETHUSDT","amount":50,"price":2540.46,"quantityPrecision":3,"calculatedQuantity":0.019}
[2025-06-02 18:54:27] {"orderId":8389765899372332415,"symbol":"ETHUSDT","side":"long","amount":50,"quantity":"0.019","price":"0.00","tp":2540.71,"sl":2540.31,"status":"FILLED","timestamp":1748890467,"mode":"LIVE"}
[2025-06-02 18:54:28] {"orderId":8389765899372344592,"parentOrder":8389765899372332415,"symbol":"ETHUSDT","side":"SELL","type":"TAKE_PROFIT","quantity":"0.019","price":2540.71,"status":"NEW","timestamp":1748890468,"mode":"LIVE"}
