Exemple #1
0
 def get_data_from_tradingView(self):
     # dataframeSPY = pd.read_csv("data/SPY.csv")
     # dataframeSPY['time'] = pd.to_datetime(dataframeSPY['time'], unit='s')
     # print(dataframeSPY.tail())
     tesla = TA_Handler()
     tesla.set_symbol_as("TSLA")
     tesla.set_exchange_as_crypto_or_stock("NASDAQ")
     tesla.set_screener_as_stock("america")
     tesla.set_interval_as(Interval.INTERVAL_1_DAY)
     print(tesla.get_analysis().summary)
def get_stock_indicators_list(
    lista=list
):  #Get sell/buy indicators for multiple stocks from a list, and print the results
    handler = TA_Handler()
    for i in range(len(lista)):
        handler.set_symbol_as(lista[i][0])
        handler.set_exchange_as_crypto_or_stock("NASDAQ")
        handler.set_screener_as_stock("america")
        handler.set_interval_as(Interval.INTERVAL_1_HOUR)
        stock = handler.get_analysis().summary
        stock_table = []
        for b in stock.items():
            stock_table.append(b)
        stock_table.insert(0, ["Company: " + lista[i][0].upper(), "Result"])
        stock_table = AsciiTable(stock_table)
        print(stock_table.table)
Exemple #3
0
def root():
    if request.method == "GET":
        return render_template("index.html",
                               version=tradingview_ta.__version__,
                               captcha_sitekey=hcaptcha_sitekey)
    elif request.method == "POST":
        try:
            # hCaptcha
            hcaptcha_response = request.form["h-captcha-response"]
            captchaReq = requests.post("https://hcaptcha.com/siteverify",
                                       data={
                                           "secret": hcaptcha_secret,
                                           "response": hcaptcha_response
                                       })
            if captchaReq.json()["success"] == False:
                return render_template("error.html",
                                       version=tradingview_ta.__version__,
                                       error="Error: Invalid captcha",
                                       captcha_sitekey=hcaptcha_sitekey)

            # TradingView Technical Analysis
            handler = TA_Handler()
            handler.set_symbol_as(request.form["symbol"])
            handler.set_exchange_as_crypto_or_stock(request.form["exchange"])
            handler.set_screener_as_stock(request.form["screener"])
            handler.set_interval_as(request.form["interval"])
            analysis = handler.get_analysis()
            return render_template("success.html",
                                   version=tradingview_ta.__version__,
                                   symbol=analysis.symbol,
                                   exchange=analysis.exchange,
                                   screener=analysis.screener,
                                   interval=analysis.interval,
                                   time=analysis.time.astimezone(timezone.utc),
                                   summary=analysis.summary,
                                   oscillators=analysis.oscillators,
                                   moving_averages=analysis.moving_averages,
                                   indicators=analysis.indicators,
                                   captcha_sitekey=hcaptcha_sitekey)
        except Exception as e:
            return render_template("error.html",
                                   version=tradingview_ta.__version__,
                                   error=e,
                                   captcha_sitekey=hcaptcha_sitekey)
def get_stock_indicators_manual(
):  #Get sell/buy indicators from tradingview_ta for one stock, with user input and print the result
    handler = TA_Handler()
    symbol = loop_simples_de_coleta(configleng[4], configleng[0],
                                    configleng[2])
    handler.set_symbol_as(symbol)
    exchange = loop_simples_de_coleta(configleng[5], configleng[0],
                                      configleng[2])
    handler.set_exchange_as_crypto_or_stock(exchange)
    handler.set_screener_as_stock(
        loop_simples_de_coleta(configleng[8], configleng[0], configleng[2]))
    r = str(interval_options())
    handler.set_interval_as(r)
    stock = handler.get_analysis().summary
    stock_table = []
    for i in stock.items():
        stock_table.append(i)
    stock_table.insert(0, ["Company: " + symbol.upper(), "Result"])
    stock_table = AsciiTable(stock_table)
    print(stock_table.table)
