📌 RSI Scanner, который находит криптовалютные пары с перепроданным (RSI < 30) и перекупленным (RSI > 70) состоянием.
RSI (Индекс относительной силы) — это технический индикатор, измеряющий скорость и силу изменения цены актива. Он показывает, находится ли актив в зоне перекупленности или перепроданности, и помогает трейдерам находить потенциальные развороты.👨💻
#индикатор
📌 Подпишись Crypto Python❗️
RSI (Индекс относительной силы) — это технический индикатор, измеряющий скорость и силу изменения цены актива. Он показывает, находится ли актив в зоне перекупленности или перепроданности, и помогает трейдерам находить потенциальные развороты.
import ccxt
import talib
import pandas as pd
# Параметры сканера
EXCHANGE_NAME = "binance" # Название биржи
TIMEFRAME = "1h" # Таймфрейм (1 час)
RSI_PERIOD = 14 # Период RSI
TOP_N_PAIRS = 20 # Количество пар для анализа
# Инициализация CCXT
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Получаем список популярных пар (например, USDT)
def get_top_pairs():
tickers = exchange.fetch_tickers()
usdt_pairs = [symbol for symbol in tickers.keys() if "/USDT" in symbol]
return usdt_pairs[:TOP_N_PAIRS] # Ограничиваем количество пар
# Получаем исторические данные
def fetch_ohlcv(symbol):
try:
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=RSI_PERIOD + 1)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
except Exception as e:
print(f"Ошибка при загрузке данных для {symbol}: {e}")
return None
# Рассчитываем RSI
def calculate_rsi(df):
if df is None or len(df) < RSI_PERIOD:
return None
return talib.RSI(df["close"], timeperiod=RSI_PERIOD).iloc[-1]
# Основной сканер
def rsi_scanner():
pairs = get_top_pairs()
rsi_results = []
for pair in pairs:
df = fetch_ohlcv(pair)
rsi_value = calculate_rsi(df)
if rsi_value is not None:
rsi_results.append((pair, rsi_value))
# Отображаем результаты
overbought = [p for p in rsi_results if p[1] > 70]
oversold = [p for p in rsi_results if p[1] < 30]
print("\n🔹 **Перекупленные активы (RSI > 70):**")
for pair, rsi in overbought:
print(f"{pair}: {rsi:.2f}")
print("\n🔹 **Перепроданные активы (RSI < 30):**")
for pair, rsi in oversold:
print(f"{pair}: {rsi:.2f}")
# Запуск сканера
if __name__ == "__main__":
rsi_scanner()
#индикатор
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥7❤2
📌 Торговля по индексу страха и жадности (Fear & Greed Index)
Индекс страха и жадности (Fear & Greed Index, FGI) — это показатель, который отражает настроение участников рынка. Он варьируется от 0 (максимальный страх) до 100 (максимальная жадность) и помогает трейдерам определять, когда рынок находится в экстремальных состояниях.
Как интерпретировать индекс?
0-25 (экстремальный страх) → Трейдеры паникуют, массово продают, рынок может быть перепродан.
Возможность покупки (LONG).
25-50 (страх) → Настроения негативные, но не экстремальные.
50-75 (жадность) → Оптимизм, но рынок еще не перегрет.
75-100 (экстремальная жадность) → Все покупают, рынок может быть перекуплен.
Возможность фиксации прибыли или открытия SHORT.👨💻
#индикатор
📌 Подпишись Crypto Python❗️
Индекс страха и жадности (Fear & Greed Index, FGI) — это показатель, который отражает настроение участников рынка. Он варьируется от 0 (максимальный страх) до 100 (максимальная жадность) и помогает трейдерам определять, когда рынок находится в экстремальных состояниях.
Как интерпретировать индекс?
0-25 (экстремальный страх) → Трейдеры паникуют, массово продают, рынок может быть перепродан.
Возможность покупки (LONG).
25-50 (страх) → Настроения негативные, но не экстремальные.
50-75 (жадность) → Оптимизм, но рынок еще не перегрет.
75-100 (экстремальная жадность) → Все покупают, рынок может быть перекуплен.
Возможность фиксации прибыли или открытия SHORT.
import requests
import ccxt
import pandas as pd
import talib
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
RSI_PERIOD = 14
FGI_URL = "https://api.alternative.me/fng/?limit=1"
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Функция получения индекса страха и жадности
def get_fear_greed_index():
response = requests.get(FGI_URL).json()
fgi_value = int(response["data"][0]["value"])
return fgi_value
# Получаем исторические свечи
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=RSI_PERIOD + 1)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчитываем RSI
def calculate_rsi(df):
return talib.RSI(df["close"], timeperiod=RSI_PERIOD).iloc[-1]
# Основная логика
def trade_strategy():
fgi = get_fear_greed_index()
df = fetch_ohlcv(PAIR)
rsi = calculate_rsi(df)
print(f"Fear & Greed Index: {fgi}, RSI: {rsi:.2f}")
# Лонг при страхе и подтверждении RSI
if fgi < 25 and rsi < 30:
print(f"📈 BUY SIGNAL (Fear {fgi}, RSI {rsi:.2f})")
# Шорт при жадности и подтверждении RSI
elif fgi > 75 and rsi > 70:
print(f"📉 SELL SIGNAL (Greed {fgi}, RSI {rsi:.2f})")
# Запуск
if __name__ == "__main__":
trade_strategy()
#индикатор
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥7🐳2❤1
📌 Mean Reversion Bot – Бот на возврат к среднему
Смысл стратегии:
Mean Reversion (возврат к среднему) предполагает, что цена имеет тенденцию возвращаться к среднему значению после сильных отклонений.
Если цена далеко от среднего:
Выше – возможен шорт.
Ниже – возможен лонг.
Используем скользящую среднюю (SMA) и полосы Боллинджера (BB) для определения отклонений.👨💻
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Mean Reversion (возврат к среднему) предполагает, что цена имеет тенденцию возвращаться к среднему значению после сильных отклонений.
Если цена далеко от среднего:
Выше – возможен шорт.
Ниже – возможен лонг.
Используем скользящую среднюю (SMA) и полосы Боллинджера (BB) для определения отклонений.
import ccxt
import pandas as pd
import talib
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
SMA_PERIOD = 20 # Период скользящей средней
BB_STD_DEV = 2 # Отклонение Боллинджера
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Получаем данные
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=SMA_PERIOD + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет SMA и Bollinger Bands
def calculate_indicators(df):
sma = talib.SMA(df["close"], timeperiod=SMA_PERIOD).iloc[-1]
upper, middle, lower = talib.BBANDS(df["close"], timeperiod=SMA_PERIOD, nbdevup=BB_STD_DEV, nbdevdn=BB_STD_DEV)
return sma, upper.iloc[-1], lower.iloc[-1], df["close"].iloc[-1]
# Логика торговли
def mean_reversion_bot():
df = fetch_ohlcv(PAIR)
sma, upper, lower, close = calculate_indicators(df)
print(f"Цена: {close:.2f}, SMA: {sma:.2f}, BB Upper: {upper:.2f}, BB Lower: {lower:.2f}")
if close > upper:
print("📉 Цена выше верхней границы → возможен шорт.")
elif close < lower:
print("📈 Цена ниже нижней границы → возможен лонг.")
else:
print("⚡ Цена в нормальном диапазоне.")
# Запуск
if __name__ == "__main__":
mean_reversion_bot()
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍7❤3
📌 Обнаружение пробоев Боллинджера (Bollinger Bands Breakout)
Индикатор полос Боллинджера (Bollinger Bands, BB) измеряет волатильность и определяет уровни перекупленности/перепроданности:
Пробой верхней границы → Возможный сигнал к продолжению роста или ложному пробою (short).
Пробой нижней границы → Возможный сигнал на разворот вверх (long).
Сжатие полос (squeeze) → Ожидание сильного движения.👨💻
#индикатор
📌 Подпишись Crypto Python❗️
Индикатор полос Боллинджера (Bollinger Bands, BB) измеряет волатильность и определяет уровни перекупленности/перепроданности:
Пробой верхней границы → Возможный сигнал к продолжению роста или ложному пробою (short).
Пробой нижней границы → Возможный сигнал на разворот вверх (long).
Сжатие полос (squeeze) → Ожидание сильного движения.
import ccxt
import pandas as pd
import talib
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
BB_PERIOD = 20 # Период Боллинджера
BB_STD_DEV = 2 # Отклонение
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Получаем исторические данные
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=BB_PERIOD + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет Bollinger Bands
def calculate_bollinger_bands(df):
upper, middle, lower = talib.BBANDS(df["close"], timeperiod=BB_PERIOD, nbdevup=BB_STD_DEV, nbdevdn=BB_STD_DEV, matype=0)
return upper.iloc[-1], middle.iloc[-1], lower.iloc[-1], df["close"].iloc[-1]
# Анализ пробоя
def bollinger_breakout():
df = fetch_ohlcv(PAIR)
upper, middle, lower, close = calculate_bollinger_bands(df)
print(f"Цена: {close:.2f}, BB Upper: {upper:.2f}, BB Lower: {lower:.2f}")
if close > upper:
print("📈 Пробой верхней границы! Возможное продолжение роста или ложный пробой.")
elif close < lower:
print("📉 Пробой нижней границы! Возможный отскок вверх.")
# Запуск
if __name__ == "__main__":
bollinger_breakout()
#индикатор
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3❤1
📌 Moving Average Crossover – Сигнал при пересечении скользящих средних
Пересечение быстрой (короткой) и медленной (длинной) скользящей средней (SMA/EMA) генерирует торговый сигнал:
Golden Cross (быстрая пересекает медленную вверх) → сигнал на покупку (LONG).
Death Cross (быстрая пересекает медленную вниз) → сигнал на продажу (SHORT)👨💻
#индикатор
📌 Подпишись Crypto Python❗️
Пересечение быстрой (короткой) и медленной (длинной) скользящей средней (SMA/EMA) генерирует торговый сигнал:
Golden Cross (быстрая пересекает медленную вверх) → сигнал на покупку (LONG).
Death Cross (быстрая пересекает медленную вниз) → сигнал на продажу (SHORT)
import ccxt
import pandas as pd
import talib
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
SHORT_MA_PERIOD = 9 # Период короткой скользящей средней
LONG_MA_PERIOD = 21 # Период длинной скользящей средней
USE_EMA = True # Использовать EMA (True) или SMA (False)
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=LONG_MA_PERIOD + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Расчет скользящих средних
def calculate_moving_averages(df):
if USE_EMA:
short_ma = talib.EMA(df["close"], timeperiod=SHORT_MA_PERIOD)
long_ma = talib.EMA(df["close"], timeperiod=LONG_MA_PERIOD)
else:
short_ma = talib.SMA(df["close"], timeperiod=SHORT_MA_PERIOD)
long_ma = talib.SMA(df["close"], timeperiod=LONG_MA_PERIOD)
return short_ma.iloc[-2], long_ma.iloc[-2], short_ma.iloc[-1], long_ma.iloc[-1]
# Логика торговли
def moving_average_crossover():
df = fetch_ohlcv(PAIR)
short_prev, long_prev, short_now, long_now = calculate_moving_averages(df)
print(f"Текущая цена: {df['close'].iloc[-1]:.2f}")
print(f"Короткая MA: {short_now:.2f}, Длинная MA: {long_now:.2f}")
if short_prev < long_prev and short_now > long_now:
print("📈 Golden Cross! Сигнал на покупку (LONG).")
elif short_prev > long_prev and short_now < long_now:
print("📉 Death Cross! Сигнал на продажу (SHORT).")
else:
print("⚡ Нет пересечения, ждем сигнала.")
# Запуск
if __name__ == "__main__":
moving_average_crossover()
#индикатор
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🐳5❤3👍1
📌 Momentum Trading Bot – бот на основе моментума.
Смысл стратегии:
Momentum trading (торговля на моментуме) основана на том, что цена, движущаяся в одном направлении с высокой скоростью, имеет высокую вероятность продолжения тренда.
Используем:
ROC (Rate of Change) – скорость изменения цены.
RSI (Relative Strength Index) – подтверждение силы движения.
Скользящую среднюю (SMA) – определение тренда.👨💻
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Momentum trading (торговля на моментуме) основана на том, что цена, движущаяся в одном направлении с высокой скоростью, имеет высокую вероятность продолжения тренда.
Используем:
ROC (Rate of Change) – скорость изменения цены.
RSI (Relative Strength Index) – подтверждение силы движения.
Скользящую среднюю (SMA) – определение тренда.
import ccxt
import pandas as pd
import talib
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
ROC_PERIOD = 10 # Период для Rate of Change
SMA_PERIOD = 50 # Период скользящей средней
RSI_PERIOD = 14 # Период RSI
MOMENTUM_THRESHOLD = 2 # Порог моментума
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Получение исторических данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=max(ROC_PERIOD, SMA_PERIOD, RSI_PERIOD) + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет индикаторов
def calculate_indicators(df):
roc = talib.ROC(df["close"], timeperiod=ROC_PERIOD).iloc[-1]
sma = talib.SMA(df["close"], timeperiod=SMA_PERIOD).iloc[-1]
rsi = talib.RSI(df["close"], timeperiod=RSI_PERIOD).iloc[-1]
return roc, sma, rsi, df["close"].iloc[-1]
# Логика торговли
def momentum_trading_bot():
df = fetch_ohlcv(PAIR)
roc, sma, rsi, close = calculate_indicators(df)
print(f"Цена: {close:.2f}, ROC: {roc:.2f}, SMA: {sma:.2f}, RSI: {rsi:.2f}")
if close > sma and roc > MOMENTUM_THRESHOLD and rsi > 50:
print("📈 Сильный восходящий моментум → возможный лонг.")
elif close < sma and roc < -MOMENTUM_THRESHOLD and rsi < 50:
print("📉 Сильный нисходящий моментум → возможный шорт.")
else:
print("⚡ Нет явного моментума.")
# Запуск
if __name__ == "__main__":
momentum_trading_bot()
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍7
📌 MACD Signal Detector – Поиск дивергенций и сигналов MACD
Смысл стратегии:
MACD (Moving Average Convergence Divergence) – это индикатор, показывающий силу тренда и возможные точки разворота.
Используем:
MACD Line = EMA(12) - EMA(26) (разница между двумя экспоненциальными средними).
Signal Line = EMA(9) от MACD Line (сглаженная версия MACD).
Гистограмма MACD = MACD Line - Signal Line (определяет тренд).
Сигналы:
MACD Line пересекает Signal Line вверх → Сигнал на покупку (LONG).
MACD Line пересекает Signal Line вниз → Сигнал на продажу (SHORT).
Дивергенция MACD и цены → возможный разворот👨💻
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
MACD (Moving Average Convergence Divergence) – это индикатор, показывающий силу тренда и возможные точки разворота.
Используем:
MACD Line = EMA(12) - EMA(26) (разница между двумя экспоненциальными средними).
Signal Line = EMA(9) от MACD Line (сглаженная версия MACD).
Гистограмма MACD = MACD Line - Signal Line (определяет тренд).
Сигналы:
MACD Line пересекает Signal Line вверх → Сигнал на покупку (LONG).
MACD Line пересекает Signal Line вниз → Сигнал на продажу (SHORT).
Дивергенция MACD и цены → возможный разворот
import ccxt
import pandas as pd
import talib
import numpy as np
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
MACD_FAST = 12 # Быстрая EMA
MACD_SLOW = 26 # Медленная EMA
MACD_SIGNAL = 9 # EMA сигнальной линии
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=MACD_SLOW + MACD_SIGNAL + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет MACD и поиск дивергенции
def calculate_macd(df):
macd, signal, hist = talib.MACD(df["close"], fastperiod=MACD_FAST, slowperiod=MACD_SLOW, signalperiod=MACD_SIGNAL)
return macd.iloc[-2], signal.iloc[-2], hist.iloc[-2], macd.iloc[-1], signal.iloc[-1], hist.iloc[-1]
# Поиск дивергенции
def check_divergence(df, macd_hist):
price_min = df["close"].iloc[-10:].min()
price_max = df["close"].iloc[-10:].max()
macd_min = macd_hist[-10:].min()
macd_max = macd_hist[-10:].max()
if price_min < df["close"].iloc[-1] and macd_min > macd_hist[-1]:
return "📈 Бычья дивергенция! Возможен рост."
elif price_max > df["close"].iloc[-1] and macd_max < macd_hist[-1]:
return "📉 Медвежья дивергенция! Возможно падение."
return "⚡ Дивергенции не найдено."
# Логика торговли
def macd_signal_detector():
df = fetch_ohlcv(PAIR)
macd_prev, signal_prev, hist_prev, macd_now, signal_now, hist_now = calculate_macd(df)
print(f"Текущая цена: {df['close'].iloc[-1]:.2f}")
print(f"MACD: {macd_now:.2f}, Signal: {signal_now:.2f}, Histogram: {hist_now:.2f}")
if macd_prev < signal_prev and macd_now > signal_now:
print("📈 MACD пересек сигнальную линию вверх! Возможный лонг.")
elif macd_prev > signal_prev and macd_now < signal_now:
print("📉 MACD пересек сигнальную линию вниз! Возможный шорт.")
print(check_divergence(df, df["close"]))
# Запуск
if __name__ == "__main__":
macd_signal_detector()
#индикатор
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥5
📌 Breakout Trading Bot – Бот для торговли на пробоях уровней
Смысл стратегии:
Пробой уровней сопротивления или поддержки сигнализирует о возможном сильном движении.
Пробой вверх (breakout) → цена выходит выше сопротивления → лонг (покупка).
Пробой вниз (breakdown) → цена пробивает поддержку → шорт (продажа).
Используем максимумы и минимумы за N периодов для определения ключевых уровней👨💻
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Пробой уровней сопротивления или поддержки сигнализирует о возможном сильном движении.
Пробой вверх (breakout) → цена выходит выше сопротивления → лонг (покупка).
Пробой вниз (breakdown) → цена пробивает поддержку → шорт (продажа).
Используем максимумы и минимумы за N периодов для определения ключевых уровней
import ccxt
import pandas as pd
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
LOOKBACK_PERIOD = 20 # Количество свечей для поиска уровней
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=LOOKBACK_PERIOD + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Определение уровней сопротивления и поддержки
def calculate_levels(df):
resistance = df["high"].iloc[-LOOKBACK_PERIOD:].max() # Максимум за период
support = df["low"].iloc[-LOOKBACK_PERIOD:].min() # Минимум за период
return resistance, support
# Логика пробоя
def breakout_trading_bot():
df = fetch_ohlcv(PAIR)
resistance, support = calculate_levels(df)
close_price = df["close"].iloc[-1]
print(f"Цена: {close_price:.2f}, Сопротивление: {resistance:.2f}, Поддержка: {support:.2f}")
if close_price > resistance:
print("📈 Пробой вверх! Возможный лонг.")
elif close_price < support:
print("📉 Пробой вниз! Возможный шорт.")
else:
print("⚡ Цена в диапазоне, ждем пробоя.")
# Запуск
if __name__ == "__main__":
breakout_trading_bot()
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍3