📌 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
📌 Фильтрация сильных трендов с помощью ADX
Смысл стратегии:
Индикатор ADX (Average Directional Index) измеряет силу тренда, но не его направление.
Directional Movement Index (DMI) – это индикатор, который оценивает направление и силу тренда, используя две линии:
+DI (Positive Directional Indicator) – показывает силу восходящего движения.
-DI (Negative Directional Indicator) – показывает силу нисходящего движения.
ADX > 25 → тренд сильный, можно входить в позицию.
ADX < 25 → тренда нет, лучше не торговать.
+DI выше -DI → бычий тренд (лонг).
-DI выше +DI → медвежий тренд (шорт).
Используем ADX + DI (Directional Movement Index) для фильтрации трендов👨💻
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Индикатор ADX (Average Directional Index) измеряет силу тренда, но не его направление.
Directional Movement Index (DMI) – это индикатор, который оценивает направление и силу тренда, используя две линии:
+DI (Positive Directional Indicator) – показывает силу восходящего движения.
-DI (Negative Directional Indicator) – показывает силу нисходящего движения.
ADX > 25 → тренд сильный, можно входить в позицию.
ADX < 25 → тренда нет, лучше не торговать.
+DI выше -DI → бычий тренд (лонг).
-DI выше +DI → медвежий тренд (шорт).
Используем ADX + DI (Directional Movement Index) для фильтрации трендов
import ccxt
import pandas as pd
import talib
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
ADX_PERIOD = 14 # Период ADX
TREND_THRESHOLD = 25 # Порог тренда
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
exchange.load_markets()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=ADX_PERIOD + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет ADX и DMI
def calculate_adx(df):
adx = talib.ADX(df["high"], df["low"], df["close"], timeperiod=ADX_PERIOD).iloc[-1]
plus_di = talib.PLUS_DI(df["high"], df["low"], df["close"], timeperiod=ADX_PERIOD).iloc[-1]
minus_di = talib.MINUS_DI(df["high"], df["low"], df["close"], timeperiod=ADX_PERIOD).iloc[-1]
return adx, plus_di, minus_di
# Логика торговли
def adx_trend_filter():
df = fetch_ohlcv(PAIR)
adx, plus_di, minus_di = calculate_adx(df)
print(f"Цена: {df['close'].iloc[-1]:.2f}, ADX: {adx:.2f}, +DI: {plus_di:.2f}, -DI: {minus_di:.2f}")
if adx > TREND_THRESHOLD:
if plus_di > minus_di:
print("📈 Сильный восходящий тренд! Возможный лонг.")
elif minus_di > plus_di:
print("📉 Сильный нисходящий тренд! Возможный шорт.")
else:
print("⚡ Тренда нет, лучше не торговать.")
# Запуск
if __name__ == "__main__":
adx_trend_filter()
#индикатор
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍2
📌Scalping Bot – Бот для скальпинга с высокой частотой сделок
Смысл стратегии:
Скальпинг – это краткосрочная торговля с высокой частотой сделок, использующая маленькие движения цены.
Работает на низких таймфреймах (1m, 5m).
Использует быстрые индикаторы (EMA, VWAP, RSI, объём).
Быстро входит и выходит из рынка, зарабатывая на небольших колебаниях.👨💻
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Скальпинг – это краткосрочная торговля с высокой частотой сделок, использующая маленькие движения цены.
Работает на низких таймфреймах (1m, 5m).
Использует быстрые индикаторы (EMA, VWAP, RSI, объём).
Быстро входит и выходит из рынка, зарабатывая на небольших колебаниях.
import ccxt
import pandas as pd
import talib
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1m" # Скальпинг на минутных свечах
EMA_SHORT = 9
EMA_LONG = 21
RSI_PERIOD = 14
RSI_OVERBOUGHT = 70
RSI_OVERSOLD = 30
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=EMA_LONG + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет индикаторов
def calculate_indicators(df):
ema_short = talib.EMA(df["close"], timeperiod=EMA_SHORT).iloc[-1]
ema_long = talib.EMA(df["close"], timeperiod=EMA_LONG).iloc[-1]
rsi = talib.RSI(df["close"], timeperiod=RSI_PERIOD).iloc[-1]
return ema_short, ema_long, rsi
# Логика сигналов
def scalp_signal():
df = fetch_ohlcv(PAIR)
ema_short, ema_long, rsi = calculate_indicators(df)
price = df["close"].iloc[-1]
print(f"Цена: {price:.2f}, EMA Short: {ema_short:.2f}, EMA Long: {ema_long:.2f}, RSI: {rsi:.2f}")
if ema_short > ema_long and rsi < RSI_OVERBOUGHT:
print("📈 Сигнал на покупку (лонг).")
elif ema_short < ema_long and rsi > RSI_OVERSOLD:
print("📉 Сигнал на продажу (шорт).")
else:
print("⚡ Нет сигнала, ждем.")
# Запуск
if __name__ == "__main__":
while True:
scalp_signal()
time.sleep(10) # Ждем 10 секунд перед следующей проверкой
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍4
📌 Stochastic Reversal Detector – Анализ точек разворота по стохастическому осциллятору
Смысл стратегии:
Стохастический осциллятор (Stochastic) измеряет перекупленность / перепроданность актива и помогает находить развороты.
%K – основная линия (быстрая).
%D – сглаженная линия (медленная, обычно SMA от %K).
Сигналы разворота:
%K > 80 и пересекает %D вниз → перекупленность → сигнал на шорт.
%K < 20 и пересекает %D вверх → перепроданность → сигнал на лонг🧑💻
⚠️ Важно: Стохастик может давать ложные сигналы на сильных трендах.
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Стохастический осциллятор (Stochastic) измеряет перекупленность / перепроданность актива и помогает находить развороты.
%K – основная линия (быстрая).
%D – сглаженная линия (медленная, обычно SMA от %K).
Сигналы разворота:
%K > 80 и пересекает %D вниз → перекупленность → сигнал на шорт.
%K < 20 и пересекает %D вверх → перепроданность → сигнал на лонг
⚠️ Важно: Стохастик может давать ложные сигналы на сильных трендах.
import ccxt
import pandas as pd
import talib
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
STOCH_PERIOD = 14 # Период стохастика
STOCH_SMOOTH_K = 3 # Сглаживание %K
STOCH_SMOOTH_D = 3 # Сглаживание %D
OVERBOUGHT = 80
OVERSOLD = 20
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=STOCH_PERIOD + STOCH_SMOOTH_K + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет стохастического осциллятора
def calculate_stochastic(df):
k, d = talib.STOCH(df["high"], df["low"], df["close"],
fastk_period=STOCH_PERIOD,
slowk_period=STOCH_SMOOTH_K, slowk_matype=0,
slowd_period=STOCH_SMOOTH_D, slowd_matype=0)
return k.iloc[-2], d.iloc[-2], k.iloc[-1], d.iloc[-1]
# Логика сигналов
def stochastic_reversal_detector():
df = fetch_ohlcv(PAIR)
k_prev, d_prev, k_now, d_now = calculate_stochastic(df)
price = df["close"].iloc[-1]
print(f"Цена: {price:.2f}, Stoch %K: {k_now:.2f}, Stoch %D: {d_now:.2f}")
if k_prev > OVERBOUGHT and k_prev > d_prev and k_now < d_now:
print("📉 Стохастик в зоне перекупленности, пересечение вниз → сигнал на шорт.")
elif k_prev < OVERSOLD and k_prev < d_prev and k_now > d_now:
print("📈 Стохастик в зоне перепроданности, пересечение вверх → сигнал на лонг.")
else:
print("⚡ Нет разворотного сигнала.")
# Запуск
if __name__ == "__main__":
while True:
stochastic_reversal_detector()
time.sleep(60) # Обновление раз в минуту
#индикатор
📌 Подпишись Crypto Python❗️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥3
📌 Grid Trading Bot – Бот для торговли по сетке ордеров
Смысл стратегии:
Grid Trading (торговля по сетке) – это стратегия, при которой ордера размещаются на фиксированных уровнях цены с шагом, создавая сетку:
Покупаем на каждом уровне поддержки.
Продаем на каждом уровне сопротивления.
Работает в боковом (флэтовом) рынке, но может быть адаптирована для трендовой торговли.
🔹 Преимущество: прибыль получается за счет мелких движений цены.
🔹 Риск: при сильном тренде может потребоваться хеджирование🧑💻
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Grid Trading (торговля по сетке) – это стратегия, при которой ордера размещаются на фиксированных уровнях цены с шагом, создавая сетку:
Покупаем на каждом уровне поддержки.
Продаем на каждом уровне сопротивления.
Работает в боковом (флэтовом) рынке, но может быть адаптирована для трендовой торговли.
🔹 Преимущество: прибыль получается за счет мелких движений цены.
🔹 Риск: при сильном тренде может потребоваться хеджирование🧑💻
import ccxt
import pandas as pd
import numpy as np
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1m"
GRID_LEVELS = 5 # Количество уровней сетки
GRID_SPACING = 100 # Расстояние между уровнями в $
BASE_PRICE = None # Если None, берется текущая цена
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение текущей цены
def get_current_price(symbol):
ticker = exchange.fetch_ticker(symbol)
return ticker["last"]
# Генерация сетки ордеров
def generate_grid(base_price):
buy_levels = [base_price - i * GRID_SPACING for i in range(1, GRID_LEVELS + 1)]
sell_levels = [base_price + i * GRID_SPACING for i in range(1, GRID_LEVELS + 1)]
return buy_levels, sell_levels
# Логика торговли по сетке
def grid_trading_bot():
global BASE_PRICE
if BASE_PRICE is None:
BASE_PRICE = get_current_price(PAIR)
buy_levels, sell_levels = generate_grid(BASE_PRICE)
current_price = get_current_price(PAIR)
print(f"Текущая цена: {current_price:.2f}")
print(f"Уровни покупки: {buy_levels}")
print(f"Уровни продажи: {sell_levels}")
for level in buy_levels:
if current_price <= level:
print(f"📈 Цена достигла {level:.2f} → Сигнал на покупку!")
for level in sell_levels:
if current_price >= level:
print(f"📉 Цена достигла {level:.2f} → Сигнал на продажу!")
# Запуск
if __name__ == "__main__":
while True:
grid_trading_bot()
time.sleep(10) # Проверка раз в 10 секунд
#торговые_стратегии
📌 Подпишись Crypto Python❗️
1🔥14❤1
📌 Ichimoku Cloud Strategy
Смысл стратегии:
Индикатор Ichimoku Cloud (Облако Ишимоку) помогает определять тренд и искать точки входа.
Состоит из 5 линий:
Tenkan-sen (быстрая линия, 9 периодов) – показывает краткосрочный тренд.
Kijun-sen (медленная линия, 26 периодов) – показывает долгосрочный тренд.
Senkou Span A & B (границы облака, 26 и 52 периода) – формируют "облако", показывающее тренд.
Chikou Span (задержанная линия, 26 периодов назад) – подтверждает тренд.
🔹 Основные сигналы входа:
Цена выше облака → бычий тренд (лонг).
Цена ниже облака → медвежий тренд (шорт).
Tenkan-sen пересекает Kijun-sen вверх → сигнал на покупку.
Tenkan-sen пересекает Kijun-sen вниз → сигнал на продажу.
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Индикатор Ichimoku Cloud (Облако Ишимоку) помогает определять тренд и искать точки входа.
Состоит из 5 линий:
Tenkan-sen (быстрая линия, 9 периодов) – показывает краткосрочный тренд.
Kijun-sen (медленная линия, 26 периодов) – показывает долгосрочный тренд.
Senkou Span A & B (границы облака, 26 и 52 периода) – формируют "облако", показывающее тренд.
Chikou Span (задержанная линия, 26 периодов назад) – подтверждает тренд.
🔹 Основные сигналы входа:
Цена выше облака → бычий тренд (лонг).
Цена ниже облака → медвежий тренд (шорт).
Tenkan-sen пересекает Kijun-sen вверх → сигнал на покупку.
Tenkan-sen пересекает Kijun-sen вниз → сигнал на продажу.
import ccxt
import pandas as pd
import talib
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
TENKAN_PERIOD = 9
KIJUN_PERIOD = 26
SENKOU_A_PERIOD = 26
SENKOU_B_PERIOD = 52
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=SENKOU_B_PERIOD + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет индикатора Ишимоку
def calculate_ichimoku(df):
tenkan_sen = (df["high"].rolling(window=TENKAN_PERIOD).max() + df["low"].rolling(window=TENKAN_PERIOD).min()) / 2
kijun_sen = (df["high"].rolling(window=KIJUN_PERIOD).max() + df["low"].rolling(window=KIJUN_PERIOD).min()) / 2
senkou_span_a = ((tenkan_sen + kijun_sen) / 2).shift(SENKOU_A_PERIOD)
senkou_span_b = ((df["high"].rolling(window=SENKOU_B_PERIOD).max() + df["low"].rolling(window=SENKOU_B_PERIOD).min()) / 2).shift(SENKOU_A_PERIOD)
return tenkan_sen.iloc[-1], kijun_sen.iloc[-1], senkou_span_a.iloc[-1], senkou_span_b.iloc[-1], df["close"].iloc[-1]
# Логика сигналов
def ichimoku_cloud_strategy():
df = fetch_ohlcv(PAIR)
tenkan, kijun, senkou_a, senkou_b, close_price = calculate_ichimoku(df)
print(f"Цена: {close_price:.2f}, Tenkan-sen: {tenkan:.2f}, Kijun-sen: {kijun:.2f}")
print(f"Облако: Senkou A: {senkou_a:.2f}, Senkou B: {senkou_b:.2f}")
if close_price > max(senkou_a, senkou_b):
print("📈 Цена выше облака → сильный восходящий тренд (лонг).")
elif close_price < min(senkou_a, senkou_b):
print("📉 Цена ниже облака → сильный нисходящий тренд (шорт).")
elif tenkan > kijun:
print("📈 Tenkan-sen пересек Kijun-sen вверх → сигнал на покупку.")
elif tenkan < kijun:
print("📉 Tenkan-sen пересек Kijun-sen вниз → сигнал на продажу.")
else:
print("⚡ Нет четкого сигнала.")
# Запуск
if __name__ == "__main__":
while True:
ichimoku_cloud_strategy()
time.sleep(60) # Проверка раз в минуту
#индикатор
📌 Подпишись Crypto Python❗️
1👍11🔥4❤1
📌 Market Making Bot – Маркет-мейкинг и обеспечение ликвидности
Смысл стратегии:
Маркет-мейкер создаёт ликвидность, размещая лимитные ордера на покупку и продажу.
Размещает лимитные ордера по обе стороны спреда.
Зарабатывает на разнице между бидом и аском (спред).
Используется на флэтовом рынке или в низковолатильных активах.
🔹 Главная цель – покупать дешевле, продавать дороже, обеспечивая ликвидность.
🔹 Риск – сильный тренд может привести к накоплению убыточных позиций.
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Маркет-мейкер создаёт ликвидность, размещая лимитные ордера на покупку и продажу.
Размещает лимитные ордера по обе стороны спреда.
Зарабатывает на разнице между бидом и аском (спред).
Используется на флэтовом рынке или в низковолатильных активах.
🔹 Главная цель – покупать дешевле, продавать дороже, обеспечивая ликвидность.
🔹 Риск – сильный тренд может привести к накоплению убыточных позиций.
import ccxt
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
SPREAD = 0.1 # Размер спреда в процентах
ORDER_SIZE = 0.001 # Размер заявки
CHECK_INTERVAL = 10 # Частота проверки (секунды)
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение текущих цен бид/аск
def get_order_book(symbol):
order_book = exchange.fetch_order_book(symbol)
bid = order_book["bids"][0][0] # Лучшая цена покупки
ask = order_book["asks"][0][0] # Лучшая цена продажи
return bid, ask
# Логика маркет-мейкинга
def market_making_bot():
bid, ask = get_order_book(PAIR)
spread_value = (ask - bid) / bid * 100 # Спред в %
# Рассчет уровней размещения ордеров
buy_price = bid * (1 - SPREAD / 100)
sell_price = ask * (1 + SPREAD / 100)
print(f"Бид: {bid:.2f}, Аск: {ask:.2f}, Спред: {spread_value:.2f}%")
print(f"📥 Разместить заявку на покупку по: {buy_price:.2f}")
print(f"📤 Разместить заявку на продажу по: {sell_price:.2f}")
# Запуск
if __name__ == "__main__":
while True:
market_making_bot()
time.sleep(CHECK_INTERVAL)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
👍11🔥3
📌 Parabolic SAR Trend Following – стратегия на основе точек SAR
Смысл стратегии:
Parabolic SAR (Stop and Reverse) – это индикатор, который следит за трендом и помогает определять точки входа и выхода.
Точки SAR ниже цены → восходящий тренд (лонг).
Точки SAR выше цены → нисходящий тренд (шорт).
Используется для следования за трендом и установки стоп-лоссов.
🔹 Главное правило: Если цена пробивает SAR, это сигнал к развороту.
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Parabolic SAR (Stop and Reverse) – это индикатор, который следит за трендом и помогает определять точки входа и выхода.
Точки SAR ниже цены → восходящий тренд (лонг).
Точки SAR выше цены → нисходящий тренд (шорт).
Используется для следования за трендом и установки стоп-лоссов.
🔹 Главное правило: Если цена пробивает SAR, это сигнал к развороту.
import ccxt
import pandas as pd
import talib
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
SAR_ACCELERATION = 0.02 # Начальное ускорение
SAR_MAX_ACCELERATION = 0.2 # Максимальное ускорение
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=50)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет Parabolic SAR
def calculate_sar(df):
sar = talib.SAR(df["high"], df["low"], acceleration=SAR_ACCELERATION, maximum=SAR_MAX_ACCELERATION)
return sar.iloc[-1], df["close"].iloc[-1]
# Логика сигналов
def parabolic_sar_strategy():
df = fetch_ohlcv(PAIR)
sar, close_price = calculate_sar(df)
print(f"Цена: {close_price:.2f}, SAR: {sar:.2f}")
if close_price > sar:
print("📈 SAR ниже цены → восходящий тренд (лонг).")
elif close_price < sar:
print("📉 SAR выше цены → нисходящий тренд (шорт).")
else:
print("⚡ Нет четкого сигнала.")
# Запуск
if __name__ == "__main__":
while True:
parabolic_sar_strategy()
time.sleep(60) # Проверка раз в минуту
#индикатор
📌 Подпишись Crypto Python❗️
🔥9👍3
📌 Arbitrage Bot – Кросс-биржевой арбитраж (Binance vs. KuCoin)
Смысл стратегии:
Арбитраж – это стратегия, при которой бот находит разницу в цене актива на разных биржах и покупает на дешевой бирже, продавая на дорогой.
Кросс-биржевой арбитраж → разница цен между Binance и KuCoin.
Спотовый арбитраж → покупка и продажа на разных биржах.
Фьючерсный арбитраж → разница между спотовой и фьючерсной ценой.
🔹 Основное правило: Разница должна покрывать комиссии и задержки транзакций.
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Арбитраж – это стратегия, при которой бот находит разницу в цене актива на разных биржах и покупает на дешевой бирже, продавая на дорогой.
Кросс-биржевой арбитраж → разница цен между Binance и KuCoin.
Спотовый арбитраж → покупка и продажа на разных биржах.
Фьючерсный арбитраж → разница между спотовой и фьючерсной ценой.
🔹 Основное правило: Разница должна покрывать комиссии и задержки транзакций.
import ccxt
import time
# Параметры
PAIR = "BTC/USDT"
SPREAD_THRESHOLD = 0.5 # Минимальная разница в % для арбитража
CHECK_INTERVAL = 10 # Проверка раз в 10 секунд
# Инициализация бирж
binance = ccxt.binance()
kucoin = ccxt.kucoin()
# Получение цены с бирж
def get_price(exchange, symbol):
try:
ticker = exchange.fetch_ticker(symbol)
return ticker["last"]
except Exception as e:
print(f"Ошибка при получении цены с {exchange.id}: {e}")
return None
# Логика арбитража
def arbitrage_bot():
binance_price = get_price(binance, PAIR)
kucoin_price = get_price(kucoin, PAIR)
if binance_price and kucoin_price:
spread = (abs(binance_price - kucoin_price) / min(binance_price, kucoin_price)) * 100
print(f"Binance: {binance_price:.2f}, KuCoin: {kucoin_price:.2f}, Spread: {spread:.2f}%")
if spread > SPREAD_THRESHOLD:
if binance_price < kucoin_price:
print(f"📈 Арбитраж: Покупка на Binance ({binance_price:.2f}), продажа на KuCoin ({kucoin_price:.2f})")
else:
print(f"📉 Арбитраж: Покупка на KuCoin ({kucoin_price:.2f}), продажа на Binance ({binance_price:.2f})")
else:
print("⚡ Нет арбитражных возможностей.")
# Запуск
if __name__ == "__main__":
while True:
arbitrage_bot()
time.sleep(CHECK_INTERVAL)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
👍15
📌 ATR Volatility Filter – Фильтрация волатильных рынков с ATR
Смысл стратегии:
Индикатор ATR (Average True Range) измеряет волатильность рынка, но не направление движения.
Высокий ATR → сильная волатильность (может быть тренд или высокая неопределенность).
Низкий ATR → слабая волатильность (рынок во флэте).
Можно использовать, как фильтр для входа.
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Индикатор ATR (Average True Range) измеряет волатильность рынка, но не направление движения.
Высокий ATR → сильная волатильность (может быть тренд или высокая неопределенность).
Низкий ATR → слабая волатильность (рынок во флэте).
Можно использовать, как фильтр для входа.
import ccxt
import pandas as pd
import talib
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
ATR_PERIOD = 14 # Период ATR
VOLATILITY_THRESHOLD = 100 # Минимальное значение ATR для торговли
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=ATR_PERIOD + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет ATR
def calculate_atr(df):
atr = talib.ATR(df["high"], df["low"], df["close"], timeperiod=ATR_PERIOD).iloc[-1]
return atr
# Логика фильтрации волатильности
def atr_volatility_filter():
df = fetch_ohlcv(PAIR)
atr = calculate_atr(df)
price = df["close"].iloc[-1]
print(f"Цена: {price:.2f}, ATR: {atr:.2f}")
if atr > VOLATILITY_THRESHOLD:
print("📊 Высокая волатильность → торговля разрешена.")
else:
print("⚠️ Волатильность низкая → торговля не рекомендуется.")
# Запуск
if __name__ == "__main__":
while True:
atr_volatility_filter()
time.sleep(60) # Проверка раз в минуту
#индикатор
📌 Подпишись Crypto Python❗️
🔥10👍2
📌 Triangular Arbitrage Bot – Трехугольный арбитраж внутри одной биржи
Смысл стратегии:
Трехугольный арбитраж – это процесс торговли между тремя валютами на одной бирже, чтобы извлечь прибыль из неэффективности цен.
🔹 Принцип работы:
1. Обмениваем валюту A на валюту B.
2. Обмениваем валюту B на валюту C.
3. Обмениваем валюту C обратно в валюту A.
4. Если конечная сумма больше начальной, фиксируем прибыль.
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Трехугольный арбитраж – это процесс торговли между тремя валютами на одной бирже, чтобы извлечь прибыль из неэффективности цен.
🔹 Принцип работы:
1. Обмениваем валюту A на валюту B.
2. Обмениваем валюту B на валюту C.
3. Обмениваем валюту C обратно в валюту A.
4. Если конечная сумма больше начальной, фиксируем прибыль.
import ccxt
import time
# Параметры
EXCHANGE_NAME = "binance"
BASE_CURRENCY = "USDT" # Начальная и конечная валюта
TRADE_PAIRS = [("BTC/USDT", "BTC", "USDT"),
("ETH/BTC", "ETH", "BTC"),
("ETH/USDT", "USDT", "ETH")] # Трехугольный цикл
PROFIT_THRESHOLD = 0.5 # Минимальная прибыль в % для арбитража
CHECK_INTERVAL = 10 # Проверка раз в 10 секунд
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение цены пары
def get_price(pair):
try:
ticker = exchange.fetch_ticker(pair)
return ticker["last"]
except Exception as e:
print(f"Ошибка получения цены {pair}: {e}")
return None
# Логика арбитража
def triangular_arbitrage():
try:
# Получаем цены для трех пар
price_a = get_price(TRADE_PAIRS[0][0]) # BTC/USDT
price_b = get_price(TRADE_PAIRS[1][0]) # ETH/BTC
price_c = get_price(TRADE_PAIRS[2][0]) # ETH/USDT
if price_a and price_b and price_c:
# Вычисляем итоговую прибыль
start_amount = 1 # Допустим, начинаем с 1 USDT
step1 = start_amount / price_a # Покупаем BTC
step2 = step1 / price_b # Обмениваем BTC на ETH
final_amount = step2 * price_c # Обмениваем ETH обратно в USDT
profit = ((final_amount - start_amount) / start_amount) * 100
print(f"Цены: BTC/USDT={price_a:.2f}, ETH/BTC={price_b:.6f}, ETH/USDT={price_c:.2f}")
print(f"Ожидаемая прибыль: {profit:.2f}%")
if profit > PROFIT_THRESHOLD:
print(f"📈 Возможность арбитража! Прибыль: {profit:.2f}%")
else:
print("⚡ Нет арбитражной возможности.")
except Exception as e:
print(f"Ошибка в арбитраже: {e}")
# Запуск
if __name__ == "__main__":
while True:
triangular_arbitrage()
time.sleep(CHECK_INTERVAL)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
❤8🔥7
📌Multi-Indi Scanner – Комплексный анализ с RSI, MACD и Bollinger Bands 🧑💻
Смысл стратегии:
Этот скрипт анализирует рынок сразу по трем индикаторам (RSI, MACD, Bollinger Bands) и генерирует комплексный сигнал.
Используем:
RSI → показывает перекупленность/перепроданность.
MACD → указывает на импульс тренда.
Bollinger Bands → оценивают волатильность и пробои границ.
🔹 Фильтрация сигналов → торгуем только, если все индикаторы согласуются.
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Этот скрипт анализирует рынок сразу по трем индикаторам (RSI, MACD, Bollinger Bands) и генерирует комплексный сигнал.
Используем:
RSI → показывает перекупленность/перепроданность.
MACD → указывает на импульс тренда.
Bollinger Bands → оценивают волатильность и пробои границ.
🔹 Фильтрация сигналов → торгуем только, если все индикаторы согласуются.
import ccxt
import pandas as pd
import talib
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
RSI_PERIOD = 14
MACD_FAST = 12
MACD_SLOW = 26
MACD_SIGNAL = 9
BB_PERIOD = 20
BB_STD_DEV = 2
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение данных
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
# Рассчет индикаторов
def calculate_indicators(df):
rsi = talib.RSI(df["close"], timeperiod=RSI_PERIOD).iloc[-1]
macd, signal, _ = talib.MACD(df["close"], fastperiod=MACD_FAST, slowperiod=MACD_SLOW, signalperiod=MACD_SIGNAL)
upper, middle, lower = talib.BBANDS(df["close"], timeperiod=BB_PERIOD, nbdevup=BB_STD_DEV, nbdevdn=BB_STD_DEV)
return rsi, macd.iloc[-1], signal.iloc[-1], upper.iloc[-1], middle.iloc[-1], lower.iloc[-1], df["close"].iloc[-1]
# Логика сигналов
def multi_indi_scanner():
df = fetch_ohlcv(PAIR)
rsi, macd, signal, upper, middle, lower, close_price = calculate_indicators(df)
print(f"Цена: {close_price:.2f}, RSI: {rsi:.2f}, MACD: {macd:.2f}, Signal: {signal:.2f}")
print(f"Bollinger Bands → Верхняя: {upper:.2f}, Средняя: {middle:.2f}, Нижняя: {lower:.2f}")
buy_signal = rsi < 30 and macd > signal and close_price < lower
sell_signal = rsi > 70 and macd < signal and close_price > upper
if buy_signal:
print("📈 Сильный сигнал на покупку (LONG)!")
elif sell_signal:
print("📉 Сильный сигнал на продажу (SHORT)!")
else:
print("⚡ Нет четкого сигнала.")
# Запуск
if __name__ == "__main__":
while True:
multi_indi_scanner()
time.sleep(60) # Проверка раз в минуту
#индикатор
📌 Подпишись Crypto Python❗️
❤9👍2🔥2🤔1
📌 VWAP Trading Bot – бот, торгующий по объему взвешенной цене 🧑💻
Смысл стратегии:
VWAP (Volume Weighted Average Price) – это индикатор, показывающий среднюю цену сделки с учетом объема.
Используется крупными игроками (фондами, институциональными инвесторами) для определения справедливой цены.
Как торговать по VWAP?
Цена выше VWAP → рынок в бычьем тренде (ищем покупки).
Цена ниже VWAP → рынок в медвежьем тренде (ищем продажи).
Стратегия входа:
Лонг: цена возвращается к VWAP в восходящем тренде.
Шорт: цена возвращается к VWAP в нисходящем тренде.
⚠️ Важно: VWAP работает лучше на флэтовых или умеренно трендовых рынках. 🚀
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
VWAP (Volume Weighted Average Price) – это индикатор, показывающий среднюю цену сделки с учетом объема.
Используется крупными игроками (фондами, институциональными инвесторами) для определения справедливой цены.
Как торговать по VWAP?
Цена выше VWAP → рынок в бычьем тренде (ищем покупки).
Цена ниже VWAP → рынок в медвежьем тренде (ищем продажи).
Стратегия входа:
Лонг: цена возвращается к VWAP в восходящем тренде.
Шорт: цена возвращается к VWAP в нисходящем тренде.
⚠️ Важно: VWAP работает лучше на флэтовых или умеренно трендовых рынках. 🚀
import ccxt
import pandas as pd
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1m" # Торговля на коротких таймфреймах
VWAP_PERIOD = 20 # Количество свечей для расчета VWAP
CHECK_INTERVAL = 10 # Проверка раз в 10 секунд
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение данных
def fetch_ohlcv(symbol):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=VWAP_PERIOD + 5)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Рассчет VWAP
def calculate_vwap(df):
typical_price = (df["high"] + df["low"] + df["close"]) / 3
vwap = (typical_price * df["volume"]).cumsum() / df["volume"].cumsum()
return vwap.iloc[-1]
# Логика торговли по VWAP
def vwap_trading_bot():
df = fetch_ohlcv(PAIR)
vwap = calculate_vwap(df)
close_price = df["close"].iloc[-1]
print(f"Цена: {close_price:.2f}, VWAP: {vwap:.2f}")
if close_price > vwap:
print("📈 Цена выше VWAP → рынок бычий (лонг при откатах).")
elif close_price < vwap:
print("📉 Цена ниже VWAP → рынок медвежий (шорт при откатах).")
else:
print("⚡ Цена у VWAP, неопределенность.")
# Запуск
if __name__ == "__main__":
while True:
vwap_trading_bot()
time.sleep(CHECK_INTERVAL)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
🔥14❤1👍1
📌DCA (Dollar Cost Averaging) Bot – Покупка актива равными долями
Смысл стратегии:
DCA (Dollar Cost Averaging) – это стратегия усреднения цены покупки.
Покупка актива равными долями через регулярные интервалы.
Уменьшает влияние волатильности.
Полезна для долгосрочного инвестирования.
⚠️ Важно: DCA – долгосрочная стратегия. Она лучше всего работает при регулярных инвестициях в актив с потенциалом роста 🚀
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
DCA (Dollar Cost Averaging) – это стратегия усреднения цены покупки.
Покупка актива равными долями через регулярные интервалы.
Уменьшает влияние волатильности.
Полезна для долгосрочного инвестирования.
⚠️ Важно: DCA – долгосрочная стратегия. Она лучше всего работает при регулярных инвестициях в актив с потенциалом роста 🚀
import ccxt
import time
from datetime import datetime, timedelta
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
DCA_AMOUNT = 100 # Сумма покупки в USDT
DCA_INTERVAL = 7 # Количество дней между покупками
CHECK_INTERVAL = 86400 # Проверка раз в день (86400 секунд)
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# История покупок
dca_history = []
# Получение текущей цены
def get_current_price(symbol):
ticker = exchange.fetch_ticker(symbol)
return ticker["last"]
# Логика DCA
def dca_bot():
global dca_history
current_price = get_current_price(PAIR)
now = datetime.now()
# Проверяем, когда была последняя покупка
if not dca_history or (now - dca_history[-1]["time"]).days >= DCA_INTERVAL:
dca_history.append({"time": now, "price": current_price, "amount": DCA_AMOUNT})
print(f"📥 DCA покупка: {DCA_AMOUNT} USDT по цене {current_price:.2f}")
# Вывод истории покупок
print("📊 История DCA-покупок:")
for entry in dca_history:
print(f"{entry['time'].strftime('%Y-%m-%d %H:%M')} → {entry['amount']} USDT по {entry['price']:.2f}")
# Запуск
if __name__ == "__main__":
while True:
dca_bot()
time.sleep(CHECK_INTERVAL) # Проверка раз в день
#индикатор
📌 Подпишись Crypto Python❗️
👍4🔥3❤2
📌 Powered Trading Bot – Бот с машинным обучением (XGBoost) 🧑💻
Смысл стратегии:
Используем XGBoost – одну из самых мощных библиотек машинного обучения для анализа ценовых данных.
Модель обучается на исторических данных, используя RSI, MACD, Bollinger Bands, Volume, ATR и другие индикаторы для предсказания направлений рынка (лонг / шорт).
Этапы работы:
1. Сбор данных (Binance, CCXT).
2. Формирование признаков (features) – технические индикаторы.
3. Обучение модели XGBoost на исторических данных.
4. Применение модели на новых данных для прогнозирования сигналов.
⚠️ Важно: Модель нуждается в постоянном обновлении данных и тестировании перед торговлей! 🚀
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Используем XGBoost – одну из самых мощных библиотек машинного обучения для анализа ценовых данных.
Модель обучается на исторических данных, используя RSI, MACD, Bollinger Bands, Volume, ATR и другие индикаторы для предсказания направлений рынка (лонг / шорт).
Этапы работы:
1. Сбор данных (Binance, CCXT).
2. Формирование признаков (features) – технические индикаторы.
3. Обучение модели XGBoost на исторических данных.
4. Применение модели на новых данных для прогнозирования сигналов.
⚠️ Важно: Модель нуждается в постоянном обновлении данных и тестировании перед торговлей! 🚀
import ccxt
import pandas as pd
import talib
import time
import xgboost as xgb
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
TRAIN_SIZE = 200 # Количество свечей для обучения
FEATURES = ["rsi", "macd", "boll_upper", "boll_lower", "volume", "atr"]
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение исторических данных
def fetch_ohlcv(symbol, limit=TRAIN_SIZE + 50):
ohlcv = exchange.fetch_ohlcv(symbol, timeframe=TIMEFRAME, limit=limit)
df = pd.DataFrame(ohlcv, columns=["timestamp", "open", "high", "low", "close", "volume"])
return df
# Генерация признаков
def generate_features(df):
df["rsi"] = talib.RSI(df["close"], timeperiod=14)
macd, signal, _ = talib.MACD(df["close"], fastperiod=12, slowperiod=26, signalperiod=9)
df["macd"] = macd - signal
upper, _, lower = talib.BBANDS(df["close"], timeperiod=20, nbdevup=2, nbdevdn=2)
df["boll_upper"] = upper
df["boll_lower"] = lower
df["atr"] = talib.ATR(df["high"], df["low"], df["close"], timeperiod=14)
df.dropna(inplace=True)
return df
# Создание метки для предсказания
def generate_labels(df):
df["target"] = np.where(df["close"].shift(-1) > df["close"], 1, 0) # 1 = рост, 0 = падение
return df
# Обучение модели
def train_model(df):
X = df[FEATURES]
y = df["target"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False)
model = xgb.XGBClassifier(use_label_encoder=False, eval_metric="logloss")
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"🔹 Точность модели: {accuracy:.2f}")
return model
# Логика прогнозирования
def ai_trading_bot(model):
df = fetch_ohlcv(PAIR)
df = generate_features(df)
X_live = df[FEATURES].iloc[-1:].values
prediction = model.predict(X_live)[0]
print(f"🔹 Прогноз: {'📈 Лонг' if prediction == 1 else '📉 Шорт'}")
# Запуск
if __name__ == "__main__":
df = fetch_ohlcv(PAIR)
df = generate_features(df)
df = generate_labels(df)
model = train_model(df)
while True:
ai_trading_bot(model)
time.sleep(60) # Проверка раз в минуту
#торговые_стратегии
📌 Подпишись Crypto Python❗️
🔥14👍3
📌 OBV Divergence Detector – Поиск дивергенций OBV
Смысл стратегии:
OBV (On-Balance Volume) – индикатор, анализирующий объем, чтобы предсказать будущие движения цены.
Бычья дивергенция → цена падает, но OBV растет → сигнал на покупку (лонг).
Медвежья дивергенция → цена растет, но OBV падает → сигнал на продажу (шорт).
🔹 Применение:
Используется для раннего определения разворотов.
Работает лучше в сочетании с трендовыми индикаторами (например, MACD, RSI).
#индикатор
📌 Подпишись Crypto Python❗️
Смысл стратегии:
OBV (On-Balance Volume) – индикатор, анализирующий объем, чтобы предсказать будущие движения цены.
Бычья дивергенция → цена падает, но OBV растет → сигнал на покупку (лонг).
Медвежья дивергенция → цена растет, но OBV падает → сигнал на продажу (шорт).
🔹 Применение:
Используется для раннего определения разворотов.
Работает лучше в сочетании с трендовыми индикаторами (например, MACD, RSI).
import ccxt
import pandas as pd
import talib
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TIMEFRAME = "1h"
LOOKBACK_PERIOD = 10 # Количество свечей для анализа дивергенции
CHECK_INTERVAL = 60 # Проверка раз в минуту
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Получение данных
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
# Рассчет OBV
def calculate_obv(df):
obv = talib.OBV(df["close"], df["volume"])
return obv
# Проверка дивергенций
def detect_obv_divergence():
df = fetch_ohlcv(PAIR)
df["obv"] = calculate_obv(df)
# Анализ цен и OBV на последних 10 свечах
price_min = df["close"].iloc[-LOOKBACK_PERIOD:].min()
price_max = df["close"].iloc[-LOOKBACK_PERIOD:].max()
obv_min = df["obv"].iloc[-LOOKBACK_PERIOD:].min()
obv_max = df["obv"].iloc[-LOOKBACK_PERIOD:].max()
current_price = df["close"].iloc[-1]
current_obv = df["obv"].iloc[-1]
print(f"Цена: {current_price:.2f}, OBV: {current_obv:.2f}")
if price_min < current_price and obv_min > current_obv:
print("📈 Бычья дивергенция! Возможен рост (лонг).")
elif price_max > current_price and obv_max < current_obv:
print("📉 Медвежья дивергенция! Возможен спад (шорт).")
else:
print("⚡ Нет четкого сигнала.")
# Запуск
if __name__ == "__main__":
while True:
detect_obv_divergence()
time.sleep(CHECK_INTERVAL)
#индикатор
📌 Подпишись Crypto Python❗️
🔥10❤1👍1
📌 Trailing Stop Order Manager – Автоматическое управление стоп-лоссами
Смысл стратегии:
Trailing Stop (скользящий стоп-лосс) автоматически перемещает стоп-лосс за ценой, фиксируя прибыль, если цена идет в благоприятном направлении.
При росте цены → стоп-лосс поднимается.
При падении цены → стоп-лосс остается (пока не сработает)🧑💻
#торговые_стратегии
📌 Подпишись Crypto Python❗️
Смысл стратегии:
Trailing Stop (скользящий стоп-лосс) автоматически перемещает стоп-лосс за ценой, фиксируя прибыль, если цена идет в благоприятном направлении.
При росте цены → стоп-лосс поднимается.
При падении цены → стоп-лосс остается (пока не сработает)🧑💻
import ccxt
import time
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TRAILING_PERCENT = 2 # На сколько % ниже максимальной цены ставится стоп-лосс
CHECK_INTERVAL = 10 # Проверка раз в 10 секунд
# Инициализация биржи
exchange = getattr(ccxt, EXCHANGE_NAME)()
# Текущее состояние
max_price = None
stop_loss = None
# Получение текущей цены
def get_current_price(symbol):
ticker = exchange.fetch_ticker(symbol)
return ticker["last"]
# Логика Trailing Stop
def trailing_stop_manager():
global max_price, stop_loss
current_price = get_current_price(PAIR)
# Обновляем максимум цены
if max_price is None or current_price > max_price:
max_price = current_price
stop_loss = max_price * (1 - TRAILING_PERCENT / 100)
print(f"🔼 Новый максимум: {max_price:.2f}, стоп-лосс обновлен: {stop_loss:.2f}")
# Проверяем, сработал ли стоп-лосс
if stop_loss and current_price <= stop_loss:
print(f"❌ Цена {current_price:.2f} достигла стоп-лосса {stop_loss:.2f} – сигнал на выход.")
max_price, stop_loss = None, None # Сбрасываем после срабатывания
# Запуск
if name == "main":
while True:
trailing_stop_manager()
time.sleep(CHECK_INTERVAL)
#торговые_стратегии
📌 Подпишись Crypto Python❗️
❤7🔥5👍1
📌 OCO Orders Script–Установка связанных ордеров (Take Profit/Stop Loss)🧑💻
Смысл стратегии:
OCO (One Cancels the Other) – это метод установки двух связанных ордеров:
1. Take Profit (фиксируем прибыль).
2. Stop Loss (ограничиваем убытки).
Когда один из ордеров срабатывает, второй автоматически отменяется.
⚠️ Важно: OCO ордера доступны не на всех биржах – проверьте API биржи перед использованием! 🚀
#ордера
📌 Подпишись Crypto Python❗️
Смысл стратегии:
OCO (One Cancels the Other) – это метод установки двух связанных ордеров:
1. Take Profit (фиксируем прибыль).
2. Stop Loss (ограничиваем убытки).
Когда один из ордеров срабатывает, второй автоматически отменяется.
⚠️ Важно: OCO ордера доступны не на всех биржах – проверьте API биржи перед использованием! 🚀
import ccxt
# Параметры
EXCHANGE_NAME = "binance"
PAIR = "BTC/USDT"
TRADE_AMOUNT = 0.001 # Количество актива для торговли
ENTRY_PRICE = 50000 # Цена покупки (можно заменить на реальную рыночную)
TAKE_PROFIT = 52000 # Цель по прибыли
STOP_LOSS = 48500 # Уровень стоп-лосса
# API-ключи (замените своими)
API_KEY = "your_api_key"
API_SECRET = "your_api_secret"
# Инициализация биржи
exchange = ccxt.binance({
"apiKey": API_KEY,
"secret": API_SECRET,
"enableRateLimit": True,
})
# Установка OCO ордера
def place_oco_order():
try:
# Размещение OCO ордера (Take Profit + Stop Loss)
order = exchange.create_order(
symbol=PAIR,
type="OCO",
side="sell",
amount=TRADE_AMOUNT,
params={
"stopPrice": STOP_LOSS, # Уровень Stop Loss
"price": TAKE_PROFIT, # Уровень Take Profit
"stopLimitPrice": STOP_LOSS - 50, # Stop Limit (чуть ниже Stop Loss)
"stopLimitTimeInForce": "GTC" # Ордер действует до исполнения
}
)
print("✅ OCO ордер успешно установлен:", order)
except Exception as e:
print("❌ Ошибка установки OCO ордера:", e)
# Запуск
if __name__ == "__main__":
place_oco_order()
#ордера
📌 Подпишись Crypto Python❗️
👍7