def t_infos():

    symbol = input("entreprise symbole :\n> ")
    exchange = input("place bourisère :\n> ")
    country = input("pays: \n> ")

    print("Résultats analyses techniques", symbol, ":")

    try:
        _object = TA_Handler()
        _object.set_symbol_as(symbol)
        _object.set_exchange_as_crypto_or_stock(exchange)
        _object.set_screener_as_stock(country)
        _object.set_interval_as(Interval.INTERVAL_1_DAY)
        test = _object.get_analysis().summary

        print("1 jour >", test)

        _object.set_interval_as(Interval.INTERVAL_1_WEEK)
        test = _object.get_analysis().summary
        print("1 sem >", test)

        _object.set_interval_as(Interval.INTERVAL_1_MONTH)
        test = _object.get_analysis().summary
        print("1 mois >", test)
        print("-" * 100)
    except:
        print("ERREUR > une ou plusieures données sont érronées.")
def tech():
    id_focus = input("ID action > ")
    symbol = input("entreprise symbole > ")
    exchange = input("place bourisère > ")
    country = input("pays > ")

    print("Analyse technique :")

    try:
        _object = TA_Handler()
        _object.set_symbol_as(symbol)
        _object.set_exchange_as_crypto_or_stock(exchange)
        _object.set_screener_as_stock(country)
        _object.set_interval_as(Interval.INTERVAL_1_DAY)
        tradingview_result = _object.get_analysis().summary
        print("1 jour >", tradingview_result)

        _object.set_interval_as(Interval.INTERVAL_1_WEEK)
        tradingview_result = _object.get_analysis().summary
        print("1 sem >", tradingview_result)

        _object.set_interval_as(Interval.INTERVAL_1_MONTH)
        tradingview_result = _object.get_analysis().summary
        print("1 mois >", tradingview_result)

        print("Infos ajoutée en DB")
        with connexion:
            c.execute(
                f"UPDATE ACTIONS SET tec_exchange = '{exchange}', tec_country = '{country}' WHERE id = {id_focus};"
            )
    except:
        print("ERREUR > une ou plusieures données sont érronées.")
Exemple #7
0
def get_buy_or_sell(ticker_exchange, intervals, ratio):
    keys = ['BUY', 'SELL', 'NEUTRAL']
    handler = TA_Handler(symbol='VUG',
                         screener='america',
                         exchange='AMEX',
                         interval=intervals[0])
    print(bcolors.NEUTRAL, '  {:10s}  {:15s}  '.format('Ticker',
                                                       'Recommendation'),
          'Summary of Technical Analysis', bcolors.ENDC)
    print(
        '--------------------------------------------------------------------------'
    )
    tickers_to_buy = []
    tickers_to_sell = []
    for symbol, exchange in ticker_exchange.items():
        handler.set_symbol_as(symbol)
        handler.exchange = exchange
        summary = {'BUY': 0, 'SELL': 0, 'NEUTRAL': 0}
        for intervali in intervals:
            handler.set_interval_as(intervali)
            analysis = handler.get_analysis()
            #print('  ',analysis.interval,analysis.summary)
            #print(analysis.interval)
            #print(intervali,analysis.oscillators)
            #print(intervali,analysis.moving_averages)
            #keys = [key for key in analysis.indicators.keys() if 'Pivot' in key]
            #for key in analysis.indicators.keys():
            #if 'Pivot' in key:
            #print(intervali,key,analysis.indicators[key])
            #print('  ',summary+analysis.summary)
            for key, val in summary.items():
                summary[key] += analysis.summary[key]
            #print(analysis.time)
            #print(analysis.oscillators)
            #print(analysis.indicators)
        #print('  ',summary)
        num_tests = 0
        for summary_key, summary_val in summary.items():
            num_tests += summary_val
        shaun_recommendation = 'NEUTRAL'
        for summary_key, summary_val in summary.items():
            if summary_val > ratio * num_tests:
                shaun_recommendation = summary_key
        if shaun_recommendation == 'BUY':
            #print(bcolors.BUY+handler.symbol,shaun_recommendation,summary,bcolors.ENDC)
            print(
                bcolors.BUY,
                '  {:10s}  {:15s}  '.format(handler.symbol,
                                            shaun_recommendation), summary,
                bcolors.ENDC)
            tickers_to_buy.append(handler.symbol)
        elif shaun_recommendation == 'SELL':
            #print(bcolors.SELL,handler.symbol,shaun_recommendation,summary,bcolors.ENDC)
            print(
                bcolors.SELL,
                '  {:10s}  {:15s}  '.format(handler.symbol,
                                            shaun_recommendation), summary,
                bcolors.ENDC)
            tickers_to_sell.append(handler.symbol)
        elif shaun_recommendation == 'NEUTRAL':
            #print(bcolors.NEUTRAL,handler.symbol,shaun_recommendation,summary,bcolors.ENDC)
            print(
                bcolors.NEUTRAL,
                '  {:10s}  {:15s}  '.format(handler.symbol,
                                            shaun_recommendation), summary,
                bcolors.ENDC)
    #print(help(handler))
    #print(help(handler.get_analysis()))
    #print(handler.get_indicators())

    print(bcolors.BUY + 'recommended to buy ', tickers_to_buy, bcolors.ENDC)
    print(bcolors.SELL + 'recommended to sell ', tickers_to_sell, bcolors.ENDC)
    return tickers_to_buy, tickers_to_sell
