



CODE289MGللبيع شقة 250م واجهةسوبرلوكس متفرع من ش النزهة الرئيسي
CODE289MGللبيع شقة 250م واجهةسوبرلوكس متفرع من ش النزهة الرئيسي
وخطوات من شارع النزهة
واجهة سوبر لوكس
تراس 20م واجهة العمارة
سوبرلوكس 250م
دور 2
مدخل شيك
3غرفه
2 حمام
رسبشن 4 قطع
تشطيب سوبر لوكس
ولها حصة من الارض
#صور ارشيفية#
=======================
مطلوب 6 مليون جنيه
بالاضافة 2.5% عمولة المكتب
شركة اوسكار للتسويق والتقييم العقاري
خدمات عقارية متكاملة متميزة
===========================
للتواصل والاستفسار اتصل بنا علي
============================
شركتنا واحده من اقدم الشركات في مجال التسويق العقاري
حاليا في السوق المصري حيث نقدم خدماتنا من عام 1990
و كذلك نقوم بخدمات الاستشارات العقارية لعملائنا بشكل مجاني بالكامل.
لخدمات البيع أو الشراء و الايجار (إداري _ سكني _ مفروش)
للاستفادة من خدماتنا برجاء التواصل معانا
( )
( )
import requests
import pandas as pd
import numpy as np
import time
import logging
from datetime import datetime
TELEGRAM_BOT_TOKEN = "7784182522:AAGhkwAu4ZaR1h7Fp8Ats1S1zCmybFy0snk"
TELEGRAM_CHAT_ID = "-1002402869621"
TIMEFRAME = '5m'
SYMBOLS = [
'BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'XRPUSDT', 'ADAUSDT', 'DOGEUSDT', 'AVAXUSDT',
'LTCUSDT', 'LINKUSDT', 'ATOMUSDT', 'DOTUSDT', 'MATICUSDT', 'UNIUSDT', 'NEARUSDT',
'1INCHUSDT', 'ALGOUSDT', 'ALICEUSDT', 'ANKRUSDT', 'API3USDT', 'GALUSDT', 'TRXUSDT',
'BCHUSDT', 'ETCUSDT', 'ZECUSDT', 'XTZUSDT', 'ONTUSDT', 'IOTAUSDT', 'VETUSDT',
'NEOUSDT', 'QTUMUSDT', 'IOSTUSDT', 'THETAUSDT', 'ZILUSDT', 'KNCUSDT', 'ZRXUSDT',
'BANDUSDT', 'RLCUSDT', 'MKRUSDT', 'SNXUSDT', 'TRBUSDT', 'EGLDUSDT', 'ICXUSDT',
'STORJUSDT', 'ENJUSDT', 'KSMUSDT', 'FILUSDT', 'RSRUSDT', 'LRCUSDT', 'AXSUSDT',
'ZENUSDT', 'SKLUSDT', 'GRTUSDT', 'CHZUSDT', 'SANDUSDT', 'RVNUSDT', 'SFPUSDT',
'CHRUSDT', 'MANAUSDT', 'HBARUSDT', 'TLMUSDT', 'GTCUSDT', 'CELOUSDT', 'ARUSDT',
'DYDXUSDT', 'APEUSDT', 'IMXUSDT', 'GMXUSDT', 'APTUSDT', 'HOOKUSDT', 'MAGICUSDT',
'LDOUSDT', 'XLMUSDT', 'DASHUSDT', 'ONEUSDT', 'CELRUSDT', 'HOTUSDT', 'MTLUSDT',
'OGNUSDT', 'IOTXUSDT', 'MASKUSDT', 'ARPAUSDT', 'CTSIUSDT', 'LPTUSDT', 'ENSUSDT',
'PEOPLEUSDT', 'ROSEUSDT', 'DUSKUSDT', 'FLOWUSDT', 'WOOUSDT', 'JASMYUSDT', 'DARUSDT',
'ICPUSDT', 'QNTUSDT', 'FXSUSDT', 'NMRUSDT', 'AGLDUSDT', 'XMRUSDT', 'KASUSDT',
'ONDOUSDT', 'TONUSDT', 'CTKUSDT', 'FIOUSDT', 'GPSUSDT', 'SIGNUSDT', 'GOATUSDT',
'COOKIEUSDT', 'PUNDIXUSDT', 'GUNUSDT', 'SONICUSDT', 'SANTOSUSDT', 'SWARMSUSDT',
'VICUSDT', '1000CATUSDT', '1MBABYDOGEUSDT', 'AIXBTUSDT', 'ALPACAUSDT', 'CATIUSDT',
'CGPTUSDT', 'CVXUSDT', 'DFUSDT', 'FARTCOINUSDT', 'FIDAUSDT', 'FLUIDUSDT', 'HMSTRUSDT',
'KMNOUSDT'
]
RSI_PERIOD = 12
EMA_FAST = 23
EMA_SLOW = 200
RSI_BUY_MAX = 35.0
RSI_SELL_MIN = 65.0
CONNORS_BUY_MIN = 30.0
CONNORS_BUY_MAX = 50.0
CONNORS_SELL_MIN = 50.0
CONNORS_SELL_MAX = 70.0
CONNORS_RSI_PERIOD = 3
CONNORS_STREAK_PERIOD = 3
CONNORS_RANK_PERIOD = 100
LIMIT = 300
SCAN_SLEEP = 120
REQUEST_SLEEP = 0.25
BASE_URL = "https://api. binance. com/api/v3/klines"
TELEGRAM_URL = f"https://api. telegram. org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
logging. basicConfig(level=logging. INFO, format='%(asctime)s - %(message)s')
def send_telegram(text):
try:
payload = {"chat_id": int(TELEGRAM_CHAT_ID), "text": text, "parse_mode": "HTML"}
resp = requests. post(TELEGRAM_URL, json=payload, timeout=10)
data = resp. json()
if resp. status_code == 200 and data. get("ok"):
return True
logging. error(f"Telegram: {data. get('description')}")
return False
except Exception as e:
logging. error(f"Telegram Error: {e}")
return False
def fetch_klines(symbol):
try:
resp = requests. get(BASE_URL, params={"symbol": symbol, "interval": TIMEFRAME, "limit": LIMIT}, timeout=10)
if resp. status_code == 429:
time. sleep(30)
return pd. DataFrame()
resp. raise_for_status()
df = pd. DataFrame(resp. json(), columns=["OpenTime", "Open", "High", "Low", "Close", "Volume", "CloseTime", "QuoteVol", "Trades", "TakerBuyBase", "TakerBuyQuote", "Ignore"])
for col in ["High", "Low", "Close"]:
df[col] = df[col]. astype(float)
return df[["High", "Low", "Close"]]
except Exception as e:
logging. error(f"Fetch {symbol}: {e}")
return pd. DataFrame()
def calculate_connors_rsi(close_series):
delta = close_series. diff()
gain = delta. where(delta > 0.0.0). ewm(com=CONNORS_RSI_PERIOD - 1, adjust=False). mean()
loss = (-delta. where(delta < 0.0.0)). ewm(com=CONNORS_RSI_PERIOD - 1, adjust=False). mean()
rs = gain / loss. replace(0, np. nan)
rsi_short = (100 - (100 / (1 + rs))). fillna(50.0)
streak = pd. Series(0.0, index=close_series. index)
for i in range(1, len(close_series)):
if close_series. iloc[i] > close_series. iloc[i-1]:
streak. iloc[i] = max(streak. iloc[i-1], 0) + 1
elif close_series. iloc[i] < close_series. iloc[i-1]:
streak. iloc[i] = min(streak. iloc[i-1], 0) - 1
streak_delta = streak. diff()
s_gain = streak_delta. where(streak_delta > 0.0.0). ewm(com=CONNORS_STREAK_PERIOD - 1, adjust=False). mean()
s_loss = (-streak_delta. where(streak_delta < 0.0.0)). ewm(com=CONNORS_STREAK_PERIOD - 1, adjust=False). mean()
s_rs = s_gain / s_loss. replace(0, np. nan)
streak_rsi = (100 - (100 / (1 + s_rs))). fillna(50.0)
pct_change = close_series. pct_change()
def p_rank(x):
clean = x. dropna()
if len(clean) < 10:
return 50.0
return (clean. iloc[-1] > clean). sum() / len(clean) * 100
pct_rank = pct_change. rolling(CONNORS_RANK_PERIOD). apply(p_rank, raw=False). fillna(50.0)
return ((rsi_short + streak_rsi + pct_rank) / 3.0). fillna(50.0)
def calculate_rsi(close_series, period):
delta = close_series. diff()
gain = delta. where(delta > 0.0.0). ewm(com=period - 1, adjust=False). mean()
loss = (-delta. where(delta < 0.0.0)). ewm(com=period - 1, adjust=False). mean()
rs = gain / loss. replace(0, np. nan)
rsi = 100 - (100 / (1 + rs))
return rsi. fillna(50.0)
def check_mean_reversion(df):
if df. empty or len(df) < 250:
return None
close = df["Close"]
ema_fast = close. ewm(span=EMA_FAST, adjust=False). mean(). iloc[-1]
ema_slow = close. ewm(span=EMA_SLOW, adjust=False). mean(). iloc[-1]
rsi = calculate_rsi(close, RSI_PERIOD). iloc[-1]
connors = calculate_connors_rsi(close). iloc[-1]
price = close. iloc[-1]
low_20 = df["Low"]. rolling(20). min(). iloc[-1]
high_20 = df["High"]. rolling(20). max(). iloc[-1]
is_buy = (ema_fast > ema_slow) and (rsi < RSI_BUY_MAX) and (CONNORS_BUY_MIN < connors < CONNORS_BUY_MAX)
is_sell = (ema_fast < ema_slow) and (rsi > RSI_SELL_MIN) and (CONNORS_SELL_MIN < connors < CONNORS_SELL_MAX)
if is_buy:
return {"signal": "BUY", "price": price, "rsi": rsi, "connors": connors, "ema_fast": ema_fast, "ema_slow": ema_slow, "low_20": low_20}
elif is_sell:
return {"signal": "SELL", "price": price, "rsi": rsi, "connors": connors, "ema_fast": ema_fast, "ema_slow": ema_slow, "high_20": high_20}
return None
def format_message(symbol, s):
color = " " if s["signal"] == "BUY" else " "
arrow = " " if s["signal"] == "BUY" else " "
if s["signal"] == "BUY":
sl = round(s["low_20"] * 0.995, 4)
risk = s["price"] - sl
tp1 = round(s["price"] + risk * 1.5, 4)
tp2 = round(s["price"] + risk * 2.5, 4)
tp3 = round(s["price"] + risk * 4.0, 4)
rsi_text = f"RSI(12): {s['rsi']:. 2f} (تشبع بيعي)"
connors_text = f"Connors: {s['connors']:. 2f} (بداية تعافي)"
else:
sl = round(s["high_20"] * 1.005, 4)
risk = sl - s["price"]
tp1 = round(s["price"] - risk * 1.5, 4)
tp2 = round(s["price"] - risk * 2.5, 4)
tp3 = round(s["price"] - risk * 4.0, 4)
rsi_text = f"RSI(12): {s['rsi']:. 2f} (تشبع شرائي)"
connors_text = f"Connors: {s['connors']:. 2f} (بداية هدوء)"
time_str = datetime. now(). strftime("%Y-%m-%d %H:%M:%S")
return (
f"{color} Mean Reversion Pullback - {s['signal']} {arrow}\n"
f" \n"
f" {symbol} | ⏱ 5m\n"
f" Entry: {s['price']:. 4f}\n"
f" \n"
f" المؤشرات:\n"
f" EMA(23): {s['ema_fast']:. 4f}\n"
f" EMA(200): {s['ema_slow']:. 4f}\n"
f" {rsi_text}\n"
f" {connors_text}\n"
f" \n"
f" إدارة المخاطر:\n"
f" SL: {sl:. 4f}\n"
f" TP1: {tp1:. 4f} (1:1.5)\n"
f" TP2: {tp2:. 4f} (1:2.5)\n"
f" TP3: {tp3:. 4f} (1:4)\n"
f" \n"
f" مراقبة فقط\n"
f" {time_str}"
)
def main():
last_signals = {s: None for s in SYMBOLS}
start_time = time. time()
last_status_time = time. time()
total_signals = 0
logging. info("بدء تشغيل Mean Reversion Pullback Bot. . . ")
if not send_telegram(" تشغيل Mean Reversion Pullback Bot\nالشروط:\n- شراء: RSI < 35 + Connors 30-50\n- بيع: RSI > 65 + Connors 50-70"):
logging. error("فشل الاتصال بتيليجرام")
return
logging. info("اتصال تيليجرام ناجح. بدء المراقبة. . . ")
time. sleep(3)
while True:
try:
checked = 0
cycle_signals = 0
for symbol in SYMBOLS:
df = fetch_klines(symbol)
if df. empty or len(df) < 250:
time. sleep(REQUEST_SLEEP)
continue
signal = check_mean_reversion(df)
checked += 1
if signal:
current = signal["signal"]
if current != last_signals[symbol]:
if send_telegram(format_message(symbol, signal)):
last_signals[symbol] = current
cycle_signals += 1
total_signals += 1
logging. info(f" {symbol} - {current} | RSI={signal['rsi']:. 2f} | Connors={signal['connors']:. 2f}")
else:
last_signals[symbol] = None
time. sleep(REQUEST_SLEEP)
if time. time() - last_status_time >= 900:
uptime_h = (time. time() - start_time) / 3600
status_msg = (
f" تقرير الحالة\n"
f"يعمل منذ: {uptime_h:. 2f} ساعة\n"
f"العملات المفحوصة: {checked}\n"
f"الإشارات: {total_signals}\n"
f" {datetime. now(). strftime('%Y-%m-%d %H:%M:%S')}"
)
send_telegram(status_msg)
last_status_time = time. time()
logging. info(f" فحص {checked} عملة، {cycle_signals} إشارة. انتظار {SCAN_SLEEP} ثانية. . . ")
time. sleep(SCAN_SLEEP)
except KeyboardInterrupt:
logging. info("إيقاف يدوي")
send_telegram("⏹ تم إيقاف البوت")
break
except Exception as e:
logging. error(f"خطأ: {e}")
time. sleep(60)
if __name__ == "__main__":
main()
وخطوات من شارع النزهة
واجهة سوبر لوكس
تراس 20م واجهة العمارة
سوبرلوكس 250م
دور 2
مدخل شيك
3غرفه
2 حمام
رسبشن 4 قطع
تشطيب سوبر لوكس
ولها حصة من الارض
#صور ارشيفية#
=======================
مطلوب 6 مليون جنيه
بالاضافة 2.5% عمولة المكتب
شركة اوسكار للتسويق والتقييم العقاري
خدمات عقارية متكاملة متميزة
===========================
للتواصل والاستفسار اتصل بنا علي
============================
شركتنا واحده من اقدم الشركات في مجال التسويق العقاري
حاليا في السوق المصري حيث نقدم خدماتنا من عام 1990
و كذلك نقوم بخدمات الاستشارات العقارية لعملائنا بشكل مجاني بالكامل.
لخدمات البيع أو الشراء و الايجار (إداري _ سكني _ مفروش)
للاستفادة من خدماتنا برجاء التواصل معانا
( )
( )
import requests
import pandas as pd
import numpy as np
import time
import logging
from datetime import datetime
TELEGRAM_BOT_TOKEN = "7784182522:AAGhkwAu4ZaR1h7Fp8Ats1S1zCmybFy0snk"
TELEGRAM_CHAT_ID = "-1002402869621"
TIMEFRAME = '5m'
SYMBOLS = [
'BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'XRPUSDT', 'ADAUSDT', 'DOGEUSDT', 'AVAXUSDT',
'LTCUSDT', 'LINKUSDT', 'ATOMUSDT', 'DOTUSDT', 'MATICUSDT', 'UNIUSDT', 'NEARUSDT',
'1INCHUSDT', 'ALGOUSDT', 'ALICEUSDT', 'ANKRUSDT', 'API3USDT', 'GALUSDT', 'TRXUSDT',
'BCHUSDT', 'ETCUSDT', 'ZECUSDT', 'XTZUSDT', 'ONTUSDT', 'IOTAUSDT', 'VETUSDT',
'NEOUSDT', 'QTUMUSDT', 'IOSTUSDT', 'THETAUSDT', 'ZILUSDT', 'KNCUSDT', 'ZRXUSDT',
'BANDUSDT', 'RLCUSDT', 'MKRUSDT', 'SNXUSDT', 'TRBUSDT', 'EGLDUSDT', 'ICXUSDT',
'STORJUSDT', 'ENJUSDT', 'KSMUSDT', 'FILUSDT', 'RSRUSDT', 'LRCUSDT', 'AXSUSDT',
'ZENUSDT', 'SKLUSDT', 'GRTUSDT', 'CHZUSDT', 'SANDUSDT', 'RVNUSDT', 'SFPUSDT',
'CHRUSDT', 'MANAUSDT', 'HBARUSDT', 'TLMUSDT', 'GTCUSDT', 'CELOUSDT', 'ARUSDT',
'DYDXUSDT', 'APEUSDT', 'IMXUSDT', 'GMXUSDT', 'APTUSDT', 'HOOKUSDT', 'MAGICUSDT',
'LDOUSDT', 'XLMUSDT', 'DASHUSDT', 'ONEUSDT', 'CELRUSDT', 'HOTUSDT', 'MTLUSDT',
'OGNUSDT', 'IOTXUSDT', 'MASKUSDT', 'ARPAUSDT', 'CTSIUSDT', 'LPTUSDT', 'ENSUSDT',
'PEOPLEUSDT', 'ROSEUSDT', 'DUSKUSDT', 'FLOWUSDT', 'WOOUSDT', 'JASMYUSDT', 'DARUSDT',
'ICPUSDT', 'QNTUSDT', 'FXSUSDT', 'NMRUSDT', 'AGLDUSDT', 'XMRUSDT', 'KASUSDT',
'ONDOUSDT', 'TONUSDT', 'CTKUSDT', 'FIOUSDT', 'GPSUSDT', 'SIGNUSDT', 'GOATUSDT',
'COOKIEUSDT', 'PUNDIXUSDT', 'GUNUSDT', 'SONICUSDT', 'SANTOSUSDT', 'SWARMSUSDT',
'VICUSDT', '1000CATUSDT', '1MBABYDOGEUSDT', 'AIXBTUSDT', 'ALPACAUSDT', 'CATIUSDT',
'CGPTUSDT', 'CVXUSDT', 'DFUSDT', 'FARTCOINUSDT', 'FIDAUSDT', 'FLUIDUSDT', 'HMSTRUSDT',
'KMNOUSDT'
]
RSI_PERIOD = 12
EMA_FAST = 23
EMA_SLOW = 200
RSI_BUY_MAX = 35.0
RSI_SELL_MIN = 65.0
CONNORS_BUY_MIN = 30.0
CONNORS_BUY_MAX = 50.0
CONNORS_SELL_MIN = 50.0
CONNORS_SELL_MAX = 70.0
CONNORS_RSI_PERIOD = 3
CONNORS_STREAK_PERIOD = 3
CONNORS_RANK_PERIOD = 100
LIMIT = 300
SCAN_SLEEP = 120
REQUEST_SLEEP = 0.25
BASE_URL = "https://api. binance. com/api/v3/klines"
TELEGRAM_URL = f"https://api. telegram. org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
logging. basicConfig(level=logging. INFO, format='%(asctime)s - %(message)s')
def send_telegram(text):
try:
payload = {"chat_id": int(TELEGRAM_CHAT_ID), "text": text, "parse_mode": "HTML"}
resp = requests. post(TELEGRAM_URL, json=payload, timeout=10)
data = resp. json()
if resp. status_code == 200 and data. get("ok"):
return True
logging. error(f"Telegram: {data. get('description')}")
return False
except Exception as e:
logging. error(f"Telegram Error: {e}")
return False
def fetch_klines(symbol):
try:
resp = requests. get(BASE_URL, params={"symbol": symbol, "interval": TIMEFRAME, "limit": LIMIT}, timeout=10)
if resp. status_code == 429:
time. sleep(30)
return pd. DataFrame()
resp. raise_for_status()
df = pd. DataFrame(resp. json(), columns=["OpenTime", "Open", "High", "Low", "Close", "Volume", "CloseTime", "QuoteVol", "Trades", "TakerBuyBase", "TakerBuyQuote", "Ignore"])
for col in ["High", "Low", "Close"]:
df[col] = df[col]. astype(float)
return df[["High", "Low", "Close"]]
except Exception as e:
logging. error(f"Fetch {symbol}: {e}")
return pd. DataFrame()
def calculate_connors_rsi(close_series):
delta = close_series. diff()
gain = delta. where(delta > 0.0.0). ewm(com=CONNORS_RSI_PERIOD - 1, adjust=False). mean()
loss = (-delta. where(delta < 0.0.0)). ewm(com=CONNORS_RSI_PERIOD - 1, adjust=False). mean()
rs = gain / loss. replace(0, np. nan)
rsi_short = (100 - (100 / (1 + rs))). fillna(50.0)
streak = pd. Series(0.0, index=close_series. index)
for i in range(1, len(close_series)):
if close_series. iloc[i] > close_series. iloc[i-1]:
streak. iloc[i] = max(streak. iloc[i-1], 0) + 1
elif close_series. iloc[i] < close_series. iloc[i-1]:
streak. iloc[i] = min(streak. iloc[i-1], 0) - 1
streak_delta = streak. diff()
s_gain = streak_delta. where(streak_delta > 0.0.0). ewm(com=CONNORS_STREAK_PERIOD - 1, adjust=False). mean()
s_loss = (-streak_delta. where(streak_delta < 0.0.0)). ewm(com=CONNORS_STREAK_PERIOD - 1, adjust=False). mean()
s_rs = s_gain / s_loss. replace(0, np. nan)
streak_rsi = (100 - (100 / (1 + s_rs))). fillna(50.0)
pct_change = close_series. pct_change()
def p_rank(x):
clean = x. dropna()
if len(clean) < 10:
return 50.0
return (clean. iloc[-1] > clean). sum() / len(clean) * 100
pct_rank = pct_change. rolling(CONNORS_RANK_PERIOD). apply(p_rank, raw=False). fillna(50.0)
return ((rsi_short + streak_rsi + pct_rank) / 3.0). fillna(50.0)
def calculate_rsi(close_series, period):
delta = close_series. diff()
gain = delta. where(delta > 0.0.0). ewm(com=period - 1, adjust=False). mean()
loss = (-delta. where(delta < 0.0.0)). ewm(com=period - 1, adjust=False). mean()
rs = gain / loss. replace(0, np. nan)
rsi = 100 - (100 / (1 + rs))
return rsi. fillna(50.0)
def check_mean_reversion(df):
if df. empty or len(df) < 250:
return None
close = df["Close"]
ema_fast = close. ewm(span=EMA_FAST, adjust=False). mean(). iloc[-1]
ema_slow = close. ewm(span=EMA_SLOW, adjust=False). mean(). iloc[-1]
rsi = calculate_rsi(close, RSI_PERIOD). iloc[-1]
connors = calculate_connors_rsi(close). iloc[-1]
price = close. iloc[-1]
low_20 = df["Low"]. rolling(20). min(). iloc[-1]
high_20 = df["High"]. rolling(20). max(). iloc[-1]
is_buy = (ema_fast > ema_slow) and (rsi < RSI_BUY_MAX) and (CONNORS_BUY_MIN < connors < CONNORS_BUY_MAX)
is_sell = (ema_fast < ema_slow) and (rsi > RSI_SELL_MIN) and (CONNORS_SELL_MIN < connors < CONNORS_SELL_MAX)
if is_buy:
return {"signal": "BUY", "price": price, "rsi": rsi, "connors": connors, "ema_fast": ema_fast, "ema_slow": ema_slow, "low_20": low_20}
elif is_sell:
return {"signal": "SELL", "price": price, "rsi": rsi, "connors": connors, "ema_fast": ema_fast, "ema_slow": ema_slow, "high_20": high_20}
return None
def format_message(symbol, s):
color = " " if s["signal"] == "BUY" else " "
arrow = " " if s["signal"] == "BUY" else " "
if s["signal"] == "BUY":
sl = round(s["low_20"] * 0.995, 4)
risk = s["price"] - sl
tp1 = round(s["price"] + risk * 1.5, 4)
tp2 = round(s["price"] + risk * 2.5, 4)
tp3 = round(s["price"] + risk * 4.0, 4)
rsi_text = f"RSI(12): {s['rsi']:. 2f} (تشبع بيعي)"
connors_text = f"Connors: {s['connors']:. 2f} (بداية تعافي)"
else:
sl = round(s["high_20"] * 1.005, 4)
risk = sl - s["price"]
tp1 = round(s["price"] - risk * 1.5, 4)
tp2 = round(s["price"] - risk * 2.5, 4)
tp3 = round(s["price"] - risk * 4.0, 4)
rsi_text = f"RSI(12): {s['rsi']:. 2f} (تشبع شرائي)"
connors_text = f"Connors: {s['connors']:. 2f} (بداية هدوء)"
time_str = datetime. now(). strftime("%Y-%m-%d %H:%M:%S")
return (
f"{color} Mean Reversion Pullback - {s['signal']} {arrow}\n"
f" \n"
f" {symbol} | ⏱ 5m\n"
f" Entry: {s['price']:. 4f}\n"
f" \n"
f" المؤشرات:\n"
f" EMA(23): {s['ema_fast']:. 4f}\n"
f" EMA(200): {s['ema_slow']:. 4f}\n"
f" {rsi_text}\n"
f" {connors_text}\n"
f" \n"
f" إدارة المخاطر:\n"
f" SL: {sl:. 4f}\n"
f" TP1: {tp1:. 4f} (1:1.5)\n"
f" TP2: {tp2:. 4f} (1:2.5)\n"
f" TP3: {tp3:. 4f} (1:4)\n"
f" \n"
f" مراقبة فقط\n"
f" {time_str}"
)
def main():
last_signals = {s: None for s in SYMBOLS}
start_time = time. time()
last_status_time = time. time()
total_signals = 0
logging. info("بدء تشغيل Mean Reversion Pullback Bot. . . ")
if not send_telegram(" تشغيل Mean Reversion Pullback Bot\nالشروط:\n- شراء: RSI < 35 + Connors 30-50\n- بيع: RSI > 65 + Connors 50-70"):
logging. error("فشل الاتصال بتيليجرام")
return
logging. info("اتصال تيليجرام ناجح. بدء المراقبة. . . ")
time. sleep(3)
while True:
try:
checked = 0
cycle_signals = 0
for symbol in SYMBOLS:
df = fetch_klines(symbol)
if df. empty or len(df) < 250:
time. sleep(REQUEST_SLEEP)
continue
signal = check_mean_reversion(df)
checked += 1
if signal:
current = signal["signal"]
if current != last_signals[symbol]:
if send_telegram(format_message(symbol, signal)):
last_signals[symbol] = current
cycle_signals += 1
total_signals += 1
logging. info(f" {symbol} - {current} | RSI={signal['rsi']:. 2f} | Connors={signal['connors']:. 2f}")
else:
last_signals[symbol] = None
time. sleep(REQUEST_SLEEP)
if time. time() - last_status_time >= 900:
uptime_h = (time. time() - start_time) / 3600
status_msg = (
f" تقرير الحالة\n"
f"يعمل منذ: {uptime_h:. 2f} ساعة\n"
f"العملات المفحوصة: {checked}\n"
f"الإشارات: {total_signals}\n"
f" {datetime. now(). strftime('%Y-%m-%d %H:%M:%S')}"
)
send_telegram(status_msg)
last_status_time = time. time()
logging. info(f" فحص {checked} عملة، {cycle_signals} إشارة. انتظار {SCAN_SLEEP} ثانية. . . ")
time. sleep(SCAN_SLEEP)
except KeyboardInterrupt:
logging. info("إيقاف يدوي")
send_telegram("⏹ تم إيقاف البوت")
break
except Exception as e:
logging. error(f"خطأ: {e}")
time. sleep(60)
if __name__ == "__main__":
main()
معلومات عن العقار
- نوع العقارشقة
- نوع العرضللبيع
- الرقم المرجعيبيوت - CODE289MG
- حالة البناءجاهز
- التأثيثغير المفروشة
- نُشِر في7 سبتمبر 2026
- الملكية العقاريةاعادة البيع
المزايا والخدمات
خط أرضي
انترنت واسع النطاق
كابل قنوات تلفزيونية
اتصال داخلي
الاتجاهات والمؤشرات
رهن عقاري
قم بحساب قيمة القسط الشهري لهذا العقار
الموقع والأماكن القريبة
الموقع
المؤسسات التعليمية
المطاعم
المستشفيات
المتنزهات
يُنصح به
هذا العقار لم يعد متوفرا بعد الآن

Mohamed Ramadan
وكيل العقار:Emad



















