📌"Анализатор Необычной Волатильности и Объема (UVVA)"🧑💻
📌 Что делает:🛠️
- Мониторит в реальном времени сразу несколько криптовалют на предмет необычного поведения:
- резких всплесков объема,
- расширения/сжатия диапазона,
- резких изменений в волатильности,
- появления «гепов» на мелком таймфрейме.
Сигналы можно использовать для:💸
- входа в пробой,
- скальпинга,
- детектирования фейковых движений или манипуляций.
#инструмент
📌 Подпишись Crypto Python❗️
📌 Что делает:🛠️
- Мониторит в реальном времени сразу несколько криптовалют на предмет необычного поведения:
- резких всплесков объема,
- расширения/сжатия диапазона,
- резких изменений в волатильности,
- появления «гепов» на мелком таймфрейме.
Сигналы можно использовать для:💸
- входа в пробой,
- скальпинга,
- детектирования фейковых движений или манипуляций.
import ccxt
import numpy as np
import time
exchange = ccxt.binance({'enableRateLimit': True})
symbols = ['BTC/USDT', 'ETH/USDT', 'SOL/USDT']
timeframe = '1m'
lookback = 50
volume_threshold = 2.5 # В 2.5 раза выше среднего
range_threshold = 2.0 # В 2 раза выше среднего диапазона
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=lookback)
return np.array(ohlcv)
def analyze(symbol, data):
volumes = data[:, 5]
highs = data[:, 2]
lows = data[:, 3]
closes = data[:, 4]
avg_volume = np.mean(volumes[:-1])
last_volume = volumes[-1]
avg_range = np.mean(highs[:-1] - lows[:-1])
last_range = highs[-1] - lows[-1]
volume_spike = last_volume > avg_volume * volume_threshold
range_spike = last_range > avg_range * range_threshold
if volume_spike and range_spike:
print(f"[{symbol}] ⚡ Обнаружено необычное поведение!")
print(f" Объем: {last_volume:.2f} (> {avg_volume:.2f})")
print(f" Диапазон: {last_range:.4f} (> {avg_range:.4f})")
return True
return False
while True:
print(f"\n🔍 Проверка ({time.strftime('%H:%M:%S')})")
for symbol in symbols:
try:
data = fetch_ohlcv(symbol)
analyze(symbol, data)
except Exception as e:
print(f"Ошибка с {symbol}: {e}")
time.sleep(60)
#инструмент
📌 Подпишись Crypto Python❗️
🔥5❤1
📌"Импульс на паузе (Impulse Pause Entry)"🧑💻
💡 Идея:🚀
Вход не во время импульса, а сразу после него, когда цена "замирает" в узком диапазоне. Это часто происходит перед продолжением движения.
Используется для:🧨
- Торговли пробоев с минимальным риском
- Снижения количества ложных входов
✅ Условия входа в сделку (лонг):
1. Импульс: свеча > X% роста (например, 1% на 1м таймфрейме)
2. Пауза: N следующих свечей с малым диапазоном и объемом
3. Выход вверх из диапазона паузы = сигнал на покупку
(для шорта — наоборот)
📉 Пример условий:💸
- Импульс: свеча выросла >1%
- Пауза: 3 свечи подряд, у которых диапазон < 0.3% и объём ниже среднего
- Если цена пробивает high импульсной свечи — входим в сделку
#торговые_стратегии
📌 Подпишись Crypto Python❗️
💡 Идея:🚀
Вход не во время импульса, а сразу после него, когда цена "замирает" в узком диапазоне. Это часто происходит перед продолжением движения.
Используется для:🧨
- Торговли пробоев с минимальным риском
- Снижения количества ложных входов
✅ Условия входа в сделку (лонг):
1. Импульс: свеча > X% роста (например, 1% на 1м таймфрейме)
2. Пауза: N следующих свечей с малым диапазоном и объемом
3. Выход вверх из диапазона паузы = сигнал на покупку
(для шорта — наоборот)
📉 Пример условий:💸
- Импульс: свеча выросла >1%
- Пауза: 3 свечи подряд, у которых диапазон < 0.3% и объём ниже среднего
- Если цена пробивает high импульсной свечи — входим в сделку
import ccxt
import time
import numpy as np
exchange = ccxt.binance({'enableRateLimit': True})
symbol = 'BTC/USDT'
timeframe = '1m'
impulse_threshold = 0.01 # 1% рост
pause_range_threshold = 0.003 # 0.3%
pause_candles = 3
def fetch_ohlcv(symbol):
return exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=20)
def check_impulse_pause(data):
closes = np.array([c[4] for c in data])
highs = np.array([c[2] for c in data])
lows = np.array([c[3] for c in data])
volumes = np.array([c[5] for c in data])
returns = (closes[1:] - closes[:-1]) / closes[:-1]
last_impulse_index = np.where(returns > impulse_threshold)[0]
if len(last_impulse_index) == 0:
return False
idx = last_impulse_index[-1] + 1
if idx + pause_candles >= len(closes):
return False
pause_ranges = highs[idx:idx+pause_candles] - lows[idx:idx+pause_candles]
avg_range = np.mean(closes[:-pause_candles] * pause_range_threshold)
if np.all(pause_ranges < avg_range):
breakout_price = highs[idx-1] # high импульсной свечи
current_price = closes[-1]
if current_price > breakout_price:
print(f"🚀 [{symbol}] Сигнал ЛОНГ: пробой после паузы на импульсе!")
return True
return False
while True:
try:
candles = fetch_ohlcv(symbol)
check_impulse_pause(candles)
except Exception as e:
print(f"Ошибка: {e}")
time.sleep(60)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
🔥3👍2❤1
📌"Smart Level Radar" — Умный сканер горизонтальных уровней поддержки/сопротивления с визуальной тепловой картой"🧑💻
🔍 Описание:🛠️
Инструмент автоматически сканирует исторические данные (OHLCV) и находит ключевые уровни, где:
- Цена останавливалась, отскакивала или пробивала
- Объем был на пиках
- Уровень тестировался многократно
- Затем он визуализирует уровни как тепловую карту (heatmap), показывая, где на графике сконцентрировано наибольшее "внимание" рынка.
🧠 Зачем трейдеру:💸
- Позволяет быстро оценить важные уровни поддержки/сопротивления
- Упрощает принятие решений по входу/выходу
- Работает как дневной "сканер рынка" перед сессией
- Может использоваться для любых активов: BTC, альты, акции
#инструмент
📌 Подпишись Crypto Python❗️
🔍 Описание:🛠️
Инструмент автоматически сканирует исторические данные (OHLCV) и находит ключевые уровни, где:
- Цена останавливалась, отскакивала или пробивала
- Объем был на пиках
- Уровень тестировался многократно
- Затем он визуализирует уровни как тепловую карту (heatmap), показывая, где на графике сконцентрировано наибольшее "внимание" рынка.
🧠 Зачем трейдеру:💸
- Позволяет быстро оценить важные уровни поддержки/сопротивления
- Упрощает принятие решений по входу/выходу
- Работает как дневной "сканер рынка" перед сессией
- Может использоваться для любых активов: BTC, альты, акции
import ccxt
import numpy as np
import matplotlib.pyplot as plt
exchange = ccxt.binance()
symbol = 'BTC/USDT'
timeframe = '1h'
limit = 1000
def fetch_ohlcv(symbol, timeframe, limit):
data = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
return np.array(data)
def detect_levels(candles, threshold=5):
highs = candles[:, 2]
lows = candles[:, 3]
levels = []
for i in range(2, len(candles) - 2):
high = highs[i]
low = lows[i]
count_high = np.sum(np.abs(highs[i-2:i+3] - high) < 0.001 * high)
count_low = np.sum(np.abs(lows[i-2:i+3] - low) < 0.001 * low)
if count_high >= threshold:
levels.append(high)
if count_low >= threshold:
levels.append(low)
return sorted(set([round(lvl, 2) for lvl in levels]))
def plot_levels(candles, levels):
timestamps = [c[0] for c in candles]
closes = [c[4] for c in candles]
plt.figure(figsize=(15, 7))
plt.plot(timestamps, closes, label='Price', color='black')
for lvl in levels:
plt.axhline(lvl, color='red', alpha=0.3)
plt.text(timestamps[0], lvl, str(lvl), color='red', fontsize=8)
plt.title('Smart Level Radar')
plt.xlabel('Time')
plt.ylabel('Price')
plt.grid(True)
plt.legend()
plt.show()
candles = fetch_ohlcv(symbol, timeframe, limit)
levels = detect_levels(candles)
plot_levels(candles, levels)
#инструмент
📌 Подпишись Crypto Python❗️
1👍3🔥2👏1
📌Bid-Ask Spread Heatmap (Монитор ликвидности по рынку)🧑💻
Описание:🚀
Этот скрипт показывает спред между bid и ask ценами на топ-ликвидных парах Binance, сортируя их по уровню "узости" спреда.
Это полезно для:💸
- выявления высоколиквидных пар для алготрейдинга;
- оценки "фрикционных" затрат при входе/выходе;
- настройки стратегий арбитража и маркет-мейкинга.
#инструмент
📌 Подпишись Crypto Python❗️
Описание:🚀
Этот скрипт показывает спред между bid и ask ценами на топ-ликвидных парах Binance, сортируя их по уровню "узости" спреда.
Это полезно для:💸
- выявления высоколиквидных пар для алготрейдинга;
- оценки "фрикционных" затрат при входе/выходе;
- настройки стратегий арбитража и маркет-мейкинга.
import ccxt
import time
exchange = ccxt.binance()
markets = exchange.load_markets()
symbols = [s for s in markets if s.endswith('/USDT') and markets[s]['active']]
def get_spread(symbol):
try:
orderbook = exchange.fetch_order_book(symbol, limit=5)
bid = orderbook['bids'][0][0] if orderbook['bids'] else None
ask = orderbook['asks'][0][0] if orderbook['asks'] else None
if bid is None or ask is None:
return None
spread_pct = (ask - bid) / ((ask + bid) / 2) * 100
return round(spread_pct, 4)
except Exception:
return None
def main():
spreads = []
for symbol in symbols:
spread = get_spread(symbol)
if spread is not None:
spreads.append((symbol, spread))
spreads.sort(key=lambda x: x[1]) # от самого узкого спреда
print(f"\nTop 10 пар с самым узким спредом:\n{'-'*40}")
for symbol, spread in spreads[:10]:
print(f"{symbol:15} → Спред: {spread:.4f}%")
if __name__ == "__main__":
while True:
main()
time.sleep(60) # обновление раз в минуту
#инструмент
📌 Подпишись Crypto Python❗️
👍4
📌"Liquidity Imbalance Pulse"🧑💻
🧠 Идея:🧨
Это не просто стратегия по индикаторам. Это модель, реагирующая на структурные изменения в стакане и ликвидности, когда происходит дисбаланс между спросом и предложением, приводящий к краткосрочным импульсам. Она:
- Использует данные ордербука (bid/ask depth)
- Сопоставляет дельту объема (агрессивные покупки/продажи)
- Отслеживает поведение цены в микроструктуре (1s–5s свечи)
- Алгоритм определяет: это ложное движение или начало реального импульса
📊 Сигналы:💸
Лонг:
- Обнаружен сильный дисбаланс: bid size резко увеличился, ask съедается маркет-ордерами
- Spread сузился
- Цена закрепляется выше локального уровня ликвидности
Шорт:
Обратная ситуация: ask усилился, маркет-продажи интенсивны, цена пробивает ликвидность вниз
#торговые_стратегии
📌 Подпишись Crypto Python❗️
🧠 Идея:🧨
Это не просто стратегия по индикаторам. Это модель, реагирующая на структурные изменения в стакане и ликвидности, когда происходит дисбаланс между спросом и предложением, приводящий к краткосрочным импульсам. Она:
- Использует данные ордербука (bid/ask depth)
- Сопоставляет дельту объема (агрессивные покупки/продажи)
- Отслеживает поведение цены в микроструктуре (1s–5s свечи)
- Алгоритм определяет: это ложное движение или начало реального импульса
📊 Сигналы:💸
Лонг:
- Обнаружен сильный дисбаланс: bid size резко увеличился, ask съедается маркет-ордерами
- Spread сузился
- Цена закрепляется выше локального уровня ликвидности
Шорт:
Обратная ситуация: ask усилился, маркет-продажи интенсивны, цена пробивает ликвидность вниз
import ccxt
import time
import datetime
# Настройки
symbol = 'BTC/USDT'
depth_limit = 20 # Глубина анализа стакана
imbalance_threshold = 0.5 # Чувствительность к дисбалансу
poll_interval = 3 # Интервал между проверками (сек)
# Инициализация биржи
exchange = ccxt.binance({
'enableRateLimit': True,
})
def get_orderbook_metrics():
try:
orderbook = exchange.fetch_order_book(symbol, limit=depth_limit)
bids = orderbook['bids']
asks = orderbook['asks']
bid_volume = sum([price * amount for price, amount in bids])
ask_volume = sum([price * amount for price, amount in asks])
best_bid = bids[0][0] if bids else 0
best_ask = asks[0][0] if asks else 0
spread = best_ask - best_bid
mid_price = (best_ask + best_bid) / 2 if best_bid and best_ask else 0
imbalance = (bid_volume - ask_volume) / (bid_volume + ask_volume + 1e-9)
return {
'bid_volume': bid_volume,
'ask_volume': ask_volume,
'imbalance': imbalance,
'spread': spread,
'mid_price': mid_price,
'timestamp': datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')
}
except Exception as e:
print("Ошибка при получении стакана:", str(e))
return None
def print_signal(metrics):
imbalance = metrics['imbalance']
signal = "⚪ Нейтрально"
if imbalance >= imbalance_threshold:
signal = "🟢 ЛОНГ сигнал"
elif imbalance <= -imbalance_threshold:
signal = "🔴 ШОРТ сигнал"
print(f"[{metrics['timestamp']}] {signal} | Imbalance: {imbalance:.2f} | "
f"BidVol: {metrics['bid_volume']:.0f} | AskVol: {metrics['ask_volume']:.0f} | "
f"Mid: {metrics['mid_price']:.2f} | Spread: {metrics['spread']:.2f}")
def run():
print("🚀 Старт стратегии Liquidity Imbalance Pulse\n")
while True:
metrics = get_orderbook_metrics()
if metrics:
print_signal(metrics)
time.sleep(poll_interval)
if __name__ == '__main__':
run()
#торговые_стратегии
📌 Подпишись Crypto Python❗️
1🔥4
📌Стратегия возврата к среднему с подтверждением через ATR и Price Action🧑💻
Стратегия возврата к среднему в трейдинге предполагает, что цены финансовых активов имеют тенденцию возвращаться к своим историческим средним значениям после отклонений.
Основная идея:🚀
Цена временно отклоняется от скользящей средней (SMA) — если отклонение достаточно велико (например, 2×ATR), и свеча подтверждает разворот, то стратегия выдаёт сигнал.
🔧 Настройки:
- SMA: 20-периодная
- ATR: 14-периодная
- Подтверждение: свеча закрылась в сторону возврата
- Сигналы: только когда цена находится вне 2×ATR от SMA
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Стратегия возврата к среднему в трейдинге предполагает, что цены финансовых активов имеют тенденцию возвращаться к своим историческим средним значениям после отклонений.
Основная идея:🚀
Цена временно отклоняется от скользящей средней (SMA) — если отклонение достаточно велико (например, 2×ATR), и свеча подтверждает разворот, то стратегия выдаёт сигнал.
🔧 Настройки:
- SMA: 20-периодная
- ATR: 14-периодная
- Подтверждение: свеча закрылась в сторону возврата
- Сигналы: только когда цена находится вне 2×ATR от SMA
import ccxt
import pandas as pd
import time
import datetime
# Настройки
symbol = 'BTC/USDT'
timeframe = '1h'
sma_period = 20
atr_period = 14
atr_multiplier = 2
exchange = ccxt.binance({
'enableRateLimit': True
})
def fetch_data():
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=max(sma_period, atr_period) + 50)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
return df
def compute_indicators(df):
df['sma'] = df['close'].rolling(sma_period).mean()
tr = pd.concat([
df['high'] - df['low'],
(df['high'] - df['close'].shift()).abs(),
(df['low'] - df['close'].shift()).abs()
], axis=1).max(axis=1)
df['atr'] = tr.rolling(atr_period).mean()
return df
def check_signal(df):
latest = df.iloc[-1]
prev = df.iloc[-2]
upper_band = latest['sma'] + atr_multiplier * latest['atr']
lower_band = latest['sma'] - atr_multiplier * latest['atr']
# Условия для сигнала на шорт
if latest['close'] > upper_band and latest['close'] < prev['close']:
print(f"🔻 SHORT сигнал [{symbol}] @ {latest['close']} — возврат от верхней границы")
# Условия для сигнала на лонг
elif latest['close'] < lower_band and latest['close'] > prev['close']:
print(f"🔼 LONG сигнал [{symbol}] @ {latest['close']} — возврат от нижней границы")
def main():
while True:
try:
df = fetch_data()
df = compute_indicators(df)
check_signal(df)
time.sleep(60 * 60) # Ждём 1 час до следующего бара
except Exception as e:
print("Ошибка:", e)
time.sleep(60)
if __name__ == '__main__':
main()
#торговые_стратегии
📌 Подпишись Crypto Python❗️
👍3🔥3
📌“Order Book Pressure Index” (OBPI)🧑💻
📌 Идея:🚀
Анализ микроструктуры рынка на основе дисбаланса заявок в стакане. Инструмент вычисляет «давление» покупателей и продавцов по данным ордербука, чтобы выдать сигнал: скрытая аккумуляция / дистрибуция.
🧠 Логика:🧨
1. Подгружаются bid/ask уровни (обычно топ 20).
2. Рассчитываются:
Bid Pressure = сумма объёмов всех заявок на покупку.
Ask Pressure = сумма объёмов всех заявок на продажу.
3. Order Book Pressure Index (OBPI) = (Bid Pressure - Ask Pressure) / (Bid Pressure + Ask Pressure)
Значения ближе к +1 → спрос > предложение → возможный рост.
Значения ближе к -1 → предложение > спрос → возможное падение.
4. Если OBPI стабильно высокий/низкий + цена стоит → сигнал накопления/распродажи.
#инструмент
📌 Подпишись Crypto Python❗️
📌 Идея:🚀
Анализ микроструктуры рынка на основе дисбаланса заявок в стакане. Инструмент вычисляет «давление» покупателей и продавцов по данным ордербука, чтобы выдать сигнал: скрытая аккумуляция / дистрибуция.
🧠 Логика:🧨
1. Подгружаются bid/ask уровни (обычно топ 20).
2. Рассчитываются:
Bid Pressure = сумма объёмов всех заявок на покупку.
Ask Pressure = сумма объёмов всех заявок на продажу.
3. Order Book Pressure Index (OBPI) = (Bid Pressure - Ask Pressure) / (Bid Pressure + Ask Pressure)
Значения ближе к +1 → спрос > предложение → возможный рост.
Значения ближе к -1 → предложение > спрос → возможное падение.
4. Если OBPI стабильно высокий/низкий + цена стоит → сигнал накопления/распродажи.
import ccxt
import time
exchange = ccxt.binance()
symbol = 'BTC/USDT'
def get_order_book(symbol, depth=20):
ob = exchange.fetch_order_book(symbol, limit=depth)
bids = ob['bids']
asks = ob['asks']
bid_vol = sum([b[1] for b in bids])
ask_vol = sum([a[1] for a in asks])
return bid_vol, ask_vol
def compute_obpi(bid_vol, ask_vol):
if bid_vol + ask_vol == 0:
return 0
return (bid_vol - ask_vol) / (bid_vol + ask_vol)
while True:
bid_vol, ask_vol = get_order_book(symbol)
obpi = compute_obpi(bid_vol, ask_vol)
print(f"[{symbol}] OBPI: {obpi:.4f}")
if obpi > 0.6:
print("🔼 Сильное давление покупателей — возможный рост")
elif obpi < -0.6:
print("🔽 Сильное давление продавцов — возможное падение")
else:
print("⏸️ Баланс, рынок в равновесии")
time.sleep(10)
#инструмент
📌 Подпишись Crypto Python❗️
1❤7👍1
📌"Live Liquidity Sweep Tracker" (Трекер снятия ликвидности в реальном времени)🧑💻
🔍 Что делает:🧨
Этот инструмент мониторит в реальном времени резкие всплески объёмов и цену, которая прорывает важные уровни (локальные хаи/лоу) — это может указывать на то, что была снята ликвидность (стопы) и дальше произойдёт откат или разворот.
📈 Зачем это нужно:💸
Часто перед разворотом маркетмейкеры "снимают стопы", чтобы собрать ликвидность.
Этот инструмент помогает отследить такие моменты — идеально для контртрендовых стратегий или входа на откате.
⚙️ Как работает:🛠️
1. Загружает свечи.
2. Находит локальные экстремумы (например, последние 3 high/low).
3. Следит за пробоем этих уровней на аномально высоком объёме.
4. Если пробой сопровождается скачком объёма — сигнал в консоль.
#инструмент
📌 Подпишись Crypto Python❗️
🔍 Что делает:🧨
Этот инструмент мониторит в реальном времени резкие всплески объёмов и цену, которая прорывает важные уровни (локальные хаи/лоу) — это может указывать на то, что была снята ликвидность (стопы) и дальше произойдёт откат или разворот.
📈 Зачем это нужно:💸
Часто перед разворотом маркетмейкеры "снимают стопы", чтобы собрать ликвидность.
Этот инструмент помогает отследить такие моменты — идеально для контртрендовых стратегий или входа на откате.
⚙️ Как работает:🛠️
1. Загружает свечи.
2. Находит локальные экстремумы (например, последние 3 high/low).
3. Следит за пробоем этих уровней на аномально высоком объёме.
4. Если пробой сопровождается скачком объёма — сигнал в консоль.
import ccxt
import pandas as pd
import time
exchange = ccxt.binance()
symbol = 'BTC/USDT'
timeframe = '1m'
limit = 100
def fetch_candles():
candles = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
df = pd.DataFrame(candles, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
return df
def detect_liquidity_sweep(df):
highs = df['high'][-4:-1]
lows = df['low'][-4:-1]
volume_mean = df['volume'][-20:-1].mean()
last = df.iloc[-1]
high_break = last['high'] > highs.max() and last['volume'] > volume_mean * 1.5
low_break = last['low'] < lows.min() and last['volume'] > volume_mean * 1.5
if high_break:
return f"🔴 Liquidity Sweep UP detected on {symbol} — possible short setup"
elif low_break:
return f"🟢 Liquidity Sweep DOWN detected on {symbol} — possible long setup"
return None
while True:
df = fetch_candles()
signal = detect_liquidity_sweep(df)
if signal:
print(signal)
else:
print("⚪ No liquidity sweep detected.")
time.sleep(10)
#инструмент
📌 Подпишись Crypto Python❗️
1👍6🔥2
📌"Imbalance Breakout" (Пробой Дисбаланса)🧑💻
📌 Идея:🚀
Выявить уровни, где был сильный дисбаланс спроса/предложения (обычно это зоны с одним направлением свечей без откатов), и торговать пробой этих зон на объёме. Это поведенческая модель, основанная на инерции ликвидности.
⚙️ Условия входа:💸
Лонг:
- Ищется участок из ≥3 бычьих свечей без теней снизу (или почти без).
- Цена консолидируется у верхней границы этой зоны (боковик).
- При пробое верхней границы на увеличенном объёме — вход в лонг.
Шорт:
- Аналогично: участок из ≥3 медвежьих свечей без откатов.
- Консолидация.
- Пробой вниз → вход в шорт.
✅ Подтверждение:
- Объём выше среднего.
- Волатильность расширяется.
- Желательно наличие дивергенции по RSI для раннего сигнала.
#торговые_стратегии
📌 Подпишись Crypto Python❗️
📌 Идея:🚀
Выявить уровни, где был сильный дисбаланс спроса/предложения (обычно это зоны с одним направлением свечей без откатов), и торговать пробой этих зон на объёме. Это поведенческая модель, основанная на инерции ликвидности.
⚙️ Условия входа:💸
Лонг:
- Ищется участок из ≥3 бычьих свечей без теней снизу (или почти без).
- Цена консолидируется у верхней границы этой зоны (боковик).
- При пробое верхней границы на увеличенном объёме — вход в лонг.
Шорт:
- Аналогично: участок из ≥3 медвежьих свечей без откатов.
- Консолидация.
- Пробой вниз → вход в шорт.
✅ Подтверждение:
- Объём выше среднего.
- Волатильность расширяется.
- Желательно наличие дивергенции по RSI для раннего сигнала.
import ccxt
import time
import pandas as pd
exchange = ccxt.binance()
symbol = 'BTC/USDT'
timeframe = '5m'
limit = 100
def fetch_candles(symbol, tf='5m', lim=100):
data = exchange.fetch_ohlcv(symbol, tf, limit=lim)
df = pd.DataFrame(data, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
return df
def detect_imbalance_breakout(df):
last = df.iloc[-4:-1] # Последние 3 свечи до текущей
current = df.iloc[-1]
bullish_block = all(last['close'] > last['open']) and all((last['low'] - last['open']).abs() < 0.1 * (last['high'] - last['low']))
bearish_block = all(last['close'] < last['open']) and all((last['high'] - last['open']).abs() < 0.1 * (last['high'] - last['low']))
if bullish_block and current['close'] > last['high'].max():
return "📈 Long breakout signal"
elif bearish_block and current['close'] < last['low'].min():
return "📉 Short breakout signal"
else:
return None
while True:
candles = fetch_candles(symbol, timeframe, limit)
signal = detect_imbalance_breakout(candles)
if signal:
print(f"[{symbol}] {signal}")
else:
print(f"[{symbol}] ⚪ No signal")
time.sleep(15)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
1👍6❤1
📌Triple Confirmation Strategy🧑💻
Индикаторы:🚀
1. EMA 200 — определение тренда.
2. RSI (14) — фильтрация перекупленности/перепроданности.
3. MACD — подтверждение импульса.
🧠 Логика стратегии:💸
✅ LONG:
- Цена выше EMA 200 (восходящий тренд).
- RSI пересекает снизу вверх уровень 50.
- MACD-гистограмма выше 0 и увеличивается.
❌ SHORT:
- Цена ниже EMA 200 (нисходящий тренд).
- RSI пересекает сверху вниз уровень 50.
- MACD-гистограмма ниже 0 и уменьшается.
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Индикаторы:🚀
1. EMA 200 — определение тренда.
2. RSI (14) — фильтрация перекупленности/перепроданности.
3. MACD — подтверждение импульса.
🧠 Логика стратегии:💸
✅ LONG:
- Цена выше EMA 200 (восходящий тренд).
- RSI пересекает снизу вверх уровень 50.
- MACD-гистограмма выше 0 и увеличивается.
❌ SHORT:
- Цена ниже EMA 200 (нисходящий тренд).
- RSI пересекает сверху вниз уровень 50.
- MACD-гистограмма ниже 0 и уменьшается.
import ccxt
import pandas as pd
import time
import ta
symbol = 'BTC/USDT'
timeframe = '5m'
limit = 200
exchange = ccxt.binance()
def fetch_ohlcv():
ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
return df
def apply_indicators(df):
df['ema200'] = ta.trend.ema_indicator(df['close'], window=200).ema_indicator()
df['rsi'] = ta.momentum.rsi(df['close'], window=14)
macd = ta.trend.macd(df['close'])
df['macd_hist'] = macd.macd_diff()
return df
def check_signals(df):
last = df.iloc[-1]
prev = df.iloc[-2]
# LONG setup
if (
last['close'] > last['ema200'] and
prev['rsi'] < 50 and last['rsi'] > 50 and
last['macd_hist'] > 0 > prev['macd_hist']
):
return '🟢 LONG signal detected'
# SHORT setup
if (
last['close'] < last['ema200'] and
prev['rsi'] > 50 and last['rsi'] < 50 and
last['macd_hist'] < 0 < prev['macd_hist']
):
return '🔴 SHORT signal detected'
return None
while True:
df = fetch_ohlcv()
df = apply_indicators(df)
signal = check_signals(df)
if signal:
print(f"{signal} at {df.iloc[-1]['timestamp']}")
else:
print(f"No signal — {df.iloc[-1]['timestamp']}")
time.sleep(30)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
1❤2👍2🔥2
📌"Market Regime Detector" — Определение рыночного режима в реальном времени🧑💻
🧠 Что делает?🧨
Автоматически определяет фазу рынка:
📈 Тренд вверх
📉 Тренд вниз
🔁 Флэт/Боковик
📍 Для чего нужен?
📊 Использовать разные стратегии под разные рыночные режимы.
⛔ Фильтровать сигналы в плохих условиях (например, во флэте).
🔁 Менять параметры индикаторов/рисков при смене режима.
🧠 Логика определения режима:🛠️
Используется ADX (силу тренда) и наклон EMA (направление).
- Флэт: ADX < 20
Тренд вверх: ADX > 20 и EMA наклон вверх
- Тренд вниз: ADX > 20 и EMA наклон вниз
#инструмент
📌 Подпишись Crypto Python❗️
🧠 Что делает?🧨
Автоматически определяет фазу рынка:
📈 Тренд вверх
📉 Тренд вниз
🔁 Флэт/Боковик
📍 Для чего нужен?
📊 Использовать разные стратегии под разные рыночные режимы.
⛔ Фильтровать сигналы в плохих условиях (например, во флэте).
🔁 Менять параметры индикаторов/рисков при смене режима.
🧠 Логика определения режима:🛠️
Используется ADX (силу тренда) и наклон EMA (направление).
- Флэт: ADX < 20
Тренд вверх: ADX > 20 и EMA наклон вверх
- Тренд вниз: ADX > 20 и EMA наклон вниз
import ccxt
import pandas as pd
import ta
import time
exchange = ccxt.binance()
symbol = 'BTC/USDT'
timeframe = '1h'
limit = 100
def get_ohlcv():
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=timeframe, limit=limit)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
return df
def detect_market_regime(df):
df['ema'] = ta.trend.ema_indicator(df['close'], window=50).ema_indicator()
adx = ta.trend.adx(df['high'], df['low'], df['close'], window=14)
df['adx'] = adx.adx()
last = df.iloc[-1]
prev = df.iloc[-2]
ema_slope = last['ema'] - prev['ema']
if last['adx'] < 20:
return '⚪ Флэт (Low ADX)'
elif last['adx'] >= 20 and ema_slope > 0:
return '🟢 Восходящий тренд'
elif last['adx'] >= 20 and ema_slope < 0:
return '🔴 Нисходящий тренд'
else:
return '❓ Неопределённый режим'
while True:
df = get_ohlcv()
regime = detect_market_regime(df)
print(f"[{df.iloc[-1]['timestamp']}] Рыночный режим: {regime}")
time.sleep(60)
#инструмент
📌 Подпишись Crypto Python❗️
1❤2👍2🔥2
📌"Adaptive Liquidity Trap"🧑💻
🧠 Идея:🚀
1. Вычисляется динамический диапазон ликвидности на основе объёма и спреда.
2. Если цена резко уходит за этот диапазон — вероятен ложный пробой.
3. Возврат в диапазон после прокола — сигнал на вход в противоположную сторону.
📊 Условия:🧨
- Вычисляется средний true spread: (high - low) / close
- Вычисляется волатильность и объём на 20 последних свечах
Если:
- Цена проколола границу диапазона ликвидности
- Объём выше среднего
- И следующая свеча вернулась обратно
→ сигнал на вход внутрь диапазона
🧩 Логика сигналов:💸
LONG, если был прокол вниз и возврат
SHORT, если был прокол вверх и возврат
#торговые_стратегии
📌 Подпишись Crypto Python❗️
🧠 Идея:🚀
1. Вычисляется динамический диапазон ликвидности на основе объёма и спреда.
2. Если цена резко уходит за этот диапазон — вероятен ложный пробой.
3. Возврат в диапазон после прокола — сигнал на вход в противоположную сторону.
📊 Условия:🧨
- Вычисляется средний true spread: (high - low) / close
- Вычисляется волатильность и объём на 20 последних свечах
Если:
- Цена проколола границу диапазона ликвидности
- Объём выше среднего
- И следующая свеча вернулась обратно
→ сигнал на вход внутрь диапазона
🧩 Логика сигналов:💸
LONG, если был прокол вниз и возврат
SHORT, если был прокол вверх и возврат
import ccxt
import pandas as pd
import time
symbol = 'BTC/USDT'
timeframe = '15m'
limit = 100
exchange = ccxt.binance()
def fetch_data():
ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=limit)
df = pd.DataFrame(ohlcv, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
return df
def generate_signal(df):
df['spread'] = (df['high'] - df['low']) / df['close']
df['avg_spread'] = df['spread'].rolling(window=20).mean()
df['avg_volume'] = df['volume'].rolling(window=20).mean()
last = df.iloc[-1]
prev = df.iloc[-2]
upper_bound = df['high'][-20:].mean() + df['avg_spread'].iloc[-1]
lower_bound = df['low'][-20:].mean() - df['avg_spread'].iloc[-1]
signal = None
if prev['low'] < lower_bound and last['close'] > lower_bound and last['volume'] > df['avg_volume'].iloc[-1]:
signal = "🟢 LONG сигнал: возврат в зону ликвидности"
elif prev['high'] > upper_bound and last['close'] < upper_bound and last['volume'] > df['avg_volume'].iloc[-1]:
signal = "🔴 SHORT сигнал: возврат в зону ликвидности"
return signal
while True:
try:
df = fetch_data()
signal = generate_signal(df)
if signal:
print(f"[{pd.Timestamp.now().strftime('%Y-%m-%d %H:%M:%S')}] {signal}")
else:
print(f"[{pd.Timestamp.now().strftime('%Y-%m-%d %H:%M:%S')}] 🔍 Нет сигнала")
time.sleep(60)
except Exception as e:
print("Ошибка:", e)
time.sleep(60)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
1❤3👍3
📌"Сентимент Индикатор из Ордербука (Order Book Sentiment Tracker)"🧑💻
📌 Идея:🚀
Создаёт оценку настроений (bullish/bearish) на основе глубины стакана (order book). В отличие от классических индикаторов, он использует реальное распределение заявок на покупку и продажу в режиме реального времени.
🧠 Как работает:🛠️
1. С помощью ccxt подключается к Binance.
2. Загружает глубину стакана (order book).
3. Сравнивает суммарный объём заявок выше текущей цены (ask) и ниже текущей цены (bid).
4. Вычисляет имбаланс и определяет:
Bullish, если ниже цены заявок больше.
Bearish, если выше цены заявок больше.
Neutral, если равновесие.
#инструмент
📌 Подпишись Crypto Python❗️
📌 Идея:🚀
Создаёт оценку настроений (bullish/bearish) на основе глубины стакана (order book). В отличие от классических индикаторов, он использует реальное распределение заявок на покупку и продажу в режиме реального времени.
🧠 Как работает:🛠️
1. С помощью ccxt подключается к Binance.
2. Загружает глубину стакана (order book).
3. Сравнивает суммарный объём заявок выше текущей цены (ask) и ниже текущей цены (bid).
4. Вычисляет имбаланс и определяет:
Bullish, если ниже цены заявок больше.
Bearish, если выше цены заявок больше.
Neutral, если равновесие.
import ccxt
import time
exchange = ccxt.binance()
symbol = 'BTC/USDT'
depth_limit = 50 # Кол-во уровней стакана
def get_orderbook_sentiment(symbol):
orderbook = exchange.fetch_order_book(symbol, limit=depth_limit)
bids = orderbook['bids']
asks = orderbook['asks']
bid_volume = sum([price * amount for price, amount in bids])
ask_volume = sum([price * amount for price, amount in asks])
imbalance = bid_volume - ask_volume
sentiment = "Neutral"
if imbalance > ask_volume * 0.1:
sentiment = "Bullish"
elif imbalance < -bid_volume * 0.1:
sentiment = "Bearish"
print(f"Sentiment: {sentiment}")
print(f"Bid Volume: {bid_volume:.2f}, Ask Volume: {ask_volume:.2f}, Imbalance: {imbalance:.2f}")
print("-" * 50)
while True:
try:
get_orderbook_sentiment(symbol)
time.sleep(5)
except Exception as e:
print("Error:", e)
time.sleep(5)
#инструмент
📌 Подпишись Crypto Python❗️
1👍4❤3
📌"Импульсная асимметрия" (Asymmetric Momentum Breakout)🧑💻
💡 Идея🧨
Большинство стратегий импульсов смотрят только на пробой в одном направлении
Здесь же мы ищем асимметричные всплески волатильности, когда:
- В одну сторону движение сильное,
- А в обратную — слабое и быстро затухает.
Это часто говорит о доминации покупателей или продавцов, и сигнал более надёжен, чем простой пробой.
📊 Логика🚀
1. Берём ATR (средний истинный диапазон) для оценки волатильности.
2. Отслеживаем импульсы:
Если свеча пробивает максимум последних N свечей и закрывается в верхней 20% своего диапазона — фиксируем бычий импульс.
Если пробивает минимум и закрывается в нижней 20% диапазона — медвежий импульс.
3. Проверяем асимметрию:
После импульса в обратную сторону не должно быть свечи с амплитудой > 0.5 от импульсной в течение M свечей.
4. Если условия соблюдены — даём сигнал на вход.
#торговые_стратегии
📌 Подпишись Crypto Python❗️
💡 Идея🧨
Большинство стратегий импульсов смотрят только на пробой в одном направлении
Здесь же мы ищем асимметричные всплески волатильности, когда:
- В одну сторону движение сильное,
- А в обратную — слабое и быстро затухает.
Это часто говорит о доминации покупателей или продавцов, и сигнал более надёжен, чем простой пробой.
📊 Логика🚀
1. Берём ATR (средний истинный диапазон) для оценки волатильности.
2. Отслеживаем импульсы:
Если свеча пробивает максимум последних N свечей и закрывается в верхней 20% своего диапазона — фиксируем бычий импульс.
Если пробивает минимум и закрывается в нижней 20% диапазона — медвежий импульс.
3. Проверяем асимметрию:
После импульса в обратную сторону не должно быть свечи с амплитудой > 0.5 от импульсной в течение M свечей.
4. Если условия соблюдены — даём сигнал на вход.
import ccxt
import pandas as pd
import time
exchange = ccxt.binance()
symbol = 'BTC/USDT'
timeframe = '5m'
lookback = 20
cooldown = 5
def fetch_ohlcv():
ohlcv = exchange.fetch_ohlcv(symbol, timeframe, limit=lookback+50)
df = pd.DataFrame(ohlcv, columns=['time', 'open', 'high', 'low', 'close', 'volume'])
df['time'] = pd.to_datetime(df['time'], unit='ms')
return df
def atr(df, period=14):
df['h-l'] = df['high'] - df['low']
df['h-c'] = abs(df['high'] - df['close'].shift())
df['l-c'] = abs(df['low'] - df['close'].shift())
tr = df[['h-l', 'h-c', 'l-c']].max(axis=1)
return tr.rolling(period).mean()
def detect_signals():
df = fetch_ohlcv()
df['ATR'] = atr(df)
last = df.iloc[-1]
prev_high = df['high'][-lookback-1:-1].max()
prev_low = df['low'][-lookback-1:-1].min()
# Проверка бычьего импульса
if last['high'] > prev_high and (last['close'] - last['low']) / (last['high'] - last['low']) > 0.8:
# Проверяем асимметрию
after_impulse = df.iloc[-cooldown:]
if all((after_impulse['high'] - after_impulse['low']) < 0.5 * (last['high'] - last['low'])):
print(f"🐂 Bullish breakout signal at {last['time']} price: {last['close']}")
# Проверка медвежьего импульса
if last['low'] < prev_low and (last['high'] - last['close']) / (last['high'] - last['low']) > 0.8:
after_impulse = df.iloc[-cooldown:]
if all((after_impulse['high'] - after_impulse['low']) < 0.5 * (last['high'] - last['low'])):
print(f"🐻 Bearish breakout signal at {last['time']} price: {last['close']}")
while True:
try:
detect_signals()
time.sleep(5)
except Exception as e:
print("Error:", e)
time.sleep(5)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
🔥5👍3
📌"Индикатор ликвидности и скрытых уровней" (Hidden Liquidity Levels Scanner)🧑💻
💡 Суть инструмента 🚀
Большинство трейдеров смотрят на цену и индикаторы, но алготрейдеру критически важно знать, где в ордербуке стоят крупные лимитные заявки, потому что они часто:
- Разворачивают цену
- Замедляют импульсы
- Выступают как "магниты" для цены
📊 Наш инструмент будет:🛠️
1. Подключаться к Binance
2. Сканировать стакан ордеров (order book).
3. Выделять аномально крупные кластеры заявок.
4. Отображать их в консоли с пометкой:
🟢 крупная поддержка (buy wall)
🔴 крупное сопротивление (sell wall)
#инструмент
📌 Подпишись Crypto Python❗️
💡 Суть инструмента 🚀
Большинство трейдеров смотрят на цену и индикаторы, но алготрейдеру критически важно знать, где в ордербуке стоят крупные лимитные заявки, потому что они часто:
- Разворачивают цену
- Замедляют импульсы
- Выступают как "магниты" для цены
📊 Наш инструмент будет:🛠️
1. Подключаться к Binance
2. Сканировать стакан ордеров (order book).
3. Выделять аномально крупные кластеры заявок.
4. Отображать их в консоли с пометкой:
🟢 крупная поддержка (buy wall)
🔴 крупное сопротивление (sell wall)
import ccxt
import time
exchange = ccxt.binance()
symbol = 'BTC/USDT'
threshold = 5 # множитель среднего объема в стакане для выделения
def get_order_book():
order_book = exchange.fetch_order_book(symbol, limit=50)
bids = order_book['bids'] # [price, amount]
asks = order_book['asks']
bid_volumes = [b[1] for b in bids]
ask_volumes = [a[1] for a in asks]
avg_bid = sum(bid_volumes) / len(bid_volumes)
avg_ask = sum(ask_volumes) / len(ask_volumes)
large_bids = [(p, v) for p, v in bids if v > avg_bid * threshold]
large_asks = [(p, v) for p, v in asks if v > avg_ask * threshold]
print("\n=== Hidden Liquidity Levels ===")
if large_bids:
for price, vol in large_bids:
print(f"🟢 BUY WALL: {price:.2f} | {vol:.4f} BTC")
if large_asks:
for price, vol in large_asks:
print(f"🔴 SELL WALL: {price:.2f} | {vol:.4f} BTC")
if not large_bids and not large_asks:
print("Нет значимых уровней")
while True:
try:
get_order_book()
time.sleep(3)
except Exception as e:
print("Ошибка:", e)
time.sleep(5)
#инструмент
📌 Подпишись Crypto Python❗️
👍4❤1
📌"Импульс на истощении ликвидности" (Liquidity Exhaustion Breakout).🧑💻
💡 Суть стратегии:🚀
Вместо того чтобы просто ловить пробои или откаты, мы отслеживаем момент, когда:
1. Ликвидность (глубина ордербука) резко уменьшается в одну сторону.
2. Цена при этом начинает двигаться в направлении ослабевшей стороны.
3. Подтверждаем сигнал с помощью ускорения тикового потока сделок.
📊 Логика работы:🛠️
- Если из стакана исчезает крупная поддержка (buy wall) → цена пробьёт вниз.
- Если исчезает крупное сопротивление (sell wall) → цена пробьёт вверх.
- Входим в сторону исчезнувшей ликвидности, пока маркет-мейкеры не успели восстановить стенку.
#торговые_стратегии
📌 Подпишись Crypto Python❗️
💡 Суть стратегии:🚀
Вместо того чтобы просто ловить пробои или откаты, мы отслеживаем момент, когда:
1. Ликвидность (глубина ордербука) резко уменьшается в одну сторону.
2. Цена при этом начинает двигаться в направлении ослабевшей стороны.
3. Подтверждаем сигнал с помощью ускорения тикового потока сделок.
📊 Логика работы:🛠️
- Если из стакана исчезает крупная поддержка (buy wall) → цена пробьёт вниз.
- Если исчезает крупное сопротивление (sell wall) → цена пробьёт вверх.
- Входим в сторону исчезнувшей ликвидности, пока маркет-мейкеры не успели восстановить стенку.
import ccxt
import time
exchange = ccxt.binance()
symbol = 'BTC/USDT'
threshold_ratio = 0.4 # падение объема >60% считается исчезновением ликвидности
limit = 20 # глубина стакана
prev_bids = []
prev_asks = []
def detect_liquidity_exhaustion():
global prev_bids, prev_asks
ob = exchange.fetch_order_book(symbol, limit=limit)
bids = ob['bids']
asks = ob['asks']
top_bid_volume = sum([v for _, v in bids[:3]])
top_ask_volume = sum([v for _, v in asks[:3]])
signal = None
if prev_bids:
if top_bid_volume < sum(prev_bids) * threshold_ratio:
signal = "🔴 Возможен пробой вниз — исчезла поддержка!"
if prev_asks:
if top_ask_volume < sum(prev_asks) * threshold_ratio:
signal = "🟢 Возможен пробой вверх — исчезло сопротивление!"
prev_bids = [v for _, v in bids[:3]]
prev_asks = [v for _, v in asks[:3]]
if signal:
print(f"[{symbol}] {signal}")
else:
print(f"[{symbol}] Ситуация стабильна.")
while True:
try:
detect_liquidity_exhaustion()
time.sleep(2)
except Exception as e:
print("Ошибка:", e)
time.sleep(5)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
👍5
📌"Market Heatmap Engine" — движок для построения в реальном времени тепловой карты крипторынка с учётом:
- силы тренда,
- притока/оттока ликвидности,
- скорости изменения цены.
💡 Главная идея — видеть рынок как "карту температур": красные сектора — перегретые активы с высокой вероятностью коррекции, зелёные — активы в фазе накопления, готовые к импульсу.
🔍 Логика работы:🛠️
1. Берём список монет с Binance (например, топ-50 по объёму).
2. Для каждой монеты:
- рассчитываем скорость изменения цены (momentum);
- измеряем изменение глубины стакана за последние секунды;
- оцениваем соотношение рыночных ордеров к лимитным.
3. На основе этих метрик формируем индекс перегрева от -100 до +100.
4. Отдаём данные в консоль или в браузер как тепловую карту.
#инструмент
📌 Подпишись Crypto Python❗️
- силы тренда,
- притока/оттока ликвидности,
- скорости изменения цены.
💡 Главная идея — видеть рынок как "карту температур": красные сектора — перегретые активы с высокой вероятностью коррекции, зелёные — активы в фазе накопления, готовые к импульсу.
🔍 Логика работы:🛠️
1. Берём список монет с Binance (например, топ-50 по объёму).
2. Для каждой монеты:
- рассчитываем скорость изменения цены (momentum);
- измеряем изменение глубины стакана за последние секунды;
- оцениваем соотношение рыночных ордеров к лимитным.
3. На основе этих метрик формируем индекс перегрева от -100 до +100.
4. Отдаём данные в консоль или в браузер как тепловую карту.
import ccxt
import time
import numpy as np
from prettytable import PrettyTable
exchange = ccxt.binance()
symbols = [m['symbol'] for m in exchange.fetch_markets() if '/USDT' in m['symbol']][:15]
prev_prices = {}
prev_bids = {}
prev_asks = {}
def get_heatmap():
table = PrettyTable(["Symbol", "Momentum", "Liquidity Δ", "Heat Index"])
for symbol in symbols:
try:
# Цена
ticker = exchange.fetch_ticker(symbol)
price = ticker['last']
momentum = 0
if symbol in prev_prices:
momentum = (price - prev_prices[symbol]) / prev_prices[symbol] * 100
# Ликвидность
orderbook = exchange.fetch_order_book(symbol, limit=10)
bids_vol = sum([v for _, v in orderbook['bids']])
asks_vol = sum([v for _, v in orderbook['asks']])
liquidity_change = 0
if symbol in prev_bids and symbol in prev_asks:
prev_liq = prev_bids[symbol] + prev_asks[symbol]
curr_liq = bids_vol + asks_vol
liquidity_change = (curr_liq - prev_liq) / prev_liq * 100 if prev_liq != 0 else 0
# Индекс перегрева
heat_index = momentum * 0.7 + liquidity_change * 0.3
table.add_row([
symbol,
f"{momentum:+.2f}%",
f"{liquidity_change:+.2f}%",
f"{heat_index:+.2f}"
])
# Сохраняем предыдущие значения
prev_prices[symbol] = price
prev_bids[symbol] = bids_vol
prev_asks[symbol] = asks_vol
except Exception as e:
pass
print("\033c", end="") # Очистка консоли
print(table)
while True:
get_heatmap()
time.sleep(3)
#инструмент
📌 Подпишись Crypto Python❗️
❤3👍2
📌"Радар крупных скрытых сделок (Stealth Trade Radar)".🧑💻
💡 Суть:🛠️
Большие игроки часто маскируют свои входы и выходы:
- разбивают ордера на мелкие,
- или используют быстрое выставление и снятие заявок.
Этот инструмент будет отслеживать поток сделок (trades) и искать аномальные паттерны, указывающие на скрытое накопление или сброс позиции.
📊 Логика:🧨
1. Получаем поток сделок с биржи через ccxt (fetch_trades).
2. Группируем их по направлению (покупка/продажа).
3. Считаем суммарный объём за последние N секунд.
4. Если за короткое время прошло аномально много мелких сделок в одну сторону — фиксируем сигнал.
#инструмент
📌 Подпишись Crypto Python❗️
💡 Суть:🛠️
Большие игроки часто маскируют свои входы и выходы:
- разбивают ордера на мелкие,
- или используют быстрое выставление и снятие заявок.
Этот инструмент будет отслеживать поток сделок (trades) и искать аномальные паттерны, указывающие на скрытое накопление или сброс позиции.
📊 Логика:🧨
1. Получаем поток сделок с биржи через ccxt (fetch_trades).
2. Группируем их по направлению (покупка/продажа).
3. Считаем суммарный объём за последние N секунд.
4. Если за короткое время прошло аномально много мелких сделок в одну сторону — фиксируем сигнал.
import ccxt
import time
from collections import deque
exchange = ccxt.binance()
symbol = 'BTC/USDT'
WINDOW_SEC = 5 # окно анализа в секундах
VOLUME_THRESHOLD = 50 # суммарный объем для сигнала
MAX_TRADE_SIZE = 0.1 # "мелкая" сделка
buy_trades = deque()
sell_trades = deque()
def check_stealth_trades():
global buy_trades, sell_trades
trades = exchange.fetch_trades(symbol)
now = time.time()
for t in trades:
ts = t['timestamp'] / 1000
size = t['amount']
side = t['side']
# Учитываем только "мелкие" сделки
if size <= MAX_TRADE_SIZE:
if side == 'buy':
buy_trades.append((ts, size))
else:
sell_trades.append((ts, size))
# Чистим старые сделки
while buy_trades and now - buy_trades[0][0] > WINDOW_SEC:
buy_trades.popleft()
while sell_trades and now - sell_trades[0][0] > WINDOW_SEC:
sell_trades.popleft()
buy_volume = sum(s for _, s in buy_trades)
sell_volume = sum(s for _, s in sell_trades)
if buy_volume > VOLUME_THRESHOLD:
print(f"🟢 Обнаружено скрытое накопление! Объем {buy_volume:.4f} {symbol}")
elif sell_volume > VOLUME_THRESHOLD:
print(f"🔴 Обнаружен скрытый сброс! Объем {sell_volume:.4f} {symbol}")
else:
print(f"[{symbol}] Активных скрытых сделок нет.")
while True:
try:
check_stealth_trades()
time.sleep(2)
except Exception as e:
print("Ошибка:", e)
time.sleep(5)
#инструмент
📌 Подпишись Crypto Python❗️
👍4❤1
📌"Сдвиг ликвидности + фейковый пробой" (Liquidity Shift & Trap Breakout).🧑💻
💡 Суть стратегии: 🚀
Большинство пробоев ложные — маркет-мейкеры специально создают видимость движения, чтобы заманить толпу.
Мы не просто избегаем ложных пробоев — мы торгуем против них, используя данные из ордербука и тиков.
📊 Логика работы:🛠️
1. Отслеживаем момент, когда цена пробивает уровень и в стакане резко появляется противоположная стена ликвидности (новые крупные ордера).
2. Проверяем, что после пробоя тик-флоу сделок идёт в противоположную сторону.
3. Входим в позицию против пробоя (ловим возврат цены в диапазон).
4. Выходим, когда цена возвращается в зону до пробоя.
#торговые_стратегии
📌 Подпишись Crypto Python❗️
💡 Суть стратегии: 🚀
Большинство пробоев ложные — маркет-мейкеры специально создают видимость движения, чтобы заманить толпу.
Мы не просто избегаем ложных пробоев — мы торгуем против них, используя данные из ордербука и тиков.
📊 Логика работы:🛠️
1. Отслеживаем момент, когда цена пробивает уровень и в стакане резко появляется противоположная стена ликвидности (новые крупные ордера).
2. Проверяем, что после пробоя тик-флоу сделок идёт в противоположную сторону.
3. Входим в позицию против пробоя (ловим возврат цены в диапазон).
4. Выходим, когда цена возвращается в зону до пробоя.
import ccxt
import time
exchange = ccxt.binance()
symbol = 'BTC/USDT'
limit = 20
prev_price = None
prev_bids = []
prev_asks = []
def detect_fake_breakout():
global prev_price, prev_bids, prev_asks
ob = exchange.fetch_order_book(symbol, limit=limit)
ticker = exchange.fetch_ticker(symbol)
price = ticker['last']
bids = ob['bids']
asks = ob['asks']
top_bid_volume = sum([v for _, v in bids[:3]])
top_ask_volume = sum([v for _, v in asks[:3]])
signal = None
if prev_price:
# Пробой вверх + внезапное появление крупной стены продаж
if price > prev_price * 1.002 and top_ask_volume > sum(prev_asks) * 1.5:
signal = "🔴 Фейковый пробой вверх! Возможен возврат вниз."
# Пробой вниз + внезапная крупная поддержка
elif price < prev_price * 0.998 and top_bid_volume > sum(prev_bids) * 1.5:
signal = "🟢 Фейковый пробой вниз! Возможен возврат вверх."
prev_price = price
prev_bids = [v for _, v in bids[:3]]
prev_asks = [v for _, v in asks[:3]]
if signal:
print(f"[{symbol}] {signal}")
else:
print(f"[{symbol}] Нет сигналов.")
while True:
try:
detect_fake_breakout()
time.sleep(2)
except Exception as e:
print("Ошибка:", e)
time.sleep(5)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
🔥4❤1👍1