def analyse_technique(id_infos):

    print("Analyse technique :")

    try:
        with connexion:
            c.execute(
                f"SELECT tec_symbol, tec_exchange, tec_country FROM actions where id = {id_infos};"
            )
            result = c.fetchone()
            tec_symbol = result[0]
            tec_exchange = result[1]
            tec_country = result[2]

            try:  #1- on tente avec ce qui est stocké en db
                _object = TA_Handler()
                _object.set_symbol_as(tec_symbol)
                _object.set_exchange_as_crypto_or_stock(tec_exchange)
                _object.set_screener_as_stock(tec_country)

                _object.set_interval_as(Interval.INTERVAL_1_DAY)
                tradingview_result = _object.get_analysis().summary

                _object.set_interval_as(Interval.INTERVAL_1_WEEK)
                tradingview_result2 = _object.get_analysis().summary

                _object.set_interval_as(Interval.INTERVAL_1_MONTH)
                tradingview_result3 = _object.get_analysis().summary

                c.execute(
                    f"UPDATE ACTIONS SET tec_exchange = '{tec_exchange}', tec_country = '{tec_country}' WHERE id = {id_infos};"
                )

                print("1 jour >", tradingview_result)
                print("1 sem >", tradingview_result2)
                print("1 mois >", tradingview_result3)
            except:
                tec_country = "AMERICA"
                tec_exchange = "NYSE"

                try:
                    _object = TA_Handler()
                    _object.set_symbol_as(tec_symbol)
                    _object.set_exchange_as_crypto_or_stock(tec_exchange)
                    _object.set_screener_as_stock(tec_country)

                    _object.set_interval_as(Interval.INTERVAL_1_DAY)
                    tradingview_result = _object.get_analysis().summary

                    _object.set_interval_as(Interval.INTERVAL_1_WEEK)
                    tradingview_result2 = _object.get_analysis().summary

                    _object.set_interval_as(Interval.INTERVAL_1_MONTH)
                    tradingview_result3 = _object.get_analysis().summary

                    c.execute(
                        f"UPDATE ACTIONS SET tec_exchange = '{tec_exchange}', tec_country = '{tec_country}' WHERE id = {id_infos};"
                    )

                    print("1 jour >", tradingview_result)
                    print("1 sem >", tradingview_result2)
                    print("1 mois >", tradingview_result3)

                except:
                    tec_country = "AMERICA"
                    tec_exchange = "NASDAQ"
                    try:
                        _object = TA_Handler()
                        _object.set_symbol_as(tec_symbol)
                        _object.set_exchange_as_crypto_or_stock(tec_exchange)
                        _object.set_screener_as_stock(tec_country)

                        _object.set_interval_as(Interval.INTERVAL_1_DAY)
                        tradingview_result = _object.get_analysis().summary

                        _object.set_interval_as(Interval.INTERVAL_1_WEEK)
                        tradingview_result2 = _object.get_analysis().summary

                        _object.set_interval_as(Interval.INTERVAL_1_MONTH)
                        tradingview_result3 = _object.get_analysis().summary

                        c.execute(
                            f"UPDATE ACTIONS SET tec_exchange = '{tec_exchange}', tec_country = '{tec_country}' WHERE id = {id_infos};"
                        )

                        print("1 jour >", tradingview_result)
                        print("1 sem >", tradingview_result2)
                        print("1 mois >", tradingview_result3)

                    except:
                        print(
                            "Aucune donnée d'analyse technique, utilisez .tech"
                        )

    except:
        print("ERROR 14")
