• 14-06-2021, 13:06:00
    #1
    RSİ değeri saçma sapan değerler geliyor çözemedim tradiview deki değerlerden çok yukarı çok aşağıda oluyor. webcoket ile RSİ ve MACD değerleriyle al sat yapma niyetim fakat RSİ bile düzgün çalışmıyor. ((

    import numpy as np
    import websocket
    import json
    import pprint
    import talib
    import numpy
    from binance.client import Client
    from binance.enums import *
    import config

    SOCKET = "wss://stream.binance.com:9443/ws/bnbusdt@kline_30m"

    #RSI Setup
    RSI_PERIOD = 14
    RSI_OVERBOUGHT = 70
    RSI_OVERSOLD = 30
    TRADE_SYMBOL = "BNBUSDT"
    TRADE_QUANTITY = 0.05

    closes =[]
    in_position = False

    api_key = ''
    api_secret = ''


    client = Client(api_key, api_secret)

    def order(side, quantity, symbol, order_type=ORDER_TYPE_MARKET):
    try:
    print("sending order")
    order = client.create_order(symbol=symbol,
    side=side,
    type=order_type,
    quantity=quantity)
    #print(order)
    except Exception as e:
    return False

    return True
    def on_open(ws):
    print('open connection')

    def on_close(ws):
    print('close connection')

    def on_message(ws, message):
    global closes, in_position


    #print('received message')
    json_message = json.loads(message)
    pprint.pprint(json_message)

    candle = json_message['k']
    is_candle_closed = candle['x']
    close = candle['c']

    closes.append(float(close))
    np_closes = numpy.array(closes)

    rsi = talib.RSI(np_closes, 14)
    last_rsi = rsi[-1]
    print("RSİ değeri =",last_rsi)





    ws = websocket.WebSocketApp(SOCKET, on_open=on_open, on_close=on_close, on_message=on_message)
    ws.run_forever()
  • 14-06-2021, 13:23:03
    #2
    Aklıma gelen, çekmeye çalıştığınız zaman aralığının RSI ile çekmek istediğinizinkini kontrol edin, belki farklı zaman dilimlierinde çekmeye çalışıyorsunuzdur. Bu arada, bu alsat botu nasıl yapılır ile ilgili bir döküman, video eğitim var mı acaba nasıl nereden öğrenebilirim?
  • 14-06-2021, 13:37:28
    #3
    eooonz adlı üyeden alıntı: mesajı görüntüle
    Aklıma gelen, çekmeye çalıştığınız zaman aralığının RSI ile çekmek istediğinizinkini kontrol edin, belki farklı zaman dilimlierinde çekmeye çalışıyorsunuzdur. Bu arada, bu alsat botu nasıl yapılır ile ilgili bir döküman, video eğitim var mı acaba nasıl nereden öğrenebilirim?
    Binance Rest Api kullanıyorum fakat binance limiti var belli bir zaman sonra hataya düşüyor. websoket kullanımının daha verimli olduğu söyleniyor.
  • 16-06-2021, 01:51:31
    #4
    Ben client.get_kline ile çekip stockstats ile hesaplıyorum sorunsuz çalışıyor.
  • 19-06-2021, 13:41:44
    #5
    hdogrukan adlı üyeden alıntı: mesajı görüntüle
    Ben client.get_kline ile çekip stockstats ile hesaplıyorum sorunsuz çalışıyor.
    uygulamayı bizimle paylaşabilir misiniz ?
  • 19-06-2021, 14:48:43
    #6
    Benim binance al-sat botumdaki ilgili bölüm aşağıdadır.

    klines = client.get_klines(symbol=tradePair, interval='5m', limit='500') # Kriptoya ait veriler alınıyor

    times = [time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime(entry[0]/1000)) for entry in klines]
    volume = [float(entry[5]) for entry in klines]
    close = [float(entry[4]) for entry in klines]
    low = [float(entry[3]) for entry in klines]
    high = [float(entry[2]) for entry in klines]
    open = [float(entry[1]) for entry in klines]

    df = pd.DataFrame()
    df["Time"] = times
    df["Open"] = open
    df["Close"] = close
    df["High"] = high
    df["Low"] = low
    df["Volume"] = volume
    stocks = StockDataFrame.retype(df[["Time","Open", "Close", "High", "Low", "Volume"]]) # Artık istediğiniz indikatörü stocks dataframeden çekebilirsiniz .
    Detaylar için bu kodu inceleyin https://github.com/jealous/stockstat.../stockstats.py