from tradingview_ta import TA_Handler, Interval
symbol = 'BTCUSDT'

exchange = 'BINANCE'
pair = TA_Handler()
pair.set_symbol_as(symbol)
pair.set_exchange_as_crypto_or_stock(exchange)
pair.set_screener_as_crypto()
pair.set_interval_as(Interval.INTERVAL_1_DAY)
print(pair.get_analysis().summary)
# Example output: {"RECOMMENDATION": "BUY", "BUY": 8, "NEUTRAL": 6, "SELL": 3}
print(pair.get_analysis().oscillators)
print(pair.get_analysis().moving_averages)
print(pair.get_analysis().indicators)
Exemple #10
0
class Trader:
    def __init__(self, wallet: dict, min_price_change: float) -> None:

        # initialize wallet amounts
        self.tokens = list(wallet.keys())
        self.values = list(wallet.values())
        self.symbol = ''.join(self.tokens)
        self.price_change = min_price_change
        self.current_price = 0

        # initialize price api
        self.api = 'https://min-api.cryptocompare.com/data/pricemulti?fsyms={0}&tsyms={1}&api_key={2}'.format(
            self.tokens[0], self.tokens[1], cfg.CRYPTOCOMPARE_TOKEN)

        # initialize technical analysis api
        self.handler = TA_Handler()
        self.handler.set_symbol_as(self.symbol)
        self.handler.set_exchange_as_crypto_or_stock("BINANCE")
        self.handler.set_screener_as_crypto()
        self.handler.set_interval_as(Interval.INTERVAL_15_MINUTES)

    def check_recommendation(self) -> str:
        return self.handler.get_analysis().summary['RECOMMENDATION']

    def get_price(self) -> float:
        response = requests.request("GET", self.api)
        json_resp = json.loads(response.text)
        return json_resp[self.tokens[0]][self.tokens[1]]

    def buy(self, percent) -> float:
        quantity = self.values[1] * percent
        self.values[0] += quantity / self.current_price
        self.values[1] -= quantity

        return quantity / self.current_price

    def sell(self, percent) -> float:
        quantity = self.values[0] * percent
        self.values[1] += quantity * self.current_price
        self.values[0] -= quantity

        return quantity
        # return'SOLD '+str(quantity) +' '+self.trading_pair[0]+' for ' + str(price)

    def handle_status_change(self, curr) -> float:
        if curr == 'STRONG_BUY' and self.values[1] > 0:
            return (self.buy(1), 'BUY')
        elif curr == 'BUY' and self.values[1] > 0:
            return (self.buy(0.4), 'BUY')
        elif curr == 'SELL' and self.values[0] > 0:
            return (self.sell(0.4), 'SELL')
        elif curr == 'STRONG_SELL' and self.values[0] > 0:
            return (self.sell(1), 'SELL')
        else:
            return (0, None)

    def wallet_pretty(self) -> str:
        w = emoji.emojize(
            ':credit_card:\n{:.4f} {}\n{:.4f} {}\n\nTotal:\n{:.4f} {}'.format(
                self.values[0], self.tokens[0], self.values[1], self.tokens[1],
                self.values[1] + self.values[0] * self.current_price,
                self.tokens[1]))
        return w

    def trade_pretty(self, quantity, side) -> str:
        if side == 'SELL':
            return emoji.emojize(
                ':left_arrow: Sold {:.4f} {} for {:.4f}'.format(
                    quantity, self.tokens[0], self.current_price))
        else:
            return emoji.emojize(
                ':right_arrow: Bought {:.4f} {} for {:.4f}'.format(
                    quantity, self.tokens[0], self.current_price))

    def persist(self) -> None:
        with open('./saved.pickle', 'wb') as f:
            pickle.dump(self, f)

    def run(self) -> str:
        logging.info('Started trading ' + self.symbol)
        # prev_rec = 'NONE'
        prev_price = self.current_price

        while True:
            try:
                rec = self.check_recommendation()
                self.current_price = self.get_price()

                price_change = abs(1 - (prev_price / self.current_price))

                if price_change > self.price_change or 'STRONG' in rec:
                    traded = self.handle_status_change(rec)

                    self.persist()
                    if traded[0] <= 0:
                        continue

                    prev_price = self.current_price
                    # prev_rec = rec

                    tradedstr = self.trade_pretty(*traded)
                    walletstr = self.wallet_pretty()

                    yield tradedstr

                    logging.info(tradedstr)
                    logging.info(walletstr)

                    self.persist()
            except:
                logging.exception('Error occurred')
            finally:
                time.sleep(30)
Exemple #11
0
    '1h',  #Interval.INTERVAL_1_HOUR,
    '4h',  #Interval.INTERVAL_4_HOURS,
    '1d',  #Interval.INTERVAL_1_DAY,
    '1W',  #Interval.INTERVAL_1_WEEK,
    '1M'  #Interval.INTERVAL_1_MONTH,
]
summary = {'BUY': 0, 'SELL': 0, 'NEUTRAL': 0}
keys = ['BUY', 'SELL', 'NEUTRAL']
handler = TA_Handler(symbol='VUG',
                     screener='america',
                     exchange='AMEX',
                     interval=intervals[0])
#help(TA_Handler)
print(handler.symbol)
for intervali in intervals:
    handler.set_interval_as(intervali)
    analysis = handler.get_analysis()
    print('  ', analysis.interval, analysis.summary)
    #print(analysis.interval)
    #print(intervali,analysis.oscillators)
    #print(intervali,analysis.moving_averages)
    #keys = [key for key in analysis.indicators.keys() if 'Pivot' in key]
    #for key in analysis.indicators.keys():
    #if 'Pivot' in key:
    #print(intervali,key,analysis.indicators[key])
    #print('  ',summary+analysis.summary)
    for key, val in summary.items():
        summary[key] += analysis.summary[key]
    #print(analysis.time)
    #print(analysis.oscillators)
    #print(analysis.indicators)
Exemple #12
0
from django.contrib.auth.decorators import login_required
from django.db.models import F
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Shares
from .forms import SharesForm
from django.contrib import messages
from django.core.paginator import Paginator
from tradingview_ta import TA_Handler, Interval

tesla = TA_Handler()
tesla.set_symbol_as("TSLA")
tesla.set_exchange_as_crypto_or_stock("NASDAQ")
tesla.set_screener_as_stock("america")
tesla.set_interval_as(Interval.INTERVAL_1_DAY)
print(tesla.get_analysis().summary)
# Example output: {"RECOMMENDATION": "BUY", "BUY": 8, "NEUTRAL": 6, "SELL": 3}


@login_required
def index(request, message=messages):

    all_shares = Shares.objects.filter()
    paginator = Paginator(all_shares, 10)
    page = request.GET.get('pg')
    all_shares = paginator.get_page(page)
    return render(request, 'index.html', {'all_shares': all_shares})


@login_required
def add_shares(request):
from tqdm import trange
import time
import datetime as dt
#########
tickers = pd.read_csv('dataset/ind_nifty50list.csv')
tickers = pd.DataFrame(tickers.Symbol)
########
dictionary = {'-': '_', '&': '_'}
tickers.replace(dictionary, regex=True, inplace=True)
Stock = {}
handler = TA_Handler()
handler.set_exchange_as_crypto_or_stock("NSE")
handler.set_screener_as_stock("india")
tickers['Strength'] = 0
while True:
    handler.set_interval_as(Interval.INTERVAL_1_HOUR)
    # tickers.shape[0]
    for i in trange(tickers.shape[0]):
        try:
            handler.set_symbol_as(tickers.Symbol[i])
            Stock[tickers.Symbol[i]] = [
                handler.get_analysis().summary['RECOMMENDATION'],
                handler.get_analysis().indicators['close']
            ]
            #print([i],tickers[i],handler.get_analysis().summary['RECOMMENDATION'])

        except:
            print("An exception occurred", tickers[i])

    Stocks_df = pd.DataFrame.from_dict(Stock,
                                       orient='index',
Exemple #14
0
from binance.client import Client
from binance.enums import *

client = Client(config.API_KEY, config.API_SECRET, tld='com')

now = datetime.now()
fecha = now.strftime("%d-%m-%y %H:%M:%S")
lista = client.get_all_tickers()
strongBuy_list = []
strongSell_list = []
for i in lista:
    tesla = TA_Handler()
    tesla.set_symbol_as(i['symbol'])
    tesla.set_exchange_as_crypto_or_stock("BINANCE")
    tesla.set_screener_as_crypto()
    tesla.set_interval_as(Interval.INTERVAL_1_HOUR)
    print(i['symbol'])
    try:
        print(tesla.get_analysis().summary)
    except Exception as e:
        print("No Data")
        continue
    if ((tesla.get_analysis().summary)["RECOMMENDATION"]) == "STRONG_BUY":
        print(f" Compar más fuerte {i}", fecha)
        strongBuy_list.append(i['symbol'])
    elif ((tesla.get_analysis().summary)["RECOMMENDATION"]) == "STRONG_SELL":
        print(f" Compar más fuerte {i}", fecha)
        strongSell_list.append(i['symbol'])

print("*** STRONG BUY LIST ***")
Exemple #15
0
cls()

print("Bienvenue sur Tradyglo v.BETA")
while i == 0:
    symbol = input("entreprise symbole > ")
    exchange = input("place bourisère > ")
    country = input("pays > ")

    print("-" * 100)
    print("Résultats analyses techniques", symbol, ":")

    _object = TA_Handler()
    _object.set_symbol_as(symbol)
    _object.set_exchange_as_crypto_or_stock(exchange)
    _object.set_screener_as_stock(country)
    _object.set_interval_as(Interval.INTERVAL_1_DAY)
    test = _object.get_analysis().summary

    print("1 jour >", test)

    _object.set_interval_as(Interval.INTERVAL_1_WEEK)
    test = _object.get_analysis().summary
    print("1 sem >", test)

    _object.set_interval_as(Interval.INTERVAL_1_MONTH)
    test = _object.get_analysis().summary
    print("1 mois >", test)
    print("\n")

#cls()
Exemple #16
0
from tqdm import trange
import time
import datetime as dt
#########
tickers = pd.read_csv('dataset/ind_nifty50list.csv')
tickers = pd.DataFrame(tickers.Symbol)
########
dictionary = {'-': '_', '&': '_'}
tickers.replace(dictionary, regex=True, inplace=True)
Stock = {}
handler = TA_Handler()
handler.set_exchange_as_crypto_or_stock("NSE")
handler.set_screener_as_stock("india")
tickers['Strength'] = 0
while True:
    handler.set_interval_as(Interval.INTERVAL_1_DAY)
    # tickers.shape[0]
    for i in trange(tickers.shape[0]):
        try:
            handler.set_symbol_as(tickers.Symbol[i])
            Stock[tickers.Symbol[i]] = [
                handler.get_analysis().summary['RECOMMENDATION'],
                handler.get_analysis().indicators['close']
            ]
            #print([i],tickers[i],handler.get_analysis().summary['RECOMMENDATION'])

        except:
            print("An exception occurred", tickers[i])

    Stocks_df = pd.DataFrame.from_dict(Stock,
                                       orient='index',
Exemple #17
0
from tqdm import trange
import time
import datetime as dt
#########
tickers = pd.read_csv('dataset/ind_nifty50list.csv')
tickers = pd.DataFrame(tickers.Symbol)
########
dictionary = {'-': '_', '&': '_'}
tickers.replace(dictionary, regex=True, inplace=True)
Stock = {}
handler = TA_Handler()
handler.set_exchange_as_crypto_or_stock("NSE")
handler.set_screener_as_stock("india")
tickers['Strength'] = 0
while True:
    handler.set_interval_as(Interval.INTERVAL_15_MINUTES)
    # tickers.shape[0]
    for i in trange(tickers.shape[0]):
        try:
            handler.set_symbol_as(tickers.Symbol[i])
            Stock[tickers.Symbol[i]] = [
                handler.get_analysis().summary['RECOMMENDATION'],
                handler.get_analysis().indicators['close']
            ]
            #print([i],tickers[i],handler.get_analysis().summary['RECOMMENDATION'])

        except:
            print("An exception occurred", tickers[i])

    Stocks_df = pd.DataFrame.from_dict(Stock,
                                       orient